logo Parasoft C/C++test 使用教程 我也要发布文档

用于C/C++静态分析的Visual Studio代码扩展入门


在此文章中,我将与您分享一些有关为Visual Studio Code编辑器配置和使用我们全新的C/C++test静态分析扩展的提示。

Visual Studio Code(VS Code)编辑器的普及正在迅速增长。在最新的Stack Overflow年度开发人员年度调查中,VS Code占据了开发环境和工具类别。

它快速、简单、可自定义、可扩展,并且可以在三个领先的开发平台上运行:Windows,Linux和Mac。它的受欢迎程度不仅限于使用JavaScript或TypeScript开发的团队。我们经常看到它被用于开发安全关键的C/C++软件。

VS Code得到了市场上广泛的扩展生态系统的支持。但是,C/C++静态分析的扩展数量有限。

4月2020.1版Parasoft C/C++test发布之前,没有什么可以帮助您遵守MISRA,CERT和AUTOSAR C++编码标准的,而无需离开编辑器检查结果。我的意思是,完整的标准支持Clang-Tidy很酷,但仅涵盖了这些标准的一小部分。


我们决定填补这一空白,并为这个出色的编辑器提供扩展,以帮助您根据自己喜欢的编码标准检查您刚刚编写的代码,查看结果并修复或隐藏它们——所有这些均在VS Code内部。

在本文中,我将重点介绍C/C++的静态分析,但我们还支持带有Parasoft dotTEST静态分析扩展功能的C#。


如何开始使用VS Code的C/C++test


使用Visual Studio Code编辑器的Parasoft静态分析扩展来启动和运行的最简单方法是通过Microsoft Marketplace。

启动VS Code,然后转到扩展程序(Ctrl + Shift + X)。在搜索字段中,键入“C++test”并安装扩展。

安装后,扩展程序将通过以下消息欢迎您:

该消息告知,为了运行带有VS Code扩展名的静态分析,您需要下载C/C++test Standard,这是C/C++test Visual Studio使用的命令行静态分析引擎。代码扩展。

下载C/C++test Standard发行版后,只需将其解压缩到您喜欢的任何目录中,然后安装试用(或完整)许可证。您的许可证需要包含命令行功能。您可以通过编辑分发主目录中的cpptestcli.properties文件来安装许可证,或将cpptestcli.properties文件放在您的主目录中,然后在其中放置许可信息。

对于此处的实验,我们使用C/C++test附带的Timer示例项目。在VS Code中,切换到Explorer,然后使用“将文件夹添加到工作区...”将/examples/Timer文件夹添加到您的工作区。

执行扩展的简单配置,请在状态栏中单击C/C++test快速入门:

您会看到以下配置选项:

设置如下:


  • 选择C/C++test安装:指向解压缩C/C++test Standard的位置。
  • 选择编译器配置:如果您使用的是GCC 9.2,则选择与您的项目所使用的最接近的编译器,例如“GNU GCC 9.x (x86_64)”。
  • 选择测试配置:定义将使用哪些静态分析检查器来扫描您的项目。让我们保持默认设置。


对于您的实际项目,您可能需要配置其他设置才能开始使用静态分析。我们稍后再讨论。现在,已经进行了这些设置,请在资源管理器中选择Timer文件夹

从上下文菜单中,选择“C/C++test:分析所选文件…”。OUTPUT面板将开始显示有关静态分析后续步骤的信息。

分析完成后,“PROBLEMS”问题面板将显示静态分析报告的所有结果。它应如下所示:

您可以通过单击“问题”面板中的行来分析发现。当您选择一个发现时,C/C++test扩展将带您到源代码,您可以在其中查看报告问题的原因。

如果原因尚不清楚,请“问题”面板中右键单击结果,然后选择“显示<静态分析规则>的文档”。它将向您显示详细说明。

如果您希望忽略发现,请右键单击并选择“禁止违反。此操作将在源文件中添加特殊注释,这将阻止分析器将来报告此发现。

或者,您可以从视图中删除违反的内容”,而不必在此运行中打扰它。这些菜单选项如上图所示。


设置用于静态分析的编译命令行


我提到过,对于您的实际项目,您可能需要再配置一个选项才能开始使用静态分析。这与构建信息有关,更具体地说,与编译命令行有关。

静态分析引擎需要知道要分析的每个文件的编译命令行。根据项目的构建方式,可以应用不同的策略来提供此信息。

让我们来看看我们的Timer示例如何发生。

切换到“输出”面板,该面板仍应包含我们分析运行的输出。

一直向上滚动。在输出的第二行中,您应该看到扩展执行的C/C++test Standard命令行。它将从“cpptestcli”开始。有趣的部分在此命令行的末尾。

在这种情况下,C/C++test静态分析引擎被告知“跟踪”构建以获取所需的编译命令行信息。您也可以将此策略应用于其他构建系统。效果很好:

Cpptestcli执行在-trace选项之后指定的build命令。将自动扫描构建信息并将其保存到cpptest.bdf文件中,该文件现在在“Timer”文件夹中可见,并用作静态分析的输入。

一切都很好,但是如果我想重新运行静态分析会怎样?好吧,使用默认设置,C/C++test将重新运行您的构建。对于实际项目来说不是一个好的选择。

更改方法如下:


  • 打开扩展名设置。
  • 点击Ctr+Shift+P。
  • 键入“C/C++test: Quick Start”,然后选择“打开设置...”。(或使用状态栏中的C/C++test快速入门。)


您将看到如下所示的扩展程序设置:

:

构建信息配置是“命令行模式”设置的一部分。在设置面板中,选择“计时器”(在“用户和工作区”旁边)以仅修改“计时器”文件夹的设置

转到命令行模式,移至末尾,然后自定义模式,将“-trace make clean all”替换为“-input ${workspaceFolder}/cpptest.bdf”,如下所示:

使用此设置,无论何时运行静态分析,C/C++test都不会重新执行构建过程,而只是加载在第一次构建过程中生成的cpptest.bdf的内容,并且可以更快地执行分析。您可以在此处了解有关构建数据文件的更多信息。


设置CMake


对于那些使用CMake进行项目的人来说,还有一个选项可以简化设置过程。C/C++test可以将可由CMake自动生成的compile_commands.json文件作为分析的输入。

在本文中为我们的Timer示例配置compile_commands.json文件生成。

完成后,再访问设置面板一次Ctr+Shift+P,键入“C/C++test: Quick Start”,然后选择“打开设置...”或使用“C/C++test”在状态栏中的快速入门)。

转到命令行模式字段,然后如下所示进行修改:

于是,您可以使用CMake构建自动生成的文件,并简化设置。

扩展中还有一些其他有趣的选项和命令,我邀请您进行探索。例如,您可以从CI/CD管道中生成的文件中导入静态分析结果,并在本地进行查看。

希望本文对Visual Studio Code编辑器的C/C++test扩展有所帮助。