
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-analyzer credentials NAME KEY [-o LIC-FILE]
其中
NAME和
KEY是注册许可证的名称和许可证密钥。 可选的
–o参数允许您指定生成许可证文件的路径。 默认情况下,它存储在
〜/ .config / PVS-Studio /目录中。
您可以在“
下载并尝试PVS-Studio ”页面上获得试用密钥。
项目验证
安装分析仪后,您可以开始检查项目。 有两种主要方法可以做到这一点:
- 编译监控;
- 在组装过程中直接从组装系统开始。
让我们首先考虑第一种方法。 要在Linux下开始监视,您将需要
strace实用程序。 分析器使用它来收集有关在项目组装过程中启动了哪些过程的信息。
通过以下命令执行启动:
pvs-studio-analyzer trace -- make
本示例使用带有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中。 您可以在PVS_Studio存储库中的
GitHub上
找到已配置集成的项目示例:
有关在Linux下运行分析的更多详细说明,请参阅
文档 。
处理报告
检查项目后,分析器将创建一个编码报告。 为了将其转换为支持的格式之一,请使用与PVS-Studio一起安装的
plog-converter实用程序。
该实用程序支持以下格式:
- xml-SonarQube插件支持的一种方便格式,用于进一步处理分析结果;
- csv是用于显示表格数据的文本格式;
- errorfile-gcc和clang的输出格式;
- 任务列表-可以在QtCreator中打开的错误格式;
- html-带有分析结果简要说明的html报告;
- fullhtml-html报告,其中按各种参数对分析结果进行排序,并在源代码中导航。
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分析仪的简要介绍。 我希望它有用并回答了最常见的问题。 您可以在
此处的文档中阅读有关本文主题的更多信息。

如果您想与讲英语的读者分享这篇文章,请使用翻译链接:Yuri Minaev。
Linux下用于C ++开发的PVS-Studio静态分析器入门 。