0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MISRA編碼標(biāo)準(zhǔn)和靜態(tài)代碼分析儀

星星科技指導(dǎo)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Ekaterina Nikiforova ? 2022-11-25 16:31 ? 次閱讀

近年來,軟件質(zhì)量、安全和保障已成為重中之重。在我們之前的文章中,我們已經(jīng)提到了歷史上的一些事件,這些事件造成了巨大的經(jīng)濟(jì)損失和人員死亡。阿麗亞娜5的爆炸,患者使用Therac-25放射治療機(jī)過量服用20,000拉德,89因豐田的過錯(cuò)而死亡。所有這些故事都有一個(gè)共同點(diǎn):導(dǎo)致巨大損失的軟件錯(cuò)誤。

那么什么是MISRA?

最初,MISRA(汽車行業(yè)軟件可靠性協(xié)會(huì))的成立是為了設(shè)計(jì)一套用于道路車輛的微控制器軟件開發(fā)指南。從那時(shí)起,它已被應(yīng)用于每個(gè)可靠性和安全關(guān)鍵領(lǐng)域,包括汽車行業(yè)、醫(yī)療設(shè)備、航空航天和國防等。MISRA 標(biāo)準(zhǔn)是一個(gè)由一組規(guī)則和建議組成的文檔,C 和 C++ 開發(fā)人員在開發(fā)應(yīng)用程序時(shí)應(yīng)遵守這些規(guī)則和建議。MISRA-C:1998版本有127條規(guī)則。

所有這些規(guī)則都可以分為以下幾類:

命令的

必需 – 允許偏離規(guī)則(但建議記錄在案)

咨詢 – 非強(qiáng)制性

(來源:什么是MISRA以及如何烹飪)

首先要提到的是,MISRA標(biāo)準(zhǔn)的應(yīng)用應(yīng)該在開發(fā)過程實(shí)際開始之前開始,并且只有在真正需要時(shí)才開始。在其他情況下,特別是當(dāng)代碼庫足夠大并且不適合在嵌入式系統(tǒng)上使用時(shí),開發(fā)人員將不得不進(jìn)行漫長而乏味的重構(gòu)。為什么會(huì)這樣?

WinMerge的源代碼大約有25萬行C和C++代碼長。這是一個(gè)小項(xiàng)目,但是規(guī)定將if語句的主體括在大括號(hào)中的規(guī)則在其中被打破了大約兩千次。有 127-228 條這樣的規(guī)則(取決于標(biāo)準(zhǔn)的版本)。

Nana是一個(gè)用于創(chuàng)建圖形用戶界面的跨平臺(tái)庫,其源代碼長度不到10萬LOC。在這個(gè)項(xiàng)目中,同樣的規(guī)則被打破了大約三千次。

除了關(guān)于大括號(hào)的規(guī)則外,還有一些:

不得使用繼續(xù)語句;

每個(gè) switch 語句都應(yīng)有一個(gè)默認(rèn)標(biāo)簽;

不得使用 goto 語句;

如果。..否則,如果構(gòu)造應(yīng)以 else 子句終止;

那么,它的用途是什么?

但是,這些規(guī)則并不意味著使開發(fā)人員的生活更加艱難。這些是用鮮血寫成的規(guī)則,需要它們來使安全關(guān)鍵代碼不易出現(xiàn)錯(cuò)誤。這個(gè)想法是簡單明了的代碼不太可能包含錯(cuò)誤。下面是一些診斷示例作為證據(jù):

賦值運(yùn)算符不得用于返回布爾值的表達(dá)式中;

所有非 void 的函數(shù)都應(yīng)返回一個(gè)值;

循環(huán)計(jì)數(shù)器基本上不應(yīng)具有浮動(dòng)類型;

函數(shù)末尾應(yīng)該有一個(gè)單點(diǎn)出口;

遵循 MISRA 指南將有助于提高軟件的可靠性。但是,那些不熟悉MISRA的人可能想知道它究竟是如何使用的。你真的必須把這127條規(guī)則都記在腦子里嗎?這就是靜態(tài)分析器可以提供幫助的地方。

靜態(tài)分析的目的是什么?

手動(dòng)檢查代碼是否符合 MISRA 標(biāo)準(zhǔn)是一項(xiàng)漫長而乏味的工作。但實(shí)際上你不必記住所有這些規(guī)則。靜態(tài)代碼分析器可以為您完成所有操作。

靜態(tài)代碼分析是檢測(cè)計(jì)算機(jī)程序源代碼中的錯(cuò)誤和小缺陷的過程。它可以被視為自動(dòng)代碼審查。一些靜態(tài)分析器可以檢查代碼是否符合 MISRA 規(guī)則,正是這些工具將幫助您查找并修復(fù)程序中所有不符合規(guī)則的地方。為此,您只需使用分析器檢查您的項(xiàng)目并研究檢查結(jié)束時(shí)生成的分析報(bào)告。下面我將簡要演示如何使用 PVS-Studio 分析器和項(xiàng)目 Shairport 作為示例來執(zhí)行此操作。

克隆存儲(chǔ)庫。

poYBAGOAfWSAAqd6AABcW_J0tHM455.png

運(yùn)行生成配置腳本。

poYBAGOAfWeABmCRAABoJzFS0OY498.png

在跟蹤模式下運(yùn)行 PVS-Studio 并生成項(xiàng)目。

poYBAGOAfWmAF1HPAAE_2NYp_cM931.png

根據(jù)上一步的結(jié)果分析項(xiàng)目文件。

pYYBAGOAfWuAFL9YAADkhTogRM4622.png

將日志轉(zhuǎn)換為 html。

pYYBAGOAfW-AC5BnAABl5j3udLs781.png

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7552

    瀏覽量

    151423
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2108

    瀏覽量

    73651
  • MISRA
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    6969
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    電視信號(hào)分析儀的技術(shù)原理和應(yīng)用

    指標(biāo)。這些指標(biāo)對(duì)于評(píng)估電視節(jié)目的傳輸質(zhì)量至關(guān)重要。 設(shè)備調(diào)試和維護(hù):在廣播電視設(shè)備的調(diào)試和維護(hù)過程中,電視信號(hào)分析儀可用于檢查設(shè)備的性能和參數(shù)設(shè)置。通過對(duì)比標(biāo)準(zhǔn)信號(hào)和實(shí)際信號(hào)之間的差異,可以發(fā)現(xiàn)并解決設(shè)備
    發(fā)表于 12-12 14:35

    頻譜分析儀與信號(hào)分析儀的區(qū)別

    在現(xiàn)代電子通信領(lǐng)域,頻譜分析儀和信號(hào)分析儀是兩種不可或缺的測(cè)試工具。它們都用于測(cè)量和分析信號(hào)的特性,但它們的功能、應(yīng)用和工作原理存在顯著差異。 一、定義與基本原理 頻譜分析儀 是一種用
    的頭像 發(fā)表于 11-27 15:26 ?501次閱讀

    Keysight 頻譜分析儀(信號(hào)分析儀

    Keysight頻譜分析儀(信號(hào)分析儀)足夠的性能和卓越的可靠性,幫助您更輕松、更快速地應(yīng)對(duì)常見的射頻-微波測(cè)試測(cè)量挑戰(zhàn)??煽康念l譜分析儀和信號(hào)分析儀提供準(zhǔn)確可信的測(cè)量結(jié)果無論您是要在
    的頭像 發(fā)表于 09-12 08:10 ?476次閱讀
    Keysight 頻譜<b class='flag-5'>分析儀</b>(信號(hào)<b class='flag-5'>分析儀</b>)

    whitepaper-perforce-what-is-misra

    如果您熟悉嵌入式軟件的世界,您可能聽說過安全關(guān)鍵系統(tǒng)的MISRA編碼準(zhǔn)則和合規(guī)性。最初為在汽車嵌入式軟件行業(yè),MISRA C for C 和 C++ 被廣泛使用嵌入式行業(yè),從航空航天和國防到醫(yī)療設(shè)備。本文提供
    發(fā)表于 08-08 15:54 ?0次下載

    網(wǎng)絡(luò)分析儀工作原理 網(wǎng)絡(luò)分析儀和頻譜分析儀的區(qū)別

    網(wǎng)絡(luò)分析儀和頻譜分析儀是兩種廣泛應(yīng)用于電子測(cè)量領(lǐng)域的儀器。它們各自具有獨(dú)特的工作原理和應(yīng)用場(chǎng)景。本文將詳細(xì)介紹網(wǎng)絡(luò)分析儀的工作原理,網(wǎng)絡(luò)分析儀與頻譜
    的頭像 發(fā)表于 06-03 15:38 ?1566次閱讀

    頻譜分析儀檢定規(guī)程標(biāo)準(zhǔn)

    頻譜分析儀的測(cè)量精度和可靠性,需要對(duì)其進(jìn)行定期的檢定。本文詳細(xì)介紹了頻譜分析儀檢定規(guī)程的標(biāo)準(zhǔn)。 檢定目的 頻譜分析儀檢定的主要目的是確保儀器的測(cè)量精度和可靠性,滿足實(shí)際應(yīng)用中對(duì)信號(hào)
    的頭像 發(fā)表于 06-03 09:26 ?647次閱讀

    信號(hào)分析儀與頻譜分析儀的區(qū)別

    在電子工程、通信、無線電以及生物醫(yī)學(xué)等多個(gè)領(lǐng)域中,信號(hào)分析儀和頻譜分析儀都是至關(guān)重要的測(cè)量和分析工具。雖然兩者在功能和應(yīng)用上有一定的重疊,但它們?cè)谠O(shè)計(jì)和應(yīng)用上存在著顯著的差異。本文將對(duì)信號(hào)分析
    的頭像 發(fā)表于 05-17 14:21 ?2175次閱讀

    掃頻頻譜分析儀與實(shí)時(shí)頻譜分析儀的區(qū)別

    在電子測(cè)量領(lǐng)域中,頻譜分析儀是一種至關(guān)重要的工具,它能夠幫助工程師和技術(shù)人員精確地測(cè)量和分析信號(hào)的頻譜特性。傳統(tǒng)的頻譜分析儀,如掃頻頻譜分析儀,與新興的實(shí)時(shí)頻譜
    的頭像 發(fā)表于 05-13 18:04 ?1963次閱讀

    網(wǎng)絡(luò)分析儀的分類

    網(wǎng)絡(luò)分析儀主要可以分為兩類:標(biāo)量網(wǎng)絡(luò)分析儀(Scalar Network Analyzer)和矢量網(wǎng)絡(luò)分析儀(Vector Network Analyzer)。
    的頭像 發(fā)表于 05-08 16:34 ?605次閱讀

    如何選擇適合您的USB頻譜分析儀?

    近幾年,USB頻譜分析儀行業(yè)興起,各式各樣的產(chǎn)品撲面而來,那么該如何選擇一款USB頻譜分析儀既符合你的使用標(biāo)準(zhǔn)的,又可以減少預(yù)算成本的產(chǎn)品呢?
    的頭像 發(fā)表于 04-15 16:07 ?402次閱讀
    如何選擇適合您的USB頻譜<b class='flag-5'>分析儀</b>?

    光譜分析儀是什么

    公司主營出售/回收:示波器、頻譜分析儀、網(wǎng)絡(luò)分析儀、信號(hào)發(fā)生器、萬用表/示波器校準(zhǔn)、手機(jī)綜合測(cè)試、噪聲系數(shù)分析儀、數(shù)據(jù)采集器、NI-GP
    的頭像 發(fā)表于 03-29 11:47 ?628次閱讀

    音頻分析儀的原理

    公司主營出售/回收:示波器、頻譜分析儀、網(wǎng)絡(luò)分析儀、信號(hào)發(fā)生器、萬用表/示波器校準(zhǔn)、手機(jī)綜合測(cè)試、噪聲系數(shù)分析儀、數(shù)據(jù)采集器、NI-GP
    的頭像 發(fā)表于 03-29 11:12 ?780次閱讀

    淺談阻抗分析儀

    公司主營出售/回收:示波器、頻譜分析儀、網(wǎng)絡(luò)分析儀、信號(hào)發(fā)生器、萬用表/示波器校準(zhǔn)、手機(jī)綜合測(cè)試、噪聲系數(shù)分析儀、數(shù)據(jù)采集器、NI-GP
    的頭像 發(fā)表于 03-29 10:40 ?656次閱讀

    解說網(wǎng)絡(luò)分析儀

    公司主營出售/回收:示波器、頻譜分析儀、網(wǎng)絡(luò)分析儀、信號(hào)發(fā)生器、萬用表/示波器校準(zhǔn)、手機(jī)綜合測(cè)試、噪聲系數(shù)分析儀、數(shù)據(jù)采集器、NI-GP
    的頭像 發(fā)表于 03-18 10:46 ?461次閱讀

    Helix QAC—軟件靜態(tài)測(cè)試工具

    Helix QAC是Perforce公司(原PRQA公司)產(chǎn)品,主要用于C/C++代碼的自動(dòng)化靜態(tài)分析工作,可以提供編碼規(guī)則以及信息安全相關(guān)檢查、
    的頭像 發(fā)表于 01-10 17:35 ?671次閱讀
    Helix QAC—軟件<b class='flag-5'>靜態(tài)</b>測(cè)試工具