跳到主要內容

在 C++ 程式碼上使用 clang-tidy

clang-tidy 是一個自動檢查 C/C++/Objective-C 程式碼中風格違規、程式錯誤和最佳實務的工具。

Electron 的 clang-tidy 整合是以 linter 腳本的形式提供,可以使用 npm run lint:clang-tidy 執行。雖然 clang-tidy 會檢查您磁碟上的檔案,但您需要先建置 Electron,以便它知道使用了哪些編譯器標誌。腳本有一個必要的選項 --output-dir,它告訴腳本要從哪個建置目錄提取編譯資訊。典型的用法是:npm run lint:clang-tidy --out-dir ../out/Testing

如果沒有提供檔案名稱,將會檢查所有 C/C++/Objective-C 檔案。您可以透過在選項後傳遞檔案名稱來提供要檢查的檔案清單:npm run lint:clang-tidy --out-dir ../out/Testing shell/browser/api/electron_api_app.cc

雖然 clang-tidy 有一個 長長的清單 列出可能的檢查項目,但在 Electron 中,預設只啟用少數幾個。目前 Electron 沒有 .clang-tidy 設定檔,因此 clang-tidy 將會找到 Chromium 在 src/.clang-tidy 中的設定檔,並使用 Chromium 已啟用的檢查項目。您可以使用 --checks= 選項來變更要執行的檢查項目。這會直接傳遞給 clang-tidy,因此請參閱其文件以了解完整詳細資訊。可以使用萬用字元,並且可以透過在前面加上 - 來停用檢查項目。預設情況下,任何列出的檢查項目都會新增到 .clang-tidy 中的項目,因此如果您想要將檢查項目限制為特定的項目,您應該先排除所有檢查項目,然後再加回您想要的項目,例如 --checks=-*,performance*

執行 clang-tidy 相當慢 - 在內部,它會編譯每個檔案,然後執行檢查,因此它總是會比編譯慢一些倍數。雖然您可以使用平行執行來使用 --jobs|-j 選項加速它,但 clang-tidy 在其檢查期間也會使用大量記憶體,因此很容易遇到記憶體不足錯誤。因此,預設的工作數量為一個。