在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MISRA編碼標準和靜態代碼分析器

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者: Ekaterina Nikiforova ? 2022-06-30 14:45 ? 次閱讀

近年來,軟件質量、安全和保障已成為重中之重。在我們之前的文章中,我們已經提到了歷史上的一些事件,這些事件既造成了巨大的經濟損失,也造成了人員死亡。Ariane 5的爆炸,Therac-25放射治療機使患者暴露于 20,000 拉德的過量劑量,89 人因豐田的過錯而死亡。所有這些故事都有一個共同點:導致巨大損失的軟件錯誤。

那么什么是 MISRA?

最初,MISRA(汽車行業軟件可靠性協會)成立的目的是為道路車輛中使用的微控制器設計一套軟件開發指南。從那時起,它就被應用于汽車工業、醫療設備、航空航天和國防等所有對可靠性和安全性至關重要的領域。MISRA 標準是由一組規則和建議組成的文檔,C 和 C++ 開發人員在開發其應用程序時應遵守這些規則和建議。MISRA-C:1998 版本有127條規則。

所有這些規則都可以分為以下幾類:

強制的

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

咨詢——非強制性

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

首先要提到的是,MISRA 標準的應用應該在開發過程真正開始之前就開始,并且只有在真正需要的時候才開始。在其他情況下,特別是當代碼庫足夠大并且不打算在嵌入式系統上使用時,開發人員將不得不進行漫長而乏味的重構。為什么這樣?

WinMerge 的源代碼長約 25 萬行 C 和 C++ 代碼。這是一個小項目,但是將if語句的主體括在花括號中的規則在其中被破壞了大約 2000 次。有 127-228 條這樣的規則(取決于標準的版本)。

Nana 是一個用于創建圖形用戶界面的跨平臺庫,其源代碼長度不到 10 萬行。在這個項目中,同樣的規則被打破了大約三千次。

除了關于花括號的規則之外,還有一些規則:

不得使用 continue 語句;

每個 switch 語句都應該有一個默認標簽

不得使用 goto 語句;

所有 if 。.. else if 結構都應以 else 子句終止;

那么,它是用來做什么的呢?

但是,這些規則并不意味著讓開發人員的生活更加艱難。這些是用鮮血寫成的規則,它們用于使安全關鍵代碼不易出現錯誤。這個想法是簡單而清晰的代碼不太可能包含錯誤。以下是一些作為證據的診斷示例:

賦值運算符不得用于返回布爾值的表達式;

所有非 void 的函數都應該返回一個值;

循環計數器不應具有本質上的浮動類型;

一個函數最后應該有一個退出點;

遵循 MISRA 指南將有助于提高軟件的可靠性。但是,不熟悉 MISRA 的人可能想知道它是如何使用的。你真的必須記住所有這 127 條規則嗎?這就是靜態分析器可以提供幫助的地方。

靜態分析的目的是什么?

手動檢查代碼是否符合 MISRA 標準是一項漫長而乏味的工作。但實際上你不必記住所有這些規則。靜態代碼分析器可以為您完成所有工作。

靜態代碼分析是檢測計算機程序源代碼中的錯誤和小缺陷的過程。它可以被視為自動代碼審查。一些靜態分析器可以檢查代碼是否符合 MISRA 規則,正是這些工具將幫助您找到并修復程序中所有不符合規則的點。為此,您只需使用分析儀檢查您的項目并研究檢查結束時生成的分析報告。下面我將簡要演示如何使用 PVS-Studio 分析器和項目 Shairport 作為示例來執行此操作。PVS-Studio 可在此處下載。

克隆存儲庫。

pYYBAGK9Rq6AIaujAAE-aWH--yw308.png

運行構建配置腳本。

poYBAGK9RriASXBeAAF900aVcks432.png

在跟蹤模式下運行 PVS-Studio 并構建項目。

poYBAGK9RsGAXSjhAASMtsi8K7Q047.png

根據上一步的結果分析項目文件。

poYBAGK9RsmAN4kbAANhT7WmPYM112.png

將日志轉換為 html。

poYBAGK9RtOANvczAAFj9JPDt4k863.png

完畢。我們現在可以查看日志。

pYYBAGK9RtuAHx02AAR-jZpO5eI066.png

所以,我們今天了解了 MISRA:我們查看了一些規則,討論了為什么需要這些指南,如何將它們應用到您的項目中,等等。我希望這篇文章足夠有趣,不會讓你昏昏欲睡,而且仍然能提供豐富的信息,讓作者的工作值得。希望現在您對 MISRA 是什么以及需要什么靜態代碼分析器有了更好的理解。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7895

    瀏覽量

    153570
  • C++
    C++
    +關注

    關注

    22

    文章

    2116

    瀏覽量

    74696
  • 源代碼
    +關注

    關注

    96

    文章

    2950

    瀏覽量

    67751
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Helix QAC 2025.1 重磅發布!MISRA C:2025? 100%覆蓋

    和服務存儲占用。? 編碼規范支持(MISRA C:2025?、CERT C)? ? MISRA C:2025? 全規范覆蓋 Helix QAC 2025.1 提供全新的 MC25CM
    的頭像 發表于 05-13 16:48 ?118次閱讀
    Helix QAC 2025.1 重磅發布!<b class='flag-5'>MISRA</b> C:2025? 100%覆蓋

    MISRA C:2025新標準解析:新增規則、優化點與靜態代碼分析工具支持(Perforce QAC、Klocwork)

    MISRA C:2025?發布!新增5條規則,并對部分現有規則進行了擴展、重組,以進一步簡化安全關鍵型系統的開發流程。如何實現最新MISRA合規性?
    的頭像 發表于 05-08 17:58 ?400次閱讀
    <b class='flag-5'>MISRA</b> C:2025新<b class='flag-5'>標準</b>解析:新增規則、優化點與<b class='flag-5'>靜態</b><b class='flag-5'>代碼</b><b class='flag-5'>分析</b>工具支持(Perforce QAC、Klocwork)

    VirtualLab Fusion應用:光柵級次分析器

    VirtualLab Fusion中也可用。這種全矢量方法的結果是復數瑞利系數,它包含每階所需的所有場信息,從中可以獲得相應的效率。VirtualLab Fusion中的光柵順序分析器幫助我們生成并以圖像方式
    發表于 02-11 09:47

    用于 SPI 絕對編碼器的 Arduino 示例代碼

    (SPI) 通信來配置和讀取 [Same Sky] 的 [AMT22 絕對編碼器] 的數據。該教程將提供所需的硬件和軟件、關鍵設置要求以及單圈和多圈輸出選項的示例代碼包和說明。以下是入門工作所需的物料清單
    的頭像 發表于 01-26 21:35 ?671次閱讀
    用于 SPI 絕對<b class='flag-5'>編碼器</b>的 Arduino 示例<b class='flag-5'>代碼</b>

    VirtualLab:系統建模分析器

    ,系統建模分析器。本文檔介紹該工具的使用方法。 系統建模分析器 如何運行建模分析器 系統建模分析器 例1:光束清理濾波 示例 – 光
    發表于 01-14 09:45

    偏振分析器

    摘要 線柵偏振,可以使透射光產生線性偏振狀態,是眾多應用中常見的一種光學元件。由于它們的結構在亞波長范圍內,因此必須對光的傳播進行嚴格的處理。VirtualLab的偏振分析器及其內置的RCWA
    發表于 01-13 08:59

    VirtualLab Fusion:系統建模分析器

    ,系統建模分析器。本文檔介紹該工具的使用方法 系統建模分析器 如何運行建模分析器 系統建模分析器 例1:光束清理濾波 示例 – 光束
    發表于 01-04 08:45

    VirtualLab:系統建模分析器

    ,系統建模分析器。本文檔介紹該工具的使用方法。 系統建模分析器 如何運行建模分析器 系統建模分析器 例1:光束清理濾波 示例 – 光
    發表于 12-19 12:36

    如何測試TPA3118和TPA3116的靜態電流和靜態功耗?

    1.如何測試TPA3118和TPA3116的靜態電流和靜態功耗? 2.測試時候需要帶負載嘛?(是否需要接喇叭) 3.如果用萬用表測試應該怎么測?
    發表于 10-12 06:54

    汽車異構硬件平臺開發如何進行靜態代碼分析

    先進的靜態代碼分析工具,其新版本中引入的多CCT功能為開發人員提供了強大的支持,該功能不僅簡化了多編譯環境下的代碼
    的頭像 發表于 10-09 16:15 ?743次閱讀
    汽車異構硬件平臺開發如何進行<b class='flag-5'>靜態</b><b class='flag-5'>代碼</b><b class='flag-5'>分析</b>

    傳感的動態特性和靜態特性參數介紹

    傳感的特性可以分為靜態特性和動態特性兩大類,這兩類特性分別描述了傳感在不同輸入條件下的輸出響應特點。下面將詳細介紹這兩類特性的主要參數。
    的頭像 發表于 09-29 16:24 ?4844次閱讀

    embOS的MISRA-C:2012一致性

    MISRA C是汽車工業軟件可靠性協會(MISRA)開發的一套針對C編程語言的軟件開發指南,目的是提升嵌入式系統的安全性和可移植性。2012發布的MISRA C第三版,稱為MISRA
    的頭像 發表于 08-20 11:35 ?773次閱讀

    whitepaper-perforce-what-is-misra

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

    暫態穩定和靜態穩定的區別是什么

    暫態穩定和靜態穩定是電力系統穩定性分析中的兩個重要概念,它們分別描述了電力系統在受到擾動后的動態響應和穩態運行狀態。下面將介紹暫態穩定和靜態穩定的區別,并從多個方面進行比較。 定義上的區別 暫態穩定
    的頭像 發表于 07-26 09:41 ?4245次閱讀

    Perforce靜態代碼分析專家解讀MISRA C++:2023?新標準:如何安全、高效地使用基于范圍的for循環,防范未定義行

    MISRA C++:2023——MISRA? C++ 標準的下一個版本來了!為了幫助您了解 MISRA C++:2023相比于之前版本的變化,我們將繼續為您帶來Perforce首席技術
    的頭像 發表于 06-18 12:57 ?666次閱讀
    主站蜘蛛池模板: 色妞影视 | 久久久午夜精品 | 国产伦精一区二区三区 | 久久在线播放 | 夜夜福利 | 国产精品三级a三级三级午夜 | 扒开双腿爽爽爽视频www | 亚洲一区在线播放 | 日韩一级黄色录像 | 欧美日韩一日韩一线不卡 | 亚洲人成a在线网站 | 国产精品嫩草影院一二三区入口 | 中文字幕在线播放第一页 | 亚洲伊人成人 | 狠狠色伊人亚洲综合第8页 狠狠色依依成人婷婷九月 狠狠色影院 | 男女视频在线播放 | 久久综合九色综合精品 | 色婷婷激婷婷深爱五月老司机 | 最新人妖shemaletube人妖 最新日本免费一区二区三区中文 | 成人小视频在线 | 中文字幕一区在线播放 | 在线观看高清视频 | 日本网络视频www色高清免费 | 久久国产热视频 | 午夜想想爱午夜剧场 | 激情综合丝袜美女一区二区 | 国产呦精品系列在线 | 91在线色| 自偷自拍亚洲欧美清纯唯美 | 午夜视频免费在线观看 | 最新四虎4hu影库地址在线 | 日本一级黄色毛片 | 曰本又色又爽又黄三级视频 | 国产精品你懂的 | 美女h片| 国产欧美日韩va | 222www在线观看免费 | 四虎国产精品高清在线观看 | 国产精品久久久久久久久久妇女 | 免费抓胸吻胸激烈视频网站 | ts人妖另类国产 |