基于MISRA-C和VS Code的代码静态检查的开源解决方案

  • 简介
  • 工具
    • 配置步骤

简介

MISRA-C是汽车嵌入式软件开发中常用的静态代码检查工具。常用的商用静态代码分析工具,比如QAC、Coverity都支持基于MISRA-C的静态代码检查。

由于License等等问题,通常我们在一轮开发结束后进行代码的静态检查,如果可以在开发过程中能够直接发现问题,那就方便多了。

本文介绍了基于MISRA-C的代码静态检查的开源解决方案,结合目前流行的VS Code,实现在编码过程中实时地对代码进行检查,适合MCAL、BSW开发以及其他需要手写代码的同学。

工具

  • VS Code
    目前比较流行的开发工具,结合丰富的扩展实现不同需求
    官网链接
  • C/C++ Advanced Lint
    VS Code扩展,用来实现代码的静态分析,支持Cppcheck, clang等静态代码分析工具
  • CppCheck
    C/C++静态代码检查工具,支持MISRA-C规则
    官网链接
    GitHub仓库

配置步骤

  1. 安装Cppcheck工具,在官网下载安装即可

  2. 将Cppcheck安装路径加入系统path,否则扩展找不到可执行文件,会报错

  3. VS Code中安装C/C++ Advanced Lint扩展

  4. 配置C/C++ Advanced Lint扩展
    4.1 Cppcheck配置
    C/C++ Advanced Lint支持flexelint,lizard,flawfinder,clang,cppcheck多种代码检查工具,这里我们只使用Cppcheck,在VS Code的扩展设置里将其他几种工具的使能勾掉,否则VS Code会报错
    或者在setting.json中直接配置成false

    到这里其实已经可以进行代码的检查了,如下图中检查出数组越界的错误,不过没有用MISRA-C规则检查

    4.2 MISRA-C规则的配置

    我们需要Cppcheck使用MISRA-C规则检查代码,将Cppcheck的addon配置成misra

    这样就可以进行基于MISRA-C规则的静态代码检查了,下面代码中检查出不符合MISRA-C 2012 的 Rule 8.4,Rule 8.2

    不过这样还不够方便,我们希望看到Rule 8.4的具体内容,这也是本文的重点

    找一个你喜欢的路径,创建一个misra.json文件,写入

    {"script": "misra.py","args": ["--rule-texts=C:\\MISRA_C_2012.txt"]
    }
    

    misra.py是Cppcheck工具自己带的脚本,不用关心,MISRA_C_2012.txt是MISRA-C规则文本,可以在网上找到。

    这里需要注意的是misra.json和MISRA_C_2012.txt两个文件都不要放到*:\Program Files\* 路径下面,会报错,我这里放到了C盘的根目录下面

    (这里多提一句,尽量不要把开发用的软件装到Program Files路径下面,会有莫名其妙的问题)

    在setting.json中写入下面的内容

    这样就可以在VS Code里直接看到MISRA-C规则的内容啦

    鼠标放到打波浪线的代码处,也可以有提示

    这里有一个问题,就是同一个条目会重复显示,不过问题也不大

    上面的思路来自于Cppcheck的官方Manual

    4.3 提示等级的选择

    代码量大了以后,会检查出很多information级别的错误,通常是MISRA-C中对代码风格的检查,而我们通常关心warning或者error级别的错误。VS Code里可以通过下面的方法选择错误提示的级别

    4.4 头文件的引用
    大型工程通常涉及到头文件的引用,需要添加引用路径

    这里最好在本地的setting.json中配置,因为不同的工程代码的引用路径不同

本次分享到此结束,有问题请各位同学留言。

基于MISRA-C和VS Code的代码静态检查的开源解决方案相关推荐

  1. Jenkins 在 Tomcat 中的部署及代码静态检查工具集成

    Jenkins 的简单部署 在安装了 Jenkins 运行所需的依赖(主要是 JDK)之后,可以通过如下步骤简单快速地部署 Jenkins: 下载 Jenkins. 打开终端并切换至下载目录. 运行命 ...

  2. 你需要的代码静态检查

    代码静态检查 使用cppcheck给工程代码做静态检查,主要发现了以下几个问题: 1. 使用C风格的类型转换 警告如下: C-style pointer casting detected. C++ o ...

  3. 一些代码静态检查工具的简介

    1.KLOCWORK: 适用语言:C, C++, JAVA 是否开源:否, 是否需要编译:是 作用:代码静态检查工具.用于高效检测软件缺陷和安全隐患,提供优秀的静态源代码分析解决方案.软件号称是业界领 ...

  4. linux sparse 内核代码静态检查

    Sparse简介 Sparse诞生于2004年,是由Linux之父开发的,目的就是提供一个静态检查代码的工具,从而减少Linux内核的隐患.起始,在Sparse之前已经有了一个不错的代码静态检查工具( ...

  5. 代码静态检查工具PC-Lint运用实践

    代码静态检查工具PC-Lint运用实践 如何提交zero bug的产品,如何尽早发现bug,是软件开发工程师和测试工程师都需要思考的问题.我认为高质量的代码是关键,具体实施保障办法有:框架约束,代码评 ...

  6. 【Dart】Dart代码静态检查

    介绍 代码检查可以有效的提高代码质量,更进一步的说代码检查不仅仅是为了提高代码质量,已深入到代码程序的逻辑检查.内存使用情况的检查甚至更高层面的检查,很大程度上影响了程序的功能和性能. 代码检查分类 ...

  7. cppcheck 自定义规则_cppcheck代码静态检查工具及相关工具插件用法介绍

    摘要:介绍代码缺陷静态检查工具(static code analyzer)cppcheck,以及其vs.qtcreator.git.jenkins插件及用法. Cppcheck着重于检测未定义的行为和 ...

  8. 代码静态检查之findbugs

    白盒测试中的静态检查一般是检查编码标准规范,错误列表.编码规范往往团队会根据自己的经验和风格进行设置一些规范.现在很多IDE工具都会在编辑代码的时候实时的提醒是否符合代码风格.错误列表,一般是代码潜在 ...

  9. 代码静态检查工具汇总

    静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):"静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码 ...

最新文章

  1. “HTTP 500 - 内部服务器错误”解决办法
  2. mongodb基本语法
  3. [html] android手机的微信H5弹出的软键盘挡住了文本框,如何解决?
  4. MATLAB K-means聚类代码讲解
  5. 【前端面试】字节跳动2019校招面经 - 前端开发岗(二)
  6. 关于Handler和子线程的记录
  7. 诺,你们要的Python进阶来咯!【函数、类进阶必备】
  8. Python自动化运维实战:使用Python管理网络设备
  9. Sage x3周期性凭证帮助企业提升财务效率
  10. 拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
  11. 2022最新oneNav导航系统源码全开源版本下载总裁导航
  12. Blender 置换生成地形模型
  13. Leetcode 1905. Count Sub Islands [Python]
  14. 【小游戏】Flappy bird
  15. 清华姚班学生ICML一人署名论文:协作学习的鲁棒性方法
  16. fffffffffffffffffff
  17. 论文发表查重率要小于多少?
  18. OpenStack全网最全部署教程
  19. 李书福造手机,会走上周鸿祎和董明珠的老路吗?
  20. 医院项目-预约挂号-第五部分

热门文章

  1. D兔提供伤感日志_不要随便牵手,更不要随便放手
  2. apple pencil一代的平替有哪些品牌?平价电容笔推荐
  3. photoshop制作html,用Photoshop制作好的网页模板再来用dreamweave制作出html的简单教程...
  4. GLSL内置变量和内置函数
  5. Android RxJava操作符的学习---组合合并操作符---联合判断多个事件
  6. 大学开学需要准备什么?_马立杰_新浪博客
  7. Linux命令 - mv命令
  8. “砍一刀”潜力巨大? 拼多多海外版成美国下载量最高应用
  9. 明日方舟抽卡模拟器wiki_明日方舟寻访模拟器wiki
  10. BEM 命名规范简介