在Linux下进行C ++开发的PVS-Studio静态分析器入门

PVS-Studio支持分析以C,C ++,C#和Java开发的项目。 您可以在Windows,Linux和macOS下使用分析仪。 这篇小文章将告诉您在Linux环境中分析C和C ++代码的基础知识。

安装方式


在Linux下安装PVS-Studio的方式不同,具体取决于发行版类型。 最方便,首选的方法是使用存储库,因为它允许在发布新版本时自动更新分析器。 另一种选择是使用安装软件包,您可以在此处获得。

安装命令因所使用的Linux发行版而异。 例如,这是在基于Debian的系统下从存储库进行安装的样子:

wget -q -O - https://files.viva64.com/etc/pubkey.txt | sudo apt-key add - sudo wget -O /etc/apt/sources.list.d/viva64.list \ https://files.viva64.com/etc/viva64.list sudo apt update sudo apt install pvs-studio 

要从可下载的软件包中安装PVS-Studio,可以使用gdebi实用程序:

 sudo gdebi pvs-studio-VERSION.deb 

在“ 在Linux上安装和更新PVS-Studio ”文档部分中,将详细介绍安装过程。 您还可以在那里找到有关非Debian系统的信息。

安装PVS-Studio后,您需要输入许可证数据。 这是该命令:

 pvs-studio-analyzer credentials NAME KEY [-o LIC-FILE] 

NAMEKEY分别是注册用户名和许可证密钥。 可选参数–o允许您指定生成许可证文件的位置。 默认情况下,它将存储在〜/ .config / PVS-Studio /目录中。

如果需要试用版密钥,可以在“ 下载并评估PVS-Studio ”页面上获得。

检查项目


一旦安装了分析仪,就可以开始检查项目。 有两种主要方法可以做到这一点:

  1. 编译监视。
  2. 直接从构建系统运行。

让我们谈谈第一种方法。 要在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参数。 它允许您指定哪些警告应出现在结果报告中。 如果您需要对分析仪的输出进行滤波,将非常方便。 上面的命令将创建一个报告,该报告将仅包含第一和第二确定性级别( )的常规分析消息。

报告示例:

图片9


通过单击消息的“ 位置”单元格,可以跳至相应的代码行:

图片8


通过单击“代码列中的诊断代码,可以打开有关此诊断的文档。

禁止分析仪警告


使用任何静态分析器检查源代码时,您可能会得到误报,或者仅仅是不受欢迎的噪声警告。 PVS-Studio具有抑制此类消息的方法。 要针对单个警告,可以使用“ 抑制错误警报 ”文档中介绍的方法之一。

另外,在检查旧代码时,您可能希望禁止显示所有警告。 通常,如果只想检查添加到现有代码库中的新代码,则可能需要这样做。 为此,请使用pvs-studio-analyzer实用程序的抑制参数。

您可以使用以下命令在报告中批量禁止显示警告:

 pvs-studio-analyzer suppress /path/to/report.log 

有关禁止显示的警告的信息存储在项目旁边的名为prevent_base.json的文件中。 此类消息将从后续检查的报告中排除。

在此详细描述此机制。

结论


这是在Linux下使用PVS-Studio的简要介绍。 我希望它是有用的,并且能够回答最常见的问题。 如果您需要有关本文主题的更多信息,请参考此处的文档。

Source: https://habr.com/ru/post/zh-CN462659/


All Articles