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

这篇具有很好参考价值的文章主要介绍了基于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工具,在官网下载安装即可
    基于MISRA-C和VS Code的代码静态检查的开源解决方案

  2. 将Cppcheck安装路径加入系统path,否则扩展找不到可执行文件,会报错
    基于MISRA-C和VS Code的代码静态检查的开源解决方案

  3. VS Code中安装C/C++ Advanced Lint扩展
    基于MISRA-C和VS Code的代码静态检查的开源解决方案

  4. 配置C/C++ Advanced Lint扩展
    4.1 Cppcheck配置
    C/C++ Advanced Lint支持flexelint,lizard,flawfinder,clang,cppcheck多种代码检查工具,这里我们只使用Cppcheck,在VS Code的扩展设置里将其他几种工具的使能勾掉,否则VS Code会报错基于MISRA-C和VS Code的代码静态检查的开源解决方案
    或者在setting.json中直接配置成false
    基于MISRA-C和VS Code的代码静态检查的开源解决方案
    到这里其实已经可以进行代码的检查了,如下图中检查出数组越界的错误,不过没有用MISRA-C规则检查
    基于MISRA-C和VS Code的代码静态检查的开源解决方案
    4.2 MISRA-C规则的配置

    我们需要Cppcheck使用MISRA-C规则检查代码,将Cppcheck的addon配置成misra
    基于MISRA-C和VS Code的代码静态检查的开源解决方案

    这样就可以进行基于MISRA-C规则的静态代码检查了,下面代码中检查出不符合MISRA-C 2012 的 Rule 8.4,Rule 8.2
    基于MISRA-C和VS Code的代码静态检查的开源解决方案

    不过这样还不够方便,我们希望看到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中写入下面的内容
    基于MISRA-C和VS Code的代码静态检查的开源解决方案

    这样就可以在VS Code里直接看到MISRA-C规则的内容啦
    基于MISRA-C和VS Code的代码静态检查的开源解决方案

    鼠标放到打波浪线的代码处,也可以有提示
    基于MISRA-C和VS Code的代码静态检查的开源解决方案
    这里有一个问题,就是同一个条目会重复显示,不过问题也不大

    上面的思路来自于Cppcheck的官方Manual
    基于MISRA-C和VS Code的代码静态检查的开源解决方案

    4.3 提示等级的选择

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

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

    这里最好在本地的setting.json中配置,因为不同的工程代码的引用路径不同
    基于MISRA-C和VS Code的代码静态检查的开源解决方案

本次分享到此结束,有问题请各位同学留言。文章来源地址https://www.toymoban.com/news/detail-438056.html

到了这里,关于基于MISRA-C和VS Code的代码静态检查的开源解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python代码规范:企业级代码静态扫描-代码规范、逻辑、语法、安全检查,以及代码规范自动编排(2)

    本篇将总结实际项目开发中Python代码规范检查、自动编排的一些工具,特点,使用方法,以及如何在Pycharm中集成这些工具,如autoflake、yapf、black、isort、autopep8代码规范和自动编排工具。上一篇总结的pylint、pyproject-flake8、pyflakes、flake8、mypy代码规范扫描工具参考: https://blo

    2023年04月09日
    浏览(48)
  • 使用VS Code运行前端代码

    提示:这里可以添加本文要记录的大概内容: 但是我在使用VS Code和Hbuilder的不同是: Hbuilder我记得是可以在菜单栏的“文件”→“新建”→“HTML5+项目”,填写项目名称、路径等信息后点击“完成”即可创建一个新项目 如何使用VS Code安装插件及VS Code上的常用插件点我查看

    2024年01月16日
    浏览(44)
  • 1.vs code 拉取gitee 代码仓库

    2.1 如果是第一次clone,则会提示输入账户和密码,这个就是gitee的账户和密码  2.2 点击确认后,就等待项目克隆完成即可。  

    2024年02月13日
    浏览(59)
  • 一个强大的 VS Code 的AI代码插件:Fitten Code

    AI 代码助手有  GitHub Copilot ,一直想用,但是要爬梯子,还要收费。 一款国产AI写代码神器 Fitten Code ,满足了我对AI写代码的幻想。它在功能上基本和 GitHub Copilot 差不多。 重要是的是,免费,免费,完全免费!啊啊啊啊啊~~~~ 官网:免费好用的AI编程助手 - Fitten Code Fitten Co

    2024年04月12日
    浏览(51)
  • 安卓手机,平板运行 vs code ,写前端代码

    介绍本文的重点 code Fa,大佬的文章如下 把 VS Code 带到安卓 - Code FA - 掘金 安装好了之后, 1.打开科技(不知道啥事科技的可以尝试直接下载,下载的比较慢) 2.安装中文等插件(不开科技下载不了)     安装后 根据介绍安装中文语言包, 并打以下代码     Configure Display Language     或

    2024年02月20日
    浏览(46)
  • 【VS code】如何上传项目代码到gitub

    ​ 用vscode打开项目文件夹并打开终端 在终端中输入:初始化 Git 仓库 3. 将文件添加到暂存区:使用以下命令将要上传的文件添加到 Git 的暂存区(Stage):如果只上传单个文件夹就把 . 换成文件名即可 如果有很多warming也没关系 这些警告信息是 Git 在检测到换行符(line endings)

    2024年02月08日
    浏览(38)
  • 解决VS Code/Code insiders右键python代码无法“转到定义”问题

    最近怀疑自己用了个假的VS Code, 同门的能丝滑跳转定义、跳转引用,自己的偏偏不行(合着这么爽的功能我从来没享受到(。﹏。*)),网上各种教程试了个遍都不行,最后自己摸索出了解决方案。记录在此备忘: 按以下顺序依次Check: 确保安装这些插件:Python、Pylance、Inte

    2024年02月08日
    浏览(37)
  • 基于VS Code的插件开发(基础篇)

    VSCode 采用了 Electron,在语言上,VSCode 使用了自家的 TypeScript 语言开发。Electron是基于 Chromium 和 Node.js,使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用,它兼容 Mac、Windows 和 Linux,可以构建出三个平台的应用程序。 从实现上来看,Electron = Node.js + Chromium + Native API 接下来看下

    2024年02月07日
    浏览(42)
  • VS Code中python代码自动格式化方法

    为了能够在VS Code中使自己写的Python代码更加符合规范并且适宜阅读,往往需要手工进行代码格式矫正,例如等号左右的空格、函数参数与等号之间的空格等。下面讲解一种简单的自动格式化方法。 首先安装yapf库: pip install yapf 然后在VS Code菜单栏中依次打开 File—Preferences—

    2024年02月16日
    浏览(80)
  • VS Code Counter统计代码量(vscode扩展工具)

    该vscode扩展工具用于统计代码行数以及代码量等信息。 既可以点击左侧扩展图标,也可以 Shift+Ctrl+X vscode快捷命令打开扩展:商店,然后在商店中搜索 VS Code Counter ,并点击安装。 使用时用两种方式可以直接统计代码。 顶部菜单栏 【查看】(View) 选择下拉菜单 【命令面板】打

    2024年02月04日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包