feat(linter): implement Phase 1 linter automation and docs

- Add .clang-tidy (analyzer + selected bugprone) and .clang-format (LLVM, 4-space, 100 cols)
- Enhance scripts/run-linter.sh to use compile_commands.json when available
- Add scripts/setup-hooks.sh pre-commit (format enforcement; advisory tidy)
- Update azure-pipelines.yml to export compile_commands and run clang-tidy -p build
- Fill docs/linter-setup.md and docs/coding-standards.md for Phase 1
- Add minimal tests in tests/test_main.cpp to ensure CI executes
- Rewrite README with Phase 1 workflow
This commit is contained in:
2025-09-09 22:52:34 +08:00
parent d5350c35a8
commit f55d10ee07
9 changed files with 296 additions and 81 deletions

31
.clang-tidy Normal file
View File

@@ -0,0 +1,31 @@
Checks: >
-*,
clang-analyzer-*,
bugprone-argument-comment,
bugprone-assert-side-effect,
bugprone-bad-signal-to-kill-thread,
bugprone-branch-clone,
bugprone-copy-constructor-init,
bugprone-dangling-handle,
bugprone-exception-escape,
bugprone-integer-division,
bugprone-macro-parentheses,
bugprone-misplaced-operator-in-strlen-in-alloc,
bugprone-multiple-new-delete-leaks,
bugprone-sizeof-expression,
bugprone-suspicious-missing-comma,
bugprone-throw-keyword-missing,
bugprone-unhandled-self-assignment,
bugprone-unused-return-value,
clang-analyzer-security.*,
clang-analyzer-cplusplus.*,
clang-analyzer-core.*
HeaderFilterRegex: '(src|tests)/'
AnalyzeTemporaryDtors: false
FormatStyle: none
WarningsAsErrors: ''
# Phase 1: advisory only (warnings do not fail CI)
CheckOptions:
- key: bugprone-assert-side-effect.AssertMacros
value: 'assert'