汽車工業軟件可靠性協會(MISRA)的「關鍵系統中使用C語言的指南」(稱爲MISRA C 2012)是對C語言子集的定義,旨在最大限度地減小潛在的錯誤、安全漏洞和致使程序失敗或嚴重錯誤的錯誤。雖然最初是爲汽車系統建立的,但該指南已被許多其餘行業的安全關鍵型應用所採用。在全部狀況下,肯定合規性(在供應商/客戶關係中愈來愈多的要求)是複雜和耗時的。瀏覽器
市場上有許多工具能夠報告錯誤,代表代碼什麼時候違反了指南,但不多有工具可以簡化證實合規性所需的報告和文檔流程——更不用說將指南實施到你的軟件開發流程中了。爲了簡化在整個產品生命週期中實現、記錄和維護MISRA合規性的整個過程,咱們設計了咱們的報告和分析平臺(Parasoft DTP),與咱們的C和C++測試工具C/C++test一塊兒帶來自動化和協助。在這篇文章中,我想要更好地解釋你能夠如何一塊兒利用這些工具,使MISRA的合規性再也不那麼頭疼。安全
合規是一種二元狀態——代碼要麼合規,要麼不合規,MISRA準則但願全部的代碼都能符合標準中的指令和規則。所以,在一個大型複雜的項目中實現徹底合規性並非一件容易的事情。除了挑戰以外,許多供應商/客戶關係還要求經過文件證實對標準的遵照。工具
爲了更好地明確實施MISRA編碼指南的程序,MISRA在2016年發佈了合規性指南,以幫助開發組織實現和記錄合規性。爲了經過自動化來簡化這一過程,須要如下幾點:性能
考慮到這些準則,咱們設計了報告和分析平臺(DTP),以定製和擴展C/C++test的部署,提供智能分析,讓利益相關者更深刻地瞭解測試覆蓋率和變動引入的風險。對於MISRA標準,DTP簡化了實現、執行和記錄合規性的過程,同時證實了功能、性能和安全性。測試
項目當前的合規狀態是一個重要的衡量標準,衡量合規性的各類細枝末節也是如此。DTP提供了一個全面的MISRA合規性儀表盤,能夠對項目進行現場評估。這種高層次的視圖對管理人員和開發人員都很重要,它爲管理人員提供了一個一目瞭然的合規性視圖,併爲開發人員提供了一個實現合規性進展的起點,有助於肯定工做的優先級。編碼
圖1:DTP的MISRA合規性儀表板示例。spa
除了MISRA合規儀表盤,Parasoft還提供了一個完整的合規包,專門針對MISRA的合規文件要求。DTP的MISRA合規包根據MISRA Compliance:2016指南提供了自動文檔,大大減小了向認證機構證實合規性所需的時間和精力。這些功能包括:設計
MISRA準則執行計劃展現瞭如何對每條MISRA準則進行覈查。在大多數狀況下,這顯示了MISRA指令或規則與相關代碼分析規則或DTP功能之間的聯繫。請看下面的例子:3d
圖2:DTP的MISRA準則執行計劃報告的一個例子。blog
MISRA準則從新分類計劃用於傳達商定的準則的重要性,做爲供應商/客戶關係的一部分。該文件展現瞭如何針對當前項目對每條準則進行具體分類。強制性和要求的準則不能降級到較低的級別;可是,一個項目能夠決定將要求的或諮詢的準則升級到更嚴格的設置,諮詢的能夠不被採納(即,使其成爲不須要遵照的準則)。請看下面一個從新分類計劃的例子:
圖3:DTP的MISRA從新分類計劃報告的一個例子。
MISRA偏離報告記錄了偏離準則的行爲,並提出適當的理由。任什麼時候候,只要發現了違反規則的行爲,但容許其繼續存在,就必須記錄在誤差報告中。在大多數狀況下,這些都是代碼分析中報告的被抑制的錯誤。下面是一個示例報告:
圖4:DTP的MISRA誤差報告示例
遵照狀況摘要是項目整體遵照狀況的主要記錄。該報告記錄了每項準則的遵照狀況,以及任何相關的偏離或從新分類。下面是一個例子:
圖5:DTP的MISRA遵照狀況報告的一個例子。
在大多數狀況下,在分析源代碼是否符合MISRA的要求時,違規行爲是靜態分析規則違規。在一個大型項目中,最初會有不少錯誤報告,快速有效地管理它們是相當重要的。DTP Violations Explorer是導航、評估、優先處理和分配報告的錯誤以進行補救的關鍵工具。若是靜態分析規則的違反被證實是有效的,但合理的,被認爲是無害的,或不適用,開發人員能夠抑制錯誤,並記錄誤差。這些誤差經過項目的每一個級別向上報告,到儀表板和合規性文檔。下圖是違規瀏覽器的一個例子:
圖6:在DTP違規資源管理器中正在調查的違規實例。
總之,在開發安全關鍵型軟件時,MISRA標準提供了一套全面的準則,以防止安全漏洞和程序失敗。然而,應用這些準則和證實合規性可能會過於繁瑣,簡化這項工做對於確保軟件按時交付相當重要。
要讓軟件幫助你完成這項工做,你能夠:
最後,在整個生命週期中支持MISRA合規性對於持續執行和可追溯性很是重要,根據MISRA Compliance:2016指南,自動化文檔是節省處理該指南的時間和挫折的關鍵。