Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
在此文章中,我将与您分享一些有关为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#。
使用Visual Studio Code编辑器的Parasoft静态分析扩展来启动和运行的最简单方法是通过Microsoft Marketplace。
启动VS Code,然后转到扩展程序(Ctrl + Shift + X)。在搜索字段中,键入“C++test”并安装扩展。
安装后,扩展程序将通过以下消息欢迎您:
Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
该消息告知,为了运行带有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,然后使用“将文件夹添加到工作区...”将<C/C++test install dir>/examples/Timer文件夹添加到您的工作区。
要执行扩展的简单配置,请在状态栏中单击C/C++test快速入门:
Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
您会看到以下配置选项:
Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
设置如下:
对于您的实际项目,您可能需要配置其他设置才能开始使用静态分析。我们稍后再讨论。现在,已经进行了这些设置,请在资源管理器中选择Timer文件夹。
从上下文菜单中,选择“C/C++test:分析所选文件…”。OUTPUT面板将开始显示有关静态分析后续步骤的信息。
分析完成后,“PROBLEMS”问题面板将显示静态分析报告的所有结果。它应如下所示:
Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
您可以通过单击“问题”面板中的行来分析发现。当您选择一个发现时,C/C++test扩展将带您到源代码,您可以在其中查看报告问题的原因。
如果原因尚不清楚,请在“问题”面板中右键单击结果,然后选择“显示<静态分析规则>的文档”。它将向您显示详细说明。
如果您希望忽略发现,请右键单击并选择“禁止违反<rule>”。此操作将在源文件中添加特殊注释,这将阻止分析器将来报告此发现。
或者,您可以从视图中“删除违反<rule>的内容”,而不必在此运行中打扰它。这些菜单选项如上图所示。
我提到过,对于您的实际项目,您可能需要再配置一个选项才能开始使用静态分析。这与构建信息有关,更具体地说,与编译命令行有关。
静态分析引擎需要知道要分析的每个文件的编译命令行。根据项目的构建方式,可以应用不同的策略来提供此信息。
让我们来看看我们的Timer示例如何发生。
切换到“输出”面板,该面板仍应包含我们分析运行的输出。
一直向上滚动。在输出的第二行中,您应该看到扩展执行的C/C++test Standard命令行。它将从“cpptestcli”开始。有趣的部分在此命令行的末尾。
Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
在这种情况下,C/C++test静态分析引擎被告知“跟踪”构建以获取所需的编译命令行信息。您也可以将此策略应用于其他构建系统。效果很好:
Cpptestcli执行在-trace选项之后指定的build命令。将自动扫描构建信息并将其保存到cpptest.bdf文件中,该文件现在在“Timer”文件夹中可见,并用作静态分析的输入。
一切都很好,但是如果我想重新运行静态分析会怎样?好吧,使用默认设置,C/C++test将重新运行您的构建。对于实际项目来说不是一个好的选择。
更改方法如下:
您将看到如下所示的扩展程序设置:
:
Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
构建信息配置是“命令行模式”设置的一部分。在设置面板中,选择“计时器”(在“用户和工作区”旁边)以仅修改“计时器”文件夹的设置。
转到命令行模式,移至末尾,然后自定义模式,将“-trace make clean all”替换为“-input ${workspaceFolder}/cpptest.bdf”,如下所示:
Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
使用此设置,无论何时运行静态分析,C/C++test都不会重新执行构建过程,而只是加载在第一次构建过程中生成的cpptest.bdf的内容,并且可以更快地执行分析。您可以在此处了解有关构建数据文件的更多信息。
对于那些使用CMake进行项目的人来说,还有一个选项可以简化设置过程。C/C++test可以将可由CMake自动生成的compile_commands.json文件作为分析的输入。
在本文中为我们的Timer示例配置compile_commands.json文件生成。
完成后,再访问设置面板一次(Ctr+Shift+P,键入“C/C++test: Quick Start”,然后选择“打开设置...”或使用“C/C++test”在状态栏中的快速入门)。
转到命令行模式字段,然后如下所示进行修改:
Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
于是,您可以使用CMake构建自动生成的文件,并简化设置。
扩展中还有一些其他有趣的选项和命令,我邀请您进行探索。例如,您可以从CI/CD管道中生成的文件中导入静态分析结果,并在本地进行查看。
希望本文对Visual Studio Code编辑器的C/C++test扩展有所帮助。
Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置
点击“了解更多”申请免费试用