真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

基于MISRA-C和VSCode的代碼靜態(tài)檢查的開(kāi)源解決方案-創(chuàng)新互聯(lián)

基于MISRA-C和VS Code的代碼靜態(tài)檢查的開(kāi)源解決方案
  • 簡(jiǎn)介
  • 工具
    • 配置步驟

創(chuàng)新互聯(lián)主營(yíng)無(wú)為網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,手機(jī)APP定制開(kāi)發(fā),無(wú)為h5小程序設(shè)計(jì)搭建,無(wú)為網(wǎng)站營(yíng)銷(xiāo)推廣歡迎無(wú)為等地區(qū)企業(yè)咨詢(xún)簡(jiǎn)介

MISRA-C是汽車(chē)嵌入式軟件開(kāi)發(fā)中常用的靜態(tài)代碼檢查工具。常用的商用靜態(tài)代碼分析工具,比如QAC、Coverity都支持基于MISRA-C的靜態(tài)代碼檢查。

由于License等等問(wèn)題,通常我們?cè)谝惠嗛_(kāi)發(fā)結(jié)束后進(jìn)行代碼的靜態(tài)檢查,如果可以在開(kāi)發(fā)過(guò)程中能夠直接發(fā)現(xiàn)問(wèn)題,那就方便多了。

本文介紹了基于MISRA-C的代碼靜態(tài)檢查的開(kāi)源解決方案,結(jié)合目前流行的VS Code,實(shí)現(xiàn)在編碼過(guò)程中實(shí)時(shí)地對(duì)代碼進(jìn)行檢查,適合MCAL、BSW開(kāi)發(fā)以及其他需要手寫(xiě)代碼的同學(xué)。

工具
  • VS Code
    目前比較流行的開(kāi)發(fā)工具,結(jié)合豐富的擴(kuò)展實(shí)現(xiàn)不同需求
    官網(wǎng)鏈接
  • C/C++ Advanced Lint
    VS Code擴(kuò)展,用來(lái)實(shí)現(xiàn)代碼的靜態(tài)分析,支持Cppcheck, clang等靜態(tài)代碼分析工具
  • CppCheck
    C/C++靜態(tài)代碼檢查工具,支持MISRA-C規(guī)則
    官網(wǎng)鏈接
    GitHub倉(cāng)庫(kù)
配置步驟
  1. 安裝Cppcheck工具,在官網(wǎng)下載安裝即可
    在這里插入圖片描述

  2. 將Cppcheck安裝路徑加入系統(tǒng)path,否則擴(kuò)展找不到可執(zhí)行文件,會(huì)報(bào)錯(cuò)
    在這里插入圖片描述

  3. VS Code中安裝C/C++ Advanced Lint擴(kuò)展
    在這里插入圖片描述

  4. 配置C/C++ Advanced Lint擴(kuò)展
    4.1 Cppcheck配置
    C/C++ Advanced Lint支持flexelint,lizard,flawfinder,clang,cppcheck多種代碼檢查工具,這里我們只使用Cppcheck,在VS Code的擴(kuò)展設(shè)置里將其他幾種工具的使能勾掉,否則VS Code會(huì)報(bào)錯(cuò)在這里插入圖片描述
    或者在setting.json中直接配置成false
    在這里插入圖片描述
    到這里其實(shí)已經(jīng)可以進(jìn)行代碼的檢查了,如下圖中檢查出數(shù)組越界的錯(cuò)誤,不過(guò)沒(méi)有用MISRA-C規(guī)則檢查
    在這里插入圖片描述
    4.2 MISRA-C規(guī)則的配置

    我們需要Cppcheck使用MISRA-C規(guī)則檢查代碼,將Cppcheck的addon配置成misra
    在這里插入圖片描述

    這樣就可以進(jìn)行基于MISRA-C規(guī)則的靜態(tài)代碼檢查了,下面代碼中檢查出不符合MISRA-C 2012 的 Rule 8.4,Rule 8.2
    在這里插入圖片描述

    不過(guò)這樣還不夠方便,我們希望看到Rule 8.4的具體內(nèi)容,這也是本文的重點(diǎn)

    找一個(gè)你喜歡的路徑,創(chuàng)建一個(gè)misra.json文件,寫(xiě)入

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

    misra.py是Cppcheck工具自己帶的腳本,不用關(guān)心,MISRA_C_2012.txt是MISRA-C規(guī)則文本,可以在網(wǎng)上找到。

    這里需要注意的是misra.json和MISRA_C_2012.txt兩個(gè)文件都不要放到*:\Program Files\* 路徑下面,會(huì)報(bào)錯(cuò),我這里放到了C盤(pán)的根目錄下面

    (這里多提一句,盡量不要把開(kāi)發(fā)用的軟件裝到Program Files路徑下面,會(huì)有莫名其妙的問(wèn)題)

    在setting.json中寫(xiě)入下面的內(nèi)容
    在這里插入圖片描述

    這樣就可以在VS Code里直接看到MISRA-C規(guī)則的內(nèi)容啦
    在這里插入圖片描述

    鼠標(biāo)放到打波浪線的代碼處,也可以有提示
    在這里插入圖片描述
    這里有一個(gè)問(wèn)題,就是同一個(gè)條目會(huì)重復(fù)顯示,不過(guò)問(wèn)題也不大

    上面的思路來(lái)自于Cppcheck的官方Manual
    在這里插入圖片描述

    4.3 提示等級(jí)的選擇

    代碼量大了以后,會(huì)檢查出很多information級(jí)別的錯(cuò)誤,通常是MISRA-C中對(duì)代碼風(fēng)格的檢查,而我們通常關(guān)心warning或者error級(jí)別的錯(cuò)誤。VS Code里可以通過(guò)下面的方法選擇錯(cuò)誤提示的級(jí)別
    在這里插入圖片描述

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

    這里最好在本地的setting.json中配置,因?yàn)椴煌墓こ檀a的引用路徑不同
    在這里插入圖片描述

本次分享到此結(jié)束,有問(wèn)題請(qǐng)各位同學(xué)留言。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)頁(yè)標(biāo)題:基于MISRA-C和VSCode的代碼靜態(tài)檢查的開(kāi)源解決方案-創(chuàng)新互聯(lián)
本文URL:http://weahome.cn/article/cdocpp.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部