我們使用 clang-tidy 來檢查 C++ 程式碼,並致力確保存放區的警告無害。
Linter 是在根層級 .clang-tidy 檔案中設定。開發人員
且不應在較低層級建立額外的設定檔,
這會導致樹狀圖中的結果不一致。
如何檢查程式碼
fx lint 是 Fuchsia 指令碼,可將特定語言專屬的 Linter 所組成
指令列介面根據您使用的選項,
會透過比對 Linter 來指定、分隔,並執行每個必要的 Linter。
clang-tidy 適用於 C 和 C++ 檔案。
未使用任何其他引數時,fx lint 會將檔案檢查
最新的 Git 修訂版本,並透過 Linter 傳遞:
fx lint
如要將程式碼檢查限制為 C++,請新增雙破折號 (--),並在後面加上 要比對的檔案模式,例如:
fx lint -- '*.cc' '*.cpp'
如要透過 Linter 執行特定 GN 目標,請使用:
fx lint --target=<target>
如要檢查目前工作目錄下的所有檔案,請新增 --all。
從頂層 fuchsia 目錄執行 fx lint --all 通常不會
可能需要數小時才能完成確定自己
將 cd 至最佳頂層目錄,以滿足您的分析需求。例如:
(cd <your/subdir>; fx lint --all -- '*.cc')
您也可以新增 --fix,讓系統自動為部分應用程式產生修正項目 (但
而非全部)。
工具本身中會記錄其他選項和範例。最充飽
此為 fx lint 至今的說明文件 (包括範例),請執行:
fx lint --help
隱藏警告
如要隱藏任何警告,請新增 // NOLINT(<check_name>) 或
// NOLINTNEXTLINE(<check_name>) 註解傳送至違規行。這個
您可以編輯存放區中的
根層級 .clang-tidy 檔案。
支票
有許多檢查類別已啟用,且會在當中進行具體檢查 已停用,原因如下。已啟用的檢查類別清單 如下:
- bugprone-*
- clang-diagnostic-*
- google-*
- misc-*
- modernize-
- performance-*
- readability-*
以下列出我們在特定的檢查中停用的原因:
- clang-diagnostic-unused-command-line-argument- Ninja 產生的編譯作業 資料庫內含連接器引數,這些引數最終表示未使用和觸發 每個檔案都顯示這則警告
- misc-noexcept*- Fuchsia 不會使用 C++ 例外狀況
- misc-non-private-member-variables-in-classes- 不允許使用類別/結構 混合使用私人與公開的會員,但所有公開成員都沒有問題。
- modernize-deprecated-headers- Fuchsia 使用舊式 C 標頭
- modernize-use-nodiscard- 通常用於 Fuchsia 程式碼集
- modernize-raw-string-literal- 這項檢查建議轉換- \xFF我們想要保留在逸出形式中的常值。
- modernize-return-braced-init-list- 傳回資料的可讀性相關問題 做為建構函式引數的混和初始化清單,最好使用 建構函式建立而成
- modernize-use-emplace- 啟用 IgnoreImplicit 建構函式選項 務必遵守第 112 週的腹部提示。
- modernize-use-equals-delete- 標記所有 Gtest TEST_F
- modernize-use-trailing-return-type- Fuchsia C++ 程式碼通常會使用 定義函式的- int foo()樣式,而非- auto foo() -> int使用符合這項檢查建議的樣式
- readability-implicit-bool-conversion- Fuchsia C++ 程式碼經常使用隱含 指標和數字的布林值流值
- readability-isolate-declaration- Zircon 程式碼通常會使用配對宣告。
- readability-uppercase-literal-suffix- Fuchsia C++ 程式碼選擇不強制規定 會比較不同的樣式
靜態分析
嚴格來說,這並不是程式碼檢查,但 Clang 靜態分析工具可以 即可找出錯誤詳情請參閱「靜態分析」一文。