简单的前端工具,可以通过读取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