簡單的前端工具,可以通過讀取Compile_commands.json的所需信息來運行各種靜態分析工具。
提供與其他工具集成的輸出格式,在需要時平線化,覆蓋/重新配置編譯器標誌的能力以及每個“工具”插件要求。
當前的開發主要是在Windows上完成的,但應在您擁有Python的任何平台上工作,為您自己的項目和分析儀的工作開發環境。目前支持的人:
PYPI的項目可作為源分佈提供:
pip install processcdb
由於ProcessCDB還將安裝很少的依賴項,因此請使用PIPX進行安裝。
安裝包裝後。與以下方式生成配置文件
processcdb --dump-config
這將生成默認位置的準則配置文件(以後可以用-config參數覆蓋)。編輯此文件以指向“二進制”選項,以指向其可執行文件。在Windows上,請勿省略文件擴展名。
基本幫助:
processcdb --help
在生成compile_commands.json的過程之後,您可以使用類似的工具運行ProcessCDB:
processcdb --tool clang-tidy
這將嘗試從當前工作目錄中找到JSON文件,並運行該工具,在這種情況下為Clang-Tidy,對所有被編譯而不是在ProcessCDB Comfig文件或工具中列入黑名單的文件,或在工具自己的配置文件中,並將輸出生成標準輸出。如果您需要在更改當前工作目錄的訪問時需要運行該工具,則可以通過--cdb和絕對位置:
processcdb --tool clang-tidy --cdb D:srcmyprojectbuildcompile_commands.json
一個人可以將輸出的工具引導到帶有--output參數的文件。值得注意的是,某些工具( -t )可以為後處理或工具特定目的提供進一步的參數:
processcdb --tool clang-tidy --cdb ~/src/myproject/build/compile_commands.json --output scan.log --xml
如果在沒有--config的情況下調用ProcessCDB,則使用默認配置文件。位置取決於操作系統。如果您需要分析具有不同類型的設置的多個項目,或者想使用特定掃描儀的不同版本進行分析,請使用多個配置文件。
例如,如果您有一個代碼庫,則希望使用Clang 11.0.0掃描,但是您的項目確實與Microsoft的MSVC一起編譯了,並且您有另一個與Clang一起編譯的項目:為MSVC和Clang和clang和Indoke ProcessCDB製作單獨的配置文件:
processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini
如果在沒有--config的情況下調用ProcessCDB,則使用默認配置文件。要生成配置文件,請將--dump-config傳遞到ProcessCDB。將默認配置文件保存到文件。捕獲標準輸出或提供--config參數。
每個工具都有一個單獨的部分,並且可以在工具特定部分或默認情況下配置每個部分。最小。單個工具configuratio看起來像這樣:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
在這裡,我們有針對Clang-Tidy工具的部分,其中我們將可變binary設置為c:llvm-11.0.0binclang-tidy.exe 。
Python configparser模塊用於加載/解析文件。
工具之間共享以下變量:
binary - 通往掃描儀的絕對路徑。file_blacklist應從掃描中省略的文件規格列表arg_blacklist傳遞給編譯器的命令行參數列表,不應將其傳遞給工具。arg_additions鍵/值對的列表。如果在JSON中找到鍵,則將一個值放入工具的參數中。jobs - 默認號碼流程ProcessCDB或該工具可以用於處理。 0用於自動檢測。default_includes應自動傳遞到工具的路徑列表,因為包括路徑,這些路徑可能未在compile_commands.json中指定。default_args應該傳遞給compile_commands.json未提供的工具的參數列表includes_as_system :應該從正常-I所包含到-ISYSTEM的文件規格列表。每個列表的配置選項並允許多個值,請使用semicolon作為項目分離器。
使用arg_blacklist ,可以剝離不必要的命令行參數,並且可以使用arg_addition來注入新參數。例如,如果正在啟用MSVC中的項目並啟用了異常,則以下配置將使Clang-Tidy工具仍然可以正常工作:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
arg_blacklist=EHsc
arg_additions=EHsc=-Xclang,-fcxx-exceptions
首先,processCDB會注意到compile_commands.json可能具有/EHsc參數,它將添加2個新參數-Xclang和'-fcxx-exceptions',然後arg_blacklist將刪除Original /EHsc
Cppcheck工具還具有選項supression_file ,如果需要,它應該是Cppchecks自己的抑製文件的絕對位置。
Clang-Tidy Toool將日誌文件轉換為XML以進行直接Jenkins支持的能力是CodeChecker Project及其在Apache 2.0下的許可
主頁:https://github.com/rasjani/processcdb問題:https://github.com/rasjani/processcdb/issues