Files
cpp-linter-template/docs/linter-setup.md
MH Hung f55d10ee07 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
2025-09-09 22:52:34 +08:00

40 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Linter Setup (Phase 1)
本文件說明如何在本地與 CI 環境執行 Phase 1 的 linter 自動化。
## 需求
- clang-tidy, clang-format
- CMake 3.10+
## 本地流程
1) 安裝工具
- Ubuntu/Debian: `sudo apt install clang-tidy clang-format cmake`
- macOS: `brew install llvm cmake`
2) 產出 compile_commands.json建議提高 tidy 準確度)
- `mkdir -p build && cd build`
- `cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON`
- `cd -`
3) 執行 linter
- `./scripts/run-linter.sh`
- 若偵測到 `build/compile_commands.json`,腳本會自動以 `-p build` 方式執行 clang-tidy。
4) 安裝 Git hooks建議
- `./scripts/setup-hooks.sh`
- pre-commit 會:
- 對 staged C/C++ 檔執行 clang-format 並重新加入索引;若有改動會中止一次提交,請重新檢視並再次提交。
- 以建議模式執行 clang-tidy不阻擋提交
## CI 流程Azure Pipelines
- 安裝工具 → `clang-format --dry-run --Werror` → CMake 匯出 `compile_commands.json` → 以 `-p build` 跑 clang-tidy建議模式→ Build → Run tests。
- Pull Request Job 只分析變更檔案,並以建議模式跑 clang-tidy。
## Phase 1 政策
- 格式:必須符合 `.clang-format`,否則 CI 失敗、pre-commit 會自動修正。
- Tidy使用 `.clang-tidy` 的安全規則集合,僅回報警告,不使 CI 失敗。
## 後續升級(概述)
- Phase 2對關鍵規則記憶體/資源/未定義行為)提升為失敗門檻。
- Phase 3擴大規則readability/modernize對 PR 變更檔強制。