基于misra-c-2012规则在vscode下集成cppcheck开源工具实现代码静态检查

前言

依赖工具:
1、cppcheck工具
2、vscode下安装C/C++ Advanced Lint扩展
3、python工具

一、 cppcheck下载安装

1、 下载cppcheck工具安装包:http://cppcheck.net/

在这里插入图片描述

2、双击安装包:

在这里插入图片描述

双击后软件自行安装在:C:\Program Files\Cppcheck

3、 添加cppcheck系统路径:

添加系统路径步骤

4、下载cppcheck源码:Github官网下载链接

5、将下载后的cppcheck源码中的“addons”文件夹拷贝到cppcheck工具安装目录C:\Program Files\Cppcheck下

在这里插入图片描述

二、 vscode下安装C/C++ Advanced Lint扩展

1、vscode软件下在扩展页面搜索C/C++ Advanced Lint后安装

>代码如下(示例):

2、 配置C/C++ Advanced Lint扩展

2.1、在vscode软件中点击设置按钮,选择“设置”选项

在这里插入图片描述

2.2、搜索“@ext:jbenden.c-cpp-flylint”然后“settings.json”中编辑

在这里插入图片描述

2.3、在settings.json中添加这几行配置关闭flexelint,lizard,flawfinder,clang这4行代码检查工具,也可以在页面上取消勾选这几个选项

"c-cpp-flylint.clang.enable": false,
"c-cpp-flylint.flexelint.enable": false,
"c-cpp-flylint.lizard.enable": false,
"c-cpp-flylint.flawfinder.enable": false,

保存之后,可以看到下方有cppcheck自己的一个校验了

在这里插入图片描述

2.4、添加MISRA-C规则的配置,将Cppcheck的addon配置成misra,然后保存

在这里插入图片描述

2.5、在C盘的根目录下面添加MISRA_C_2012.txt文件,这个文件就是misra 2012校验规则,该文件可以从网上下载

在这里插入图片描述

2.6、添加该文件后,如果想看到具体的misra报错提示,还需要创建一个misra.json文件,写入如下内容:

在这里插入图片描述
注:“args”参数中的文件路径就是2.5步骤中存放MISRA_C_2012.txt文件的c盘路径;
misra.json文件可以放在一个你喜欢的路径下边,但和MISRA_C_2012.txt文件一样,不要放在c: \Program Files\路径下,(尽量不要把开发用的软件装到Program Files路径下面,会有莫名其妙的问题),本次实验中把这两个文件都放在了c盘根目录下面:
在这里插入图片描述

2.7、这里因为做实验原因,创建了一个测试文件test.c

在这里插入图片描述

三、python安装

1、官网下载python:python官网

在这里插入图片描述

2、实验过程中选择的是3.8.5,最新版本应该也是可以的:

在这里插入图片描述

3、双击下载好的安装包:python-3.8.5-amd64.exe,勾选add添加python路径选项,然后点击“install now”

在这里插入图片描述
勾选上的话,就省去了添加环境变量的步骤

3、 win + R打开dos窗口或者在任务栏点击搜索小图标打开搜索“cmd”打开命令提示符

4、 输入“python”能看到版本,即说明安装成功

在这里插入图片描述

5、在dos窗口下输入存放代码文件的路径:

在这里插入图片描述

6、输入cppcheck --dump test.c:

在这里插入图片描述
可以看到cppchek检验到的代码错误

7、 输入如下命令:

python “c:\ProgramFiles\Cppcheck\addons\misra.py” --rule-texts=MISRA_C_2012.txt test.c.dump

注:双引号内容是执行检测的python脚本;–后边的是misra 2012规则

在这里插入图片描述
该规则在misra.py脚本中执行成功了

8、 回到vscode下边,可以看到该测试文件下的语法错误,新建其他文件也是可以,且能看到具体的报错原因

在这里插入图片描述
注:如果对英文提示不熟悉,可以对照着MISRA_C_2012.txt文件中的每条规则查看一下,网上也有该规则的中文释义。

猜你喜欢

转载自blog.csdn.net/m0_56484847/article/details/131287144