在開發過程中,越早發現并消除軟件錯誤,成本就越低。QA-MISRA檢查源代碼中的900多個潛在軟件錯誤。通過使用QA-MISRA進行靜態分析,可以在早期階段輕松發現危險結構以及安全、維護和移植問題。
C/C++代碼的快速分析
QA-MISRA可以非??焖俚胤治龃罅繌碗s的軟件包,不管大小如何。這簡化了質量管理,并幫助用戶遵守相關的安全標準。用戶的代碼是否符合項目所需的標準?
可靠、可移植、可維護
使用QA-MISRA檢查的程序代碼可靠、可移植且易于維護。因為有了QA-MISRA,用戶的軟件變得更統一、更簡單、更強大。
安全關鍵標準合規性
QA MISRA自動檢查用戶的C或C++代碼符合MISRA和AUTOSAR規則,以及安全標準:SEI Cert C/C++,CWE,ISO/IEC TS 17961,HIS Metrics等。
靜態代碼分析
靜態分析持續檢查和報告軟件缺陷、語言實現錯誤、不一致、危險用法、編碼標準違背和安全漏洞。
? 早期檢測缺陷,防止代價昂貴的錯誤
QA-MISRA檢查源代碼中的900多個潛在軟件錯誤。通過使用QA-MISRA進行靜態分析,可以在早期階段輕松發現危險結構以及安全、維護和移植問題。
? 生產干凈的行為可預測的代碼
即使是符合ISO標準的軟件,其行為也可能與預期不同,因為并非所有在開發過程中可能導致問題的因素都被安全標準歸類為不正確。這就是為什么使用QA-MISRA進行靜態分析也會顯示代碼中經常被開發人員和編譯器忽略的問題。QA-MISRA中的測試完全自動化,節省了寶貴的開發人員資源。
? 監控代碼庫 – 綜合的可配置報告
綜合報告幫助用戶查找問題,顯示應該加以留意的地方。
? 規性報告,指出需要更多工作以提高合規程度的區域
? 分類報告,檢測出的規則違背由用戶進行分類
? 度量報告,提供文本、HTML和CSV格式的度量數據
? 違反約束
QA-MISRA可以幫助用戶在語法正確但語義不正確、未指定或未定義的代碼中查找錯誤。在某些情況下,這可能會導致編譯器產生錯誤并停止工作,但QA-MISRA也可以檢測到不妨礙編譯器工作的錯誤。
? 跨多個模塊的分析
QA-MISRA識別鏈接器無法解決的不合規行為。整個項目中的外部對象和函數的遞歸以及相互矛盾的聲明很容易被檢測到。
? 可移植性
QA-MISRA促使代碼在不同的編譯器和平臺之間保持一致,同時認識到標準的局限、語言擴展和實現定義的行為。
? 類型轉換
QA-MISRA確定數據類型之間的隱式轉換(默認參數、整數提升、函數返回)。
? 冗余代碼
QA-MISRA檢測未使用的變量、函數和參數以及結果不會改變的條件(始終為真或始終為假)。
? 語句和操作
QA-MISRA可檢測可疑的比較操作,包括使用不正確的類型,并可以發現會產生誤解或難以理解和維護的結構,即使它們是允許使用的 。
? 命名規范
QA-MISRA通過正則表達式鼓勵使用統一格式。所有標識符都可以檢查 。
對標準的符合性
QA-MISRA的開發是與MISRA委員會專家密切合作的成果。如何理解和改進報告的MISRA違規行為?它為開發人員提供了全面的知識庫和廣泛的示例代碼,幫助遵守MISRA標準。
? 未來趨勢——內嵌的
無論軟件開發市場走向何方,使用QA-MISRA的用戶將始終處于領先地位。畢竟,作為“行業標準”,MISRA的規則集將保持并加強其地位。
? 高度可配置性
QA-MISRA的特殊之處:QA-MISRA可以定制為在用戶的開發環境中工作,具有高度可配置的MISRA合規性規則集,用于定義公司特定的子集以檢查合規性。
? 更好的軟件
QA-MISRA通過有效檢測代碼中的錯誤、不一致性、過時功能和對標準的一般違反,確保用戶的軟件滿足MISRA標準的嚴格要求。錯誤可以在成本效益仍然可以實現的階段糾正。
? 更好的理解——一致性開發
QA-MISRA確保用戶的所有代碼都符合MISRA規則。而且它有助于開發人員在軟件中安全使用C和C++語言同時滿足MISRA標準。使用QA-MISRA開發的代碼往往不那么復雜,因為單個開發人員和團隊可以遵循一致的標準。
? 可測試、可維護和可移植
使用QA-MISRA創建的軟件可以在開發的所有階段進行測試。如果軟件符合MISRA標準,那么代碼的維護和移植就容易多了。
? 縮短上市時間
可以在非常早期的階段可靠地識別和糾正錯誤,從而使用戶能夠更快地發布軟件,而不會危及質量。
(一) 使用QA-MISRA促進MISRA合規性
? MISRA C
MISRA
C最初是為了滿足1994年“車載軟件開發指南”中確定的“標準化編程語言的限制子集”的需要而開發的,它的開發也反映了在汽車應用中使用C開發嵌入式軟件的新興要求。MISRA
C發布后,其與其他應用的相關性很快被注意到,隨后的標準修訂涉及來自不同行業和工具供應商的許多專家。今天,MISRA
C是使用C開發軟件的事實上的標準,在這些軟件中安全性、保全性和代碼質量非常重要。MISRA
C的未來發展將繼續擴展對語言的新版本和其他特性的支持。
? MISRA C++
認識到C++在關鍵應用中的使用日益增加,MISRA
C++最初發表于2008年6月。最近的工作是在修訂本上開始的,2017年MISRA宣布將把AUTOSAR C++指南整合進新版的MISRA
C++中。MISRA指南將結合最新版本的C++語言——C++17——以及將來發布的C++20。
? 更安全的C/C++語言子集
所有編程語言(包括ISO
C和C++標準)都含有未經完全指定或定義的用法,對相同的語言結構不同的編譯器有不同的實現。對安全關鍵的系統來說,MISRA中的“建議(Advisory)”和“要求(Required)”類規則定義了C和C++的一個更安全的子集,用以改善程序可移植性、安全性和保全性。這些子集合只是完整語言的一個受限版本,因此可以使用標準的商業現成工具鏈,同時提供更安全的程序,在不同環境中按照程序員的預期運行。
(二) 使用QA-MISRA促進AUTOSAR合規性
? 用于自動和互聯車輛技術的AUTOSAR“自適應平臺”
互聯與自動駕駛技術正在快速大幅發展,這些變化要求對新的和現有的ECU軟件平臺都有全新的開發要求。
AUTOSAR為高度自主和互聯網連接的駕駛技術開發的新“自適應平臺”標準有助于滿足這些快速增長的市場需求。
推動自適應平臺標準的一些技術包括:高性能32-/64位微處理器(帶外部存儲器)、并行處理、高帶寬通信。
(三) 使用QA-MISRA促進CERT C/C++合規性
通過將應用程序安全措施合并到用戶的設計和編碼過程中,實現一個嚴格的、可重復的、以安全為中心的開發過程。我們的自動化靜態分析工具可幫助用戶:
? 什么是軟件漏洞?
CERT將漏洞描述為影響信息系統安全性的軟件缺陷。該缺陷可能很小,因為它不會影響軟件產生的性能或結果,但可能會被導致嚴重違反安全性的攻擊所利用。CERT估計,高達90%的報告安全事件是由于利用軟件代碼或設計中的缺陷造成的。
(四) 使用QA-MISRA促進CWE合規性
CWE提供了已知弱點的綜合存儲庫,而CERT C安全編碼標準確定了可能暴露軟件弱點的不安全編碼結構。
并非所有CERT C編碼指南都直接映射到CWE中的弱點,因為某些編碼錯誤可能以各種方式表現出來,而這些方式與任何給定的弱點都沒有直接關聯。同樣,CWE確定的并非所有弱點都存在于編碼標準中,因為有些弱點與高級設計有關。
CWE由一系列視圖組成,如dictionary視圖和development視圖。CWE-734視圖列舉了CERT C安全編碼標準解決的弱點,包括799個CWE中的103個。如果開發者遵守CERT編碼標準,他們可以完全或部分防止CWE-734中確定的弱點。
持續集成
(一) 什么是持續集成
持續集成原則鼓勵開發人員和團隊不斷地共享和集成他們的所有貢獻。
? 遠離夜間構建的概念,轉而接受連續構建的概念
? 遠離政策執行,轉而依靠質量執行
目標是獲得對軟件驗證和軟件依賴性的完全和自動化的控制,這樣每個開發人員都有可能成為發布候選。
可以在命令行上運行測試工具,以便它們可以輕松地與許多CI工具集成。
(二) 關鍵軟件的以測試為中心的過程
QA-MISRA和CANTATA一起支持驗證代碼的靜態和動態方面。靜態分析有助于在執行代碼動態測試之前檢測缺陷,節省時間。軟件單元和集成測試驗證正確的行為,以及不會發生不正確的行為,同時檢查代碼的執行路徑和驗證需求。每個階段的自動化功能以及與CI構建系統和需求收集工具的可靠集成,將手動測試的需求降至最低。所有這些加起來大大減少了缺陷,并通過在開發周期中更快、更早地識別問題節省了時間。
(三) Jenkins插件
我們為靜態分析解決方案倡導的“早期且經?!钡姆椒@然與持續集成理念產生了共鳴,這種理念正越來越多地被作為軟件質量的可靠方法采用。
Jenkins插件將允許用戶自動化啟用的C和C++項目的分析,將分析作為持續集成過程的一部分來執行。
該插件提供了一系列功能,包括:
? 自動檢查每個Jenkins構建是否違反規則
? 直接在Jenkins工作區中歸檔分析報告
? 通過Jenkins web界面訪問分析結果
? 根據用戶的標準,根據分析結果自動將生成標記為錯誤
? 將不同版本的分析作為單獨的分析修訂版啟動,以便于調試和記錄進度
功能指標
主要利益
? 降低成本,同時縮短上市時間
? 降低程序失敗的風險
? 在開發周期的早期識別編碼問題
? 確保符合代碼質量和編碼標準
? MISRA標準的完全集成環境
? 適用于需要安全關鍵軟件的所有行業
? 加速并重新聚焦代碼評審過程,并改進開發團隊的協作
? 提升開發人員的專業技能并推廣最佳實踐
? 增強可靠性、可移植性和可維護性
? 提高代碼的可移植性和可重用性
? 開發環境中的即時和可重復測試
主要特征
QA-MISRA是一種靜態分析器,旨在檢查符合C90、C99、C11、C18和C++98、C++11、C++14、C++17語言規范的安全關鍵C/C++程序的編碼準則,計算代碼度量。
? 快速易用
? 實施編碼準則,包括MISRAC:2004、MISRA-C:2012和定制規則集
? 在句法規則上沒有漏報和誤報
? 與Astrée無縫集成,確保語義規則的零漏報和最小誤報
? 代碼度量的計算:HIS度量和定制度量
? 強制執行度量閾值
? 報告的代碼問題的完全可跟蹤性
? 交互式結果探索
? 調查結果的穩健分類
? 可配置報告文件生成
? 項目進度和分析修訂的跟蹤和可視化
? 客戶機/服務器體系結構,具有分析請求的隊列處理,以及集中的用戶管理和身份驗證
? 具有開放接口和開放文件格式的獨立工具
? MATLAB集成與TargetLink耦合
? 根據安全標準進行自動工具合格審定
基本功能
? 命令行接口
? 交互式圖形用戶界面
? 在線幫助和MISRA知識庫
? 概要和詳細報告
? 集成到基于Eclipse的IDE中
代碼分析功能
? 快速源代碼分析
? 警報可根據注釋進行分類
? ISO/IEC 9899:1990 (C90)
? ISO/IEC 9899:1999 (C99)
? ISO/IEC 9899:2011 (C11)
? ISO/IEC 9899:2018 (C18)
? ISO/IEC 14882:2011 (C++11)
? ISO/IEC 14882:2014 (C++14)
? ISO/IEC 14882:2017 (C++17)
持續集成環境
? Jenkins
? 其他CI環境可以通過命令行集成
支持的編程標準
? MISRA C:2004
? MISRA C:2012
? MISRA C:2012 修訂 1&2
? MISRA AC AGC
? HIS Metrics
? ISO/IEC TS 1796安全關鍵標準
? SEI CERT C 編程規范
? SEI CERT C++ 編程規范
? CWE
? MISRA C++:2008
? Adaptive AUTOSAR C++14
? 命名規范檢查
? 可擴展的規則集
安全關鍵標準
通過使用“合格審定支持工具包”,QA-MISRA支持以下安全標準:
? SO 26262:2018(汽車電子)
? EN 50128:2011/A2:2020(軌道交通)
? EN 50657:2017(鐵路軌道)
? IEC 62304:2006(醫療器械)
? IEC 61508:2010(工業自動化)
? DO-178B(航空航天與國防)
? DO-178C / DO-330(航空航天與國防)
系統需求
? Windows:64位Windows10
? Linux:64位CentOS/RHEL 7或其他兼容發行版
? 4 GB RAM(建議使用16 GB)
? 4 GB存儲空間1:2013(C安全編碼規則)