您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > C/C++/C#

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

时间:2020-06-19 11:15:39  来源:  作者:
Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

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

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

它快速、简单、可自定义、可扩展,并且可以在三个领先的开发平台上运行:windowslinuxmac。它的受欢迎程度不仅限于使用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”并安装扩展。

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

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

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配置

您会看到以下配置选项:

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

设置如下:

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

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

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

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

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

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

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

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

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

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

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

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

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

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

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

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

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

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

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

更改方法如下:

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

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

:

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

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

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

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

使用此设置,无论何时运行静态分析,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”在状态栏中的快速入门)。

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

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

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

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

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

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置

点击“了解更多”申请免费试用



Tags:Visual Studio   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
使用Visual Studio Code的缘起我学习Python的起因,是为了做量化交易。相比一般的交易软件,Python更加自由,能够充分实现我的想法。于是买了许多书,开始学习。最开始使用的集成开...【详细内容】
2021-06-24  Tags: Visual Studio  点击:(121)  评论:(0)  加入收藏
Visual Studio Code是个牛逼的编辑器,启动非常快,完全可以用来代替其他文本文件编辑工具。又可以用来做开发,支持各种语言,相比其他IDE,轻量级完全可配置还集成Git感觉非常的适合...【详细内容】
2021-05-10  Tags: Visual Studio  点击:(231)  评论:(0)  加入收藏
在 Visual Studio 中有一个窗口叫 Immediate 窗口,中文版本应该叫即时窗口。默认会在你启动调试时在 VS 编辑器中弹出来。你也可以通过 Debug | Windows | Immediate 或者...【详细内容】
2020-12-01  Tags: Visual Studio  点击:(247)  评论:(0)  加入收藏
Codejock软件公司的Xtreme Toolkit Pro是一种VC界面库,MFC开发中最全面界面控件套包,它提供了Windows开发所需要的11种主流的Visual C++ MFC控件,包括Command Bars、Controls、...【详细内容】
2020-09-03  Tags: Visual Studio  点击:(75)  评论:(0)  加入收藏
来源:https://www.oschina.net/news/117212/vs2019-16-7-pre4简介首先,Visual Studio 不是一个开源软件,是商业软件,提供免费的社区版本。Microsoft Visual Studio(简称VS)是美国...【详细内容】
2020-07-16  Tags: Visual Studio  点击:(70)  评论:(0)  加入收藏
在这篇文章中,我们假定读者了解VS基本的调试知识,如: F5 开始使用调试器运行程序 F9 在当前行设置断点 F10 运行到下一个断点处 F5 从被调试的已停止程序恢复执行 F11 步进到...【详细内容】
2020-07-09  Tags: Visual Studio  点击:(50)  评论:(0)  加入收藏
Visual Studio代码扩展入门:用于C/C++静态分析的VS Code配置在此文章中,我将与您分享一些有关为Visual Studio Code编辑器配置和使用我们全新的C/C++test静态分析扩展的提示。...【详细内容】
2020-06-19  Tags: Visual Studio  点击:(534)  评论:(0)  加入收藏
Visual Studio Code下载与安装Visual Studio Code是微软推出的一款开源、跨平台(Windows,Ubuntu,macOS)的编辑器,这里使用它来编写C语言的源代码,当然除了编写C代码之外,还可以...【详细内容】
2019-12-23  Tags: Visual Studio  点击:(145)  评论:(0)  加入收藏
▌简易百科推荐
一、简介很多时候我们都需要用到一些验证的方法,有时候需要用正则表达式校验数据时,往往需要到网上找很久,结果找到的还不是很符合自己想要的。所以我把自己整理的校验帮助类分...【详细内容】
2021-12-27  中年农码工    Tags:C#   点击:(2)  评论:(0)  加入收藏
引言在学习C语言或者其他编程语言的时候,我们编写的一个程序代码,基本都是在屏幕上打印出 hello world ,开始步入编程世(深)界(坑)的。C 语言版本的 hello world 代码:#include <std...【详细内容】
2021-12-21  一起学嵌入式    Tags:C 语言   点击:(11)  评论:(0)  加入收藏
读取SQLite数据库,就是读取一个路径\\192.168.100.**\position\db.sqlite下的文件<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/...【详细内容】
2021-12-16  今朝我的奋斗    Tags:c#   点击:(21)  评论:(0)  加入收藏
什么是shellshell是c语言编写的程序,它在用户和操作系统之间架起了一座桥梁,用户可以通过这个桥梁访问操作系统内核服务。 它既是一种命令语言,同时也是一种程序设计语言,你可以...【详细内容】
2021-12-16  梦回故里归来    Tags:shell脚本   点击:(18)  评论:(0)  加入收藏
一、编程语言1.根据熟悉的语言,谈谈两种语言的区别?主要浅谈下C/C++和PHP语言的区别:1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互...【详细内容】
2021-12-15  linux上的码农    Tags:c/c++   点击:(17)  评论:(0)  加入收藏
1.字符串数组+初始化char s1[]="array"; //字符数组char s2[6]="array"; //数组长度=字符串长度+1,因为字符串末尾会自动添&lsquo;\0&lsquo;printf("%s,%c\n",s1,s2[2]);...【详细内容】
2021-12-08  灯-灯灯    Tags:C语言   点击:(47)  评论:(0)  加入收藏
函数调用约定(Calling Convention),是一个重要的基础概念,用来规定调用者和被调用者是如何传递参数的,既调用者如何将参数按照什么样的规范传递给被调用者。在参数传递中,有两个很...【详细内容】
2021-11-30  小智雅汇    Tags:函数   点击:(19)  评论:(0)  加入收藏
一、问题提出问题:把m个苹果放入n个盘子中,允许有的盘子为空,共有多少种方法?注:5,1,1和1 5 1属同一种方法m,n均小于10二、算法分析设f(m,n) 为m个苹果,n个盘子的放法数目,则先对...【详细内容】
2021-11-17  C语言编程    Tags:C语言   点击:(49)  评论:(0)  加入收藏
一、为什么需要使用内存池在C/C++中我们通常使用malloc,free或new,delete来动态分配内存。一方面,因为这些函数涉及到了系统调用,所以频繁的调用必然会导致程序性能的损耗;另一...【详细内容】
2021-11-17  深度Linux    Tags:C++   点击:(38)  评论:(0)  加入收藏
OpenCV(Open Source Computer Vision Library)是一个(开源免费)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android、ios等操作系统上,它轻量级而且高效---由一系列...【详细内容】
2021-11-11  zls315    Tags:C#   点击:(50)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条