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

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

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

MISRA合規(guī)性的五個(gè)實(shí)用技巧

的撒的 ? 來(lái)源:發(fā)燒友520 ? 作者:發(fā)燒友520 ? 2022-07-22 08:06 ? 次閱讀

數(shù)十種工具旨在告訴您您的 C 或 C++ 代碼是否違反 MISRA 規(guī)則。但是,雖然識(shí)別和解決分析工具標(biāo)記的違規(guī)行為對(duì)于單個(gè)開(kāi)發(fā)人員來(lái)說(shuō)可能是一項(xiàng)重大挑戰(zhàn),但它僅代表整個(gè)開(kāi)發(fā)團(tuán)隊(duì)合規(guī)流程的一部分。

事實(shí)上,讓許多人感到驚訝的是,MISRA C:2012 文檔在定義指南之前就包含了六章指南!

回過(guò)頭來(lái)對(duì)違規(guī)行為進(jìn)行詳細(xì)分析,很容易看到關(guān)于整個(gè)過(guò)程的更大問(wèn)題。MISRA 的文檔“MISRA 合規(guī)性:2016”比語(yǔ)言子集本身受到的新聞報(bào)道要少得多,但它對(duì)于了解您選擇的靜態(tài)分析工具突出顯示的信息如何與 MISRA 合規(guī)應(yīng)用程序的大局相關(guān)聯(lián)非常寶貴。

很容易誤解 MISRA 合規(guī)性的性質(zhì),并假設(shè)最小化的違規(guī)計(jì)數(shù)可確保優(yōu)化的應(yīng)用程序安全性。但要有效,MISRA 指南需要在一個(gè)框架內(nèi)應(yīng)用,該框架利用合規(guī)代碼的優(yōu)勢(shì)并管理任何必要的偏差,以使合規(guī)概念具有可信度。

MISRA 合規(guī)性:2016 文檔長(zhǎng)達(dá) 33 頁(yè),像這樣的短文無(wú)法觸及它討論的所有內(nèi)容。但是,它可以讓我們深入了解合規(guī)項(xiàng)目的外觀。這些提示源自 MISRA 合規(guī)性文件本身概述的原則,它們反映了一點(diǎn)技術(shù)智慧和很多常識(shí)。

提示 1. MISRA 合規(guī)性需要記錄在案的軟件開(kāi)發(fā)過(guò)程

MISRA 指南旨在用于正式軟件開(kāi)發(fā)過(guò)程的框架內(nèi)(如圖 1 所示)。這樣的過(guò)程將確保完整、明確和正確的軟件需求,并且所有且僅這些需求都反映在開(kāi)發(fā)生命周期的每個(gè)階段創(chuàng)建的人工制品中。

圖 1:結(jié)構(gòu)化開(kāi)發(fā)生命周期對(duì)于 MISRA 合規(guī)性至關(guān)重要,如 LDRA 工具套件的 TBmanager 組件中的“Uniview”所示。(來(lái)源:LDRA)

如果您的代碼沒(méi)有違反規(guī)定但沒(méi)有滿足其要求的功能,那么它仍然是糟糕的代碼。

提示 2. 并非所有 MISRA 指南都可以通過(guò)分析工具進(jìn)行檢查

MISRA C:2012 指南引入了一個(gè)系統(tǒng),在該系統(tǒng)下,每條指南都被分類為規(guī)則或指令。

通常,規(guī)則定義得足夠好,可以通過(guò)自動(dòng)化工具進(jìn)行檢查,而指令可能更主觀一些。例如,MISRA C:2012 的指令 1.1 要求“程序輸出所依賴的任何實(shí)現(xiàn)定義的行為都應(yīng)記錄并理解”。

在 MISRA C:2012 中,一些規(guī)則被標(biāo)記為“不可判定”,這意味著基本上不可能有一種方法可以確定是否存在違規(guī)行為。工具可能會(huì)警告潛在的問(wèn)題,也可能不會(huì)。無(wú)論哪種方式,都需要某種程度的人工干預(yù)。

并非所有工具都相同。有些人會(huì)聲稱對(duì)規(guī)則的覆蓋范圍比其他人多,而有些人則無(wú)法進(jìn)行更微妙的侵權(quán)。顯示“無(wú)違規(guī)”的工具可能實(shí)際上是在說(shuō)“沒(méi)有違規(guī),除了我沒(méi)有發(fā)現(xiàn)的那些”。

牛津詞典對(duì)“工具”的定義是“用來(lái)幫助完成工作的東西”。工具有幫助——它們不會(huì)為你完成這項(xiàng)工作。

提示 3. 指南只有在有執(zhí)行計(jì)劃時(shí)才有用

對(duì)于大多數(shù)指南,最簡(jiǎn)單、最可靠和最具成本效益的實(shí)施方式是使用靜態(tài)分析工具、編譯器或兩者的組合(參見(jiàn)圖 2)。

圖 2:使用 LDRA 靜態(tài)分析工具強(qiáng)制遵守 MISRA C:2012(來(lái)源:LDRA)

對(duì)于這些指南,重要的是要確保要使用的工具已被證明是合適的,并且它的類型和版本是指定和固定的。

對(duì)于那些需要手動(dòng)驗(yàn)證的指南,還必須制定執(zhí)行計(jì)劃。

提示 4. “偏差”不是一個(gè)骯臟的詞

對(duì)于任何現(xiàn)實(shí)生活中的嵌入式應(yīng)用程序,很可能一些違規(guī)行為是不可避免的。如果對(duì)由此產(chǎn)生的應(yīng)用程序的任何合規(guī)性聲明是可信的,則必須通過(guò)明確定義的流程授權(quán)管理這些違規(guī)行為,并由適當(dāng)?shù)摹捌钣涗洝蔽臋n支持。

這些偏差記錄需要包括違反的準(zhǔn)則、這種/這些違反的理由、偏差適用的情況以及它在代碼庫(kù)中的應(yīng)用位置。

Tip 5. 采用的代碼不能被忽略

與功能安全的嵌入式軟件相關(guān)的許多文檔和許多標(biāo)準(zhǔn)都是從“綠地”項(xiàng)目的假設(shè)開(kāi)始的。在現(xiàn)實(shí)生活中,開(kāi)發(fā)人員需要利用內(nèi)部遺留代碼或第三方代碼,例如設(shè)備驅(qū)動(dòng)程序、數(shù)學(xué)庫(kù)或圖形庫(kù)。

盡管將 MISRA 準(zhǔn)則追溯應(yīng)用于此類代碼顯然是不切實(shí)際的,但要聲稱符合 MISRA,重要的是要確保這種所謂的“采用的代碼”不會(huì)損害整個(gè)系統(tǒng)的安全性。

許多根據(jù) ISO 26262、IEC 61508 和 DO-178C 等標(biāo)準(zhǔn)開(kāi)發(fā)的功能安全系統(tǒng)都利用 MISRA 語(yǔ)言子集,這并非巧合,而且很容易假設(shè) MISRA 合規(guī)性僅適用于這些環(huán)境。

但那將是謬誤。同樣真實(shí)的是,除了語(yǔ)言子集本身的指導(dǎo)方針之外,在 MISRA 合規(guī)之前要滿足的許多基本要求可以合理地歸結(jié)為一種常識(shí)方法,以及對(duì)“正確行事”的奉獻(xiàn)精神。這不能是關(guān)鍵系統(tǒng)社區(qū)的專屬特權(quán),因?yàn)橄到y(tǒng)在有動(dòng)力可靠地工作之前不必是關(guān)鍵的。

審核編輯:郭婷

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

    關(guān)注

    21

    文章

    2102

    瀏覽量

    73457
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1617

    瀏覽量

    49019
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    海外爬蟲(chóng)IP的合法邊界:規(guī)探討與實(shí)踐

    海外爬蟲(chóng)IP的合法邊界主要涉及規(guī)探討與實(shí)踐。
    的頭像 發(fā)表于 10-12 07:56 ?157次閱讀

    TI Wi-Fi器件的CE規(guī)測(cè)試程序

    電子發(fā)燒友網(wǎng)站提供《TI Wi-Fi器件的CE規(guī)測(cè)試程序.pdf》資料免費(fèi)下載
    發(fā)表于 09-23 11:14 ?0次下載
    TI Wi-Fi器件的CE<b class='flag-5'>合</b><b class='flag-5'>規(guī)</b><b class='flag-5'>性</b>測(cè)試程序

    精密ADC系統(tǒng)EMC規(guī)測(cè)試應(yīng)用說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《精密ADC系統(tǒng)EMC規(guī)測(cè)試應(yīng)用說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 09-12 09:18 ?0次下載
    精密ADC系統(tǒng)EMC<b class='flag-5'>合</b><b class='flag-5'>規(guī)</b><b class='flag-5'>性</b>測(cè)試應(yīng)用說(shuō)明

    DP83822 Profinet規(guī)電纜斷裂測(cè)試

    電子發(fā)燒友網(wǎng)站提供《DP83822 Profinet規(guī)電纜斷裂測(cè)試.pdf》資料免費(fèi)下載
    發(fā)表于 09-03 10:27 ?0次下載
    DP83822 Profinet<b class='flag-5'>合</b><b class='flag-5'>規(guī)</b><b class='flag-5'>性</b>電纜斷裂測(cè)試

    LMK6H和LMKDB1xxx PCI Express規(guī)報(bào)告

    電子發(fā)燒友網(wǎng)站提供《LMK6H和LMKDB1xxx PCI Express規(guī)報(bào)告.pdf》資料免費(fèi)下載
    發(fā)表于 08-29 09:47 ?0次下載
    LMK6H和LMKDB1xxx PCI Express<b class='flag-5'>合</b><b class='flag-5'>規(guī)</b><b class='flag-5'>性</b>報(bào)告

    LMK6H PCI Express規(guī)報(bào)告

    電子發(fā)燒友網(wǎng)站提供《LMK6H PCI Express規(guī)報(bào)告.pdf》資料免費(fèi)下載
    發(fā)表于 08-29 09:44 ?0次下載
    LMK6H PCI Express<b class='flag-5'>合</b><b class='flag-5'>規(guī)</b><b class='flag-5'>性</b>報(bào)告

    LMKDB1xxx PCI Express規(guī)報(bào)告

    電子發(fā)燒友網(wǎng)站提供《LMKDB1xxx PCI Express規(guī)報(bào)告.pdf》資料免費(fèi)下載
    發(fā)表于 08-29 09:44 ?0次下載
    LMKDB1xxx PCI Express<b class='flag-5'>合</b><b class='flag-5'>規(guī)</b><b class='flag-5'>性</b>報(bào)告

    DP8382x IEEE 802.3u規(guī)和調(diào)試

    電子發(fā)燒友網(wǎng)站提供《DP8382x IEEE 802.3u規(guī)和調(diào)試.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 10:33 ?0次下載
    DP8382x IEEE 802.3u<b class='flag-5'>合</b><b class='flag-5'>規(guī)</b><b class='flag-5'>性</b>和調(diào)試

    如何配置DP8386x以進(jìn)行以太網(wǎng)規(guī)測(cè)試

    電子發(fā)燒友網(wǎng)站提供《如何配置DP8386x以進(jìn)行以太網(wǎng)規(guī)測(cè)試.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 09:37 ?1次下載
    如何配置DP8386x以進(jìn)行以太網(wǎng)<b class='flag-5'>合</b><b class='flag-5'>規(guī)</b><b class='flag-5'>性</b>測(cè)試

    DP83TC811:Open Alliance規(guī)范規(guī)測(cè)試所用的配置

    電子發(fā)燒友網(wǎng)站提供《DP83TC811:Open Alliance規(guī)范規(guī)測(cè)試所用的配置.pdf》資料免費(fèi)下載
    發(fā)表于 08-27 09:50 ?0次下載
    DP83TC811:Open Alliance規(guī)范<b class='flag-5'>合</b><b class='flag-5'>規(guī)</b><b class='flag-5'>性</b>測(cè)試所用的配置

    embOS的MISRA-C:2012一致

    MISRA C是汽車工業(yè)軟件可靠協(xié)會(huì)(MISRA)開(kāi)發(fā)的一套針對(duì)C編程語(yǔ)言的軟件開(kāi)發(fā)指南,目的是提升嵌入式系統(tǒng)的安全和可移植。2012
    的頭像 發(fā)表于 08-20 11:35 ?398次閱讀

    whitepaper-perforce-what-is-misra

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

    EMC測(cè)試整改:提升產(chǎn)品規(guī)和市場(chǎng)競(jìng)爭(zhēng)力?

    EMC測(cè)試整改:提升產(chǎn)品規(guī)和市場(chǎng)競(jìng)爭(zhēng)力?|深圳比創(chuàng)達(dá)電子
    的頭像 發(fā)表于 03-07 09:51 ?516次閱讀
    EMC測(cè)試整改:提升產(chǎn)品<b class='flag-5'>合</b><b class='flag-5'>規(guī)</b><b class='flag-5'>性</b>和市場(chǎng)競(jìng)爭(zhēng)力?

    EMC測(cè)試整改:提升產(chǎn)品規(guī)和市場(chǎng)競(jìng)爭(zhēng)力?|深圳比創(chuàng)達(dá)電子

    EMC測(cè)試整改:提升產(chǎn)品規(guī)和市場(chǎng)競(jìng)爭(zhēng)力?|深圳比創(chuàng)達(dá)電子在當(dāng)前的產(chǎn)品研發(fā)和制造領(lǐng)域,電磁兼容(EMC)測(cè)試是確保產(chǎn)品符合法規(guī)要求并能夠在各種電磁環(huán)境下正常工作的重要環(huán)節(jié)。然而,很多企業(yè)在進(jìn)行
    發(fā)表于 03-07 09:50

    移遠(yuǎn)通信聲明: 關(guān)于移遠(yuǎn)產(chǎn)品用途及安全規(guī)的澄清

    移遠(yuǎn)通信聲明: 關(guān)于移遠(yuǎn)產(chǎn)品用途及安全規(guī)的澄清
    的頭像 發(fā)表于 01-06 08:28 ?368次閱讀
    移遠(yuǎn)通信聲明: 關(guān)于移遠(yuǎn)產(chǎn)品用途及安全<b class='flag-5'>合</b><b class='flag-5'>規(guī)</b><b class='flag-5'>性</b>的澄清