
PVS-Studio支持分析以C,C ++,C#和Java开发的项目。 您可以在Windows,Linux和macOS下使用分析仪。 这篇小文章将告诉您在Linux环境中分析C和C ++代码的基础知识。
安装方式
在Linux下安装PVS-Studio的方式不同,具体取决于发行版类型。 最方便,首选的方法是使用存储库,因为它允许在发布新版本时自动更新分析器。 另一种选择是使用安装软件包,您可以在
此处获得。
安装命令因所使用的Linux发行版而异。 例如,这是在基于Debian的系统下从存储库进行安装的样子:
wget -q -O - https:
要从可下载的软件包中安装PVS-Studio,可以使用
gdebi实用程序:
sudo gdebi pvs-studio-VERSION.deb
在“
在Linux上安装和更新PVS-Studio ”文档部分中,将详细介绍安装过程。 您还可以在那里找到有关非Debian系统的信息。
安装PVS-Studio后,您需要输入许可证数据。 这是该命令:
pvs-studio-analyzer credentials NAME KEY [-o LIC-FILE]
NAME和
KEY分别是注册用户名和许可证密钥。 可选参数
–o允许您指定生成许可证文件的位置。 默认情况下,它将存储在
〜/ .config / PVS-Studio /目录中。
如果需要试用版密钥,可以在“
下载并评估PVS-Studio ”页面上获得。
检查项目
一旦安装了分析仪,就可以开始检查项目。 有两种主要方法可以做到这一点:
- 编译监视。
- 直接从构建系统运行。
让我们谈谈第一种方法。 要在Linux下启动监视,您需要
strace实用程序。 PVS-Studio使用它来收集在构建过程中启动的过程的列表和参数。
使用以下命令启动构建:
pvs-studio-analyzer trace -- make
在这里,使用了
make ,但是正在运行的用于构建项目的任何其他命令都可以代替。 如果需要,您可以按常规方式将命令行参数传递给它。
构建完成后,
strace将创建一个文件,分析器随后将使用该文件检查源代码。 要开始分析,请使用以下命令。
pvs-studio-analyzer analyze -o /path/to/project.log
结果,将生成一个编码日志文件,您可以将其转换为支持的格式之一。 稍后我们将讨论处理报告。
除了
strace之外,您还可以基于
compile_commands.json (JSON编译数据库)文件进行分析。 许多构建系统具有导出编译命令的内置方法,或者您可以使用
BEAR实用程序来执行此操作。 在这种情况下,以下是启动分析的命令:
pvs-studio-analyzer analyze –f /path/to/compile_commands.json
请注意,分析器会通过可执行文件名来识别在构建过程中使用的编译器。 如果在尝试分析项目时收到“找不到编译单元”错误,请尝试通过
–compiler或
–c命令行键明确指定编译器的名称:
pvs-studio-analyzer analyze -c MyCompiler
如果您使用交叉编译,或者您的编译器具有非标准的可执行文件名称,则可能需要此功能。
除了监视模式之外,您还可以将分析器直接集成到构建系统或IDE中。 我们的官方
GitHub存储库提供了示例项目,其中已经配置了集成:
要了解有关在Linux下运行分析仪的更多信息,请参阅
文档 。
处理报告
检查项目后,分析器将创建一个编码报告。 要将其转换为受支持的格式之一,您需要使用PVS-Studio安装随附的
plog-converter实用程序。
以下是受支持格式的列表:
- xml-一种方便的格式,用于进一步处理分析结果, SonarQube插件支持该格式 ;
- csv-文件以纯文本格式存储表格数据(数字和文本);
- errorfile是gcc和clang的输出格式;
- 任务列表-可以在QtCreator中打开的错误格式;
- html-带有分析结果简短描述的html报告;
- fullhtml-报告根据不同的参数对分析结果进行排序,并沿源代码进行导航。
fullhtml格式是查看报告最方便的一种格式,因为它允许跳转到与您感兴趣的警告相对应的代码行。 以下命令允许您将报告转换为这种格式:
plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir
启动它时,名为
/ path / report_dir的新创建目录将包含所有报告文件。
注意
-a参数。 它允许您指定哪些警告应出现在结果报告中。 如果您需要对分析仪的输出进行滤波,将非常方便。 上面的命令将创建一个报告,该报告将仅包含第一和第二确定性级别(
高和
中 )的常规分析消息。
报告示例:
通过单击消息的“
位置”单元格,可以跳至相应的代码行:
通过单击“代码
”列中的诊断代码,可以打开有关此诊断的文档。
禁止分析仪警告
使用任何静态分析器检查源代码时,您可能会得到误报,或者仅仅是不受欢迎的噪声警告。 PVS-Studio具有抑制此类消息的方法。 要针对单个警告,可以使用“
抑制错误警报 ”文档中介绍的方法之一。
另外,在检查旧代码时,您可能希望禁止显示所有警告。 通常,如果只想检查添加到现有代码库中的新代码,则可能需要这样做。 为此,请使用
pvs-studio-analyzer实用程序的
抑制参数。
您可以使用以下命令在报告中批量禁止显示警告:
pvs-studio-analyzer suppress /path/to/report.log
有关禁止显示的警告的信息存储在项目旁边的名为
prevent_base.json的文件中。 此类消息将从后续检查的报告中排除。
在此详细描述此机制。
结论
这是在Linux下使用PVS-Studio的简要介绍。 我希望它是有用的,并且能够回答最常见的问题。 如果您需要有关本文主题的更多信息,请参考
此处的文档。