Fix clang-tidy and sanitizer CI config blocking score/time_daemon checks - #216
MaciejSalwa543 wants to merge 9 commits into
Conversation
License Check Results🚀 The license check job ran with the Bazel command: bazel run //:license-checkStatus: Click to expand output |
|
Ran TSan+UBSan manually against
Looks like something I want to fix and add TSan to CI, would you agree? |
|
Closed due to missing clang-tidy config file |
172e39e to
8926082
Compare
pawelrutkaq
left a comment
There was a problem hiding this comment.
We need to tue this return type as auto or at least confirm it
Signed-off-by: Maciej Salwa <maciej.salwa.ext@qorix.ai>
Signed-off-by: Maciej Salwa <maciej.salwa.ext@qorix.ai>
Signed-off-by: Maciej Salwa <maciej.salwa.ext@qorix.ai>
873aa0b to
96907e6
Compare
pawelrutkaq
left a comment
There was a problem hiding this comment.
beside two small thing, now looks good to me
Description
Starting on #77, found that
QA / Clang-TidyandQA / Sanitizersshow green but aren'tactually checking anything.
Clang-Tidy: under
--config=clang-tidy, most targets fail to build before the aspectruns (
clang: error: argument unused during compilation: '-stdlib=libc++' [-Werror,-Wunused-command-line-argument]).MODULE.bazeldefines two LLVM toolchains; theone used here never sets
stdlib, unlike the newerllvm_toolchain_coverageone. Fix:mirror
stdlib = {"": "stdc++"}onto it.Sanitizers: under
--config=asan_ubsan_lsan, every test is silently skipped(
Executed 0 out of 22 tests: 22 were skipped)..bazelrcset--@score_cpp_policies//sanitizers/flags:sanitizer=asan_ubsan_lsan, a flag removed in thescore_cpp_policiescommit this repo pins — real API is three bool flags (:asan,:ubsan,:lsan). Since none were set, the sanitizerrun_underwrapper is incompatible and everytest gets skipped. Fix: set the three bool flags.
Both look like they've been broken since #102 (2026-07-03), not a recent regression —
continue-on-error: trueon both jobs hid it.Turns out that wasn't the whole story. Once the build actually worked, digging further
showed clang-tidy was still only running its own narrow built-in default (
clang-diagnostic-*,clang-analyzer-*) instead of the S-CORE baseline — the baseline lives inscore_cpp_policies, butexternal/is a sibling ofscore/, not an ancestor, so clang-tidy'sown directory-walk config discovery could never reach it. Mirrored the baseline into
//:.clang-tidyand wired it vialocal_configs. That surfaced 552 real findings inscore/time_daemon/that had never actually been checked — fixed what's genuinely fixable(missing includes, redundant/missing default member inits, magic numbers, pass-by-value+move,
const-correctness, trailing return types, a duplicated global turned into a member) and added
specific justification comments for the suppressions that are the right call.
Results
bazel test --config=clang-tidy //score/time_daemon/...→ 22/22 pass, 0 clang-tidy findings(full S-CORE baseline, not just the built-in default).
bazel test --config=asan_ubsan_lsan --config=x86_64-linux //score/time_daemon/...→22/22 pass, zero skipped, zero sanitizer failures.
bazel test //:format.check→ 5/5 pass.No open findings, no unjustified suppressions — #77's acceptance criteria are met.
Scope note
These two potential bugs are repo-wide (
MODULE.bazel/.bazelrc), nottime_daemon-specific —also unblocks #76/#78/#79 and is a prerequisite for #111/#112. Open to splitting into its own
issue/PR if preferred.
Related ticket
closes #77