compile_commands.jsonから必要な情報を読んで、さまざまな静的分析ツールを実行できるシンプルなフロントエンドツール。
他のツールへの統合の出力フォーマット、必要なときに並列化、コンパイラフラグをオーバーライド/再構成する能力などを提供します。
現在の開発は主にWindowsで行われますが、Python、独自のプロジェクト、およびアナライザーの開発環境を使用しているプラットフォームで動作するはずです。現在サポートされているもの:
プロジェクトは、Source DistributionとしてPYPIで利用できます。
pip install processcdb
ProcessCDBにはほとんど依存関係がインストールされないため、インストールにPIPXを使用することをお勧めします。
パッケージがインストールされたら。次のような構成ファイルを生成します
processcdb --dump-config
これにより、Barebones構成ファイルがデフォルトの場所に生成されます(-config引数で後で上書きすることができます)。このファイルを編集して、それらのアナライザーが実行可能ファイルを指すように「バイナリ」オプションをポイントします。 Windowsでは、ファイル拡張子を省略しないでください。
基本的なヘルプ:
processcdb --help
compile_commands.jsonを生成するプロセスの後、このような選択したツールでprocesscdbを実行できます。
processcdb --tool clang-tidy
これにより、現在のワーキングディレクトリからJSONファイルを見つけて、この場合はClang-Tidyを実行し、CONSCDB COMFIGファイルまたはツール独自の構成ファイルでブラックリストに登録されていないすべてのファイルに対してツールを実行し、標準出力に出力を生成します。現在の作業ディレクトリを変更するためにアクセスできないときにツールを実行する必要がある場合は、 --cdbとAbsolute Locationを渡すことができます。
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
ProcessCDBが通過せずに呼び出された場合、 --config引数は、デフォルトの構成ファイルが使用されます。場所はオペレーティングシステムによって異なります。異なる種類の設定で複数のプロジェクトを分析する必要がある場合、または特定のスキャナーの異なるバージョンで分析する場合は、複数の構成ファイルを使用します。
たとえば、Clang 11.0.0でスキャンするコードベースがある場合は、プロジェクトはMicrosoftのMSVCで実際にコンパイルされており、Clangでコンパイルされる別のプロジェクトがあります。
processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini
ProcessCDBが通過せずに呼び出された場合、 --config引数は、デフォルトの構成ファイルが使用されます。構成ファイルを生成するには、processcdbに--dump-configを渡します。デフォルトの構成ファイルをファイルに保存します。標準出力をキャプチャするか、 --configパラメーターを提供します。
各ツールには個別のセクションがあり、各セクションはツール固有のセクションまたはデフォルトで構成できます。最小限。単一のツールconfiguratioは次のようになります:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
ここには、Clang-Tidyツール用のセクションがあります。ここではc:llvm-11.0.0binclang-tidy.exeの値に変数binaryを設定しています。
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 :system includeに挿入されるのは、通常の-iを含む、通常から変換する必要があるファイル仕様のリストです。リストであり、複数の値を許可する各構成オプションは、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つの新しいarguments -Xclangと '-fcxx-exceptions'を追加し、arg_blackListは元の/EHscを削除します
CPPCheckツールには、必要に応じてcppchecks独自の抑制ファイルの絶対的な位置である必要があるオプションsupression_fileもあります。
Direct JenkinsサポートのためにLogFileをXMLに変換するClang-Tidy Toooolの能力は、CodeCheckerプロジェクトの一部であり、Apache 2.0でライセンスされています
ホーム:https://github.com/rasjani/processcdb問題:https://github.com/rasjani/processcdb/issues