跳至主要內容

在 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 在檢查期間也會使用大量記憶體,因此很容易發生記憶體不足的錯誤。因此,預設的作業數為 1。