跳转到主要内容

前端用于处理compile_commands.json文件,并针对它运行各种静态分析工具

项目描述

processcdb

一个简单的前端工具,可以通过从compile_commands.json读取所需信息来运行各种静态分析工具。

提供输出格式化以供其他工具集成,在需要时进行并行化,以及根据每个“工具”插件的要求覆盖/重新配置编译器标志等功能。

当前开发主要在Windows上进行,但应该在任何具有python、为您的项目和工作环境提供分析器的平台上工作。目前支持的有

  • clang-tidy
  • cppcheck
  • lizard

安装

项目作为源代码分布可在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配置文件或工具自身配置文件中的黑名单中的文件,并将输出生成到标准输出。如果您需要在无法更改当前工作目录时运行工具,可以传递--cdb和绝对位置

processcdb --tool clang-tidy --cdb D:\src\myproject\build\compile_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制作单独的配置文件,并调用processcdb

processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini

配置

如果没有传递--config参数调用processcdb,将使用默认配置文件。要生成配置文件,请将--dump-config传递给processcdb。要将默认配置文件保存到文件,可以捕获标准输出或提供--config参数。

配置文件

每个工具都有一个单独的部分,每个部分可以在工具特定部分或默认部分中进行配置。最小化、单个工具配置可能看起来像这样

[clang-tidy]
binary=C:\llvm-11.0.0\bin\clang-tidy.exe

在这里,我们有clang-tidy工具的部分,我们设置变量binaryc:\llvm-11.0.0\bin\clang-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包含的文件规范列表。

每个配置选项都是列表,并允许多个值,使用分号作为项目分隔符。

对于arg_blacklist,可以删除不必要的命令行参数,而arg_addition可以用于注入新参数。例如,如果在msvc中编译项目且启用了异常,以下配置将允许clang-tidy工具仍然正确运行

[clang-tidy]
binary=C:\llvm-11.0.0\bin\clang-tidy.exe
arg_blacklist=EHsc
arg_additions=EHsc=-Xclang,-fcxx-exceptions

首先,processcdb会注意到compile_commands.json可能有/EHsc参数,它会添加2个新参数-Xclang和'-fcxx-exceptions',然后arg_blacklist将删除原始的/EHsc

cppcheck工具也有supression_file选项,如果需要,应提供cppcheck自己的抑制文件的绝对位置。

鸣谢

clang-tidy工具将日志文件转换为xml以直接支持jenkins的功能是CodeChecker项目的一部分,并许可为Apache 2.0

链接

首页:https://github.com/rasjani/processcdb 问题:https://github.com/rasjani/processcdb/issues

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

processcdb-0.1.11.tar.gz (32.3 kB 查看哈希值)

上传时间

支持