cppCheck for vscode configuration

Posted by Mr.Zhang on 2023-06-11
Estimated Reading Time 2 Minutes
Words 628 In Total

软件质量是每一个汽车电子软件攻城狮的核心追求,受制于公司流程及相关工具链许可证限制,每次只能在CQ提交之前,才能在服务器端进行动静态测试。遂基于VSCode + cppCheck打造符合MISRA-C-2012的实时工作流就非常有必要了。当然开源工具没有工具链功能安全等相关认证,仅可用于前期规避和辅助Review.

cppCheck

cppCheck
验证安装(cmd or powershell)

1
$ cppcheck --version

python

python
验证安装(cmd or powershell)

1
$ python --version

VSCode配置

插件市场安装cpp-check-lint

settings.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/* cppcheck配置 */
"cpp-check-lint.--enable": true, //启用插件
"cpp-check-lint.cppcheck.--executable": "C:\\Program Files\\Cppcheck\\cppcheck.exe", //cppcheck路径
"cpp-check-lint.cpplint.--enable": false, //关闭无用的cpplint
"cpp-check-lint.cppcheck.--inline-suppr": false, //取消内联
"cpp-check-lint.cppcheck.--language=": "c", //使用c语言进行检查
"cpp-check-lint.cppcheck.--onsave": true, //在文件保存时立刻检查该文件
"cpp-check-lint.cppcheck.--quick_fix": false,
"cpp-check-lint.cppcheck.--std_c=": "c99",
"cpp-check-lint.cppcheck.--enable=": "all",//输出信息等级,可选all,warning,style,performance,portability,information,unusedFunction
"cpp-check-lint.cppcheck.--customargs=": "--rule-file=D:\\99_TestProject\\80_CProject\\cppcheckCfg\\rule.xml", //自定义规则
"cpp-check-lint.cppcheck.--suppress=":[ //禁用检查项
"variableScope", //可以减少变量xxx的范围(The scope of the variable 'xxx' can be reduced.)
"misra-c2012-2.3", //建议 项目不应包含未被使用的类型(type)声明
"misra-c2012-2.4", //建议 项目不应包含未被使用的类型标签(tag)声明
"misra-c2012-2.5", //建议 项目不应包含未被使用的宏(macro)声明
//"misra-c2012-5.4", //必要 宏标识符不得重名 c89规定31个字符以内,c99规定63个字符以内
"misra-c2012-8.9", //建议 若一个对象的标识符仅在一个函数中出现,则应将它定义在块范围内
"misra-c2012-15.4", //建议 最多只能有一个用于终止循环语句的break或goto语句
"misra-c2012-19.2", //必要 不得使用union关键字
"misra-c2012-20.1", //建议 #include指令之前仅允许出现预处理指令或注释
],

"cpp-check-lint.cppcheck.--addon=": [ //插件
{
"script": "misra.py",
"args": [
"--rule-texts=D:\\99_TestProject\\80_CProject\\cppcheckCfg\\misra_rules_multiple_lines.txt"
]
},
],

自定义rule、cfg、平台等配置项,请查阅 官方手册

配置完成效果如下:
配置完成效果


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !