一、產(chǎn)品概述
在開發(fā)過程中,越早發(fā)現(xiàn)并消除軟件錯(cuò)誤,成本就越低。通過使用QA MISRA進(jìn)行代碼的靜態(tài)分析,可以在早期階段發(fā)現(xiàn)危險(xiǎn)結(jié)構(gòu)、安全、維護(hù)和移植問題。
QA MISRA可以快速地分析大量復(fù)雜的軟件包。這樣簡(jiǎn)化了質(zhì)量管理,并幫助用戶遵守相關(guān)的安全標(biāo)準(zhǔn),用戶的代碼是否符合項(xiàng)目所需的規(guī)范。
使用QA MISRA檢查的用戶代碼可靠性、可移植性及易維護(hù)性。應(yīng)用QA MISRA,使得用戶的軟件變得更統(tǒng)一、更簡(jiǎn)單、更健壯。
QA MISRA能自動(dòng)檢查用戶的C/C++代碼是否符合 MISRA 和 AUTOSAR 規(guī)則,及安全標(biāo)準(zhǔn),如SEI Cert C/C++,CWE,ISO/IEC TS 17961,HIS Metrics等。
二、功能特性
1、靜態(tài)代碼分析
靜態(tài)分析持續(xù)檢查和報(bào)告軟件缺陷、語言實(shí)現(xiàn)錯(cuò)誤、不一致、危險(xiǎn)用法、編碼標(biāo)準(zhǔn)的違背和安全漏洞。
早期檢測(cè)缺陷,防止昂貴代價(jià)的錯(cuò)誤
QA MISRA 檢查源代碼中的900多個(gè)潛在的軟件錯(cuò)誤。通過使用QA MISRA 進(jìn)行靜態(tài)分析,可以在早期階段發(fā)現(xiàn)危險(xiǎn)結(jié)構(gòu)、安全、維護(hù)和移植等問題。
產(chǎn)生干凈的行為可預(yù)測(cè)的代碼
即使是符合ISO標(biāo)準(zhǔn)的軟件,其行為也可能與預(yù)期不同,因?yàn)椴⒎撬性陂_發(fā)過程中可能導(dǎo)致問題的因素都被安全標(biāo)準(zhǔn)歸類為不正確。這就是為什么使用 QA MISRA 進(jìn)行靜態(tài)分析也會(huì)顯示代碼中經(jīng)常被開發(fā)人員和編譯器忽略的問題。QA MISRA 的測(cè)試完全自動(dòng)化功能,可以節(jié)省寶貴的開發(fā)資源。
監(jiān)控代碼庫 – 綜合的可配置報(bào)告
綜合報(bào)告幫助用戶查找問題,顯示應(yīng)該留意的地方。
合規(guī)性報(bào)告,指出需要更多工作以提高合規(guī)程度的區(qū)域。
分類報(bào)告,檢測(cè)出的規(guī)則違背部分由用戶進(jìn)行分類。
度量報(bào)告,提供文本、HTML 和 CSV 格式的度量數(shù)據(jù)。
違反約束
QA MISRA可以幫助用戶在語法正確但語義不正確、未指定或未定義的代碼中查找錯(cuò)誤。在某些情況下,這可能會(huì)導(dǎo)致編譯器產(chǎn)生錯(cuò)誤并停止工作,但 QA MISRA可以檢測(cè)到不妨礙編譯器工作的錯(cuò)誤。
跨多個(gè)模塊的分析
QA MISRA 識(shí)別鏈接器無法解決的不合規(guī)行為。整個(gè)項(xiàng)目中的外部對(duì)象和函數(shù)的 遞歸以及相互矛盾的聲明很容易被檢測(cè)到。
可移植性
QA MISRA 促使代碼在不同的編譯器和平臺(tái)之間保持一致,同時(shí)認(rèn)識(shí)到標(biāo)準(zhǔn)的局 限、語言擴(kuò)展和實(shí)現(xiàn)定義的行為。
類型轉(zhuǎn)換
QA MISRA 確定數(shù)據(jù)類型之間的隱式轉(zhuǎn)換(默認(rèn)參數(shù)、整數(shù)提升、函數(shù)返回)。
冗余代碼
QA MISRA檢測(cè)未使用的變量、函數(shù)和參數(shù)以及結(jié)果不會(huì)改變的條件(始終為真 或始終為假)。
語句和操作
QA MISRA 可檢測(cè)可疑的比較操作,包括使用不正確的類型,并可以發(fā)現(xiàn)會(huì)產(chǎn)生 誤解或難以理解和維護(hù)的結(jié)構(gòu),即使它們是允許使用的。
命名規(guī)范
QA MISRA 通過正則表達(dá)式鼓勵(lì)使用統(tǒng)一格式。所有標(biāo)識(shí)符都可以檢查。
2、對(duì)標(biāo)準(zhǔn)的符合性
QA MISRA 的開發(fā)是與 MISRA 委員會(huì)專家密切合作的成果。如何理解和改進(jìn)報(bào)告 的 MISRA 違規(guī)行為?它為開發(fā)人員提供了全面的知識(shí)庫和廣泛的示例代碼,幫助遵守 MISRA 標(biāo)準(zhǔn)。
未來趨勢(shì)——內(nèi)嵌的
無論軟件開發(fā)市場(chǎng)走向何方,使用QA MISRA的用戶將始終處于領(lǐng)先地位。畢竟,作為“行業(yè)標(biāo)準(zhǔn)”,MISRA 的規(guī)則集將保持并加強(qiáng)其地位。
高度可配置性
QA MISRA 的特殊之處:QA MISRA 可以定制為在用戶的開發(fā)環(huán)境中工作,具有 高度可配置的 MISRA 合規(guī)性規(guī)則集,用于定義公司特定的子集以檢查合規(guī)性。
更好的軟件
QA MISRA 通過有效檢測(cè)代碼中的錯(cuò)誤、不一致性、過時(shí)功能和對(duì)標(biāo)準(zhǔn)的一般違 反,確保用戶的軟件滿足 MISRA 標(biāo)準(zhǔn)的嚴(yán)格要求。錯(cuò)誤可以在成本效益仍然可以實(shí)現(xiàn) 的階段糾正。
更好的理解——一致性開發(fā)
QA MISRA 確保用戶的所有代碼都符合 MISRA 規(guī)則。而且它有助于開發(fā)人員在軟 件中安全使用 C 和 C++語言同時(shí)滿足 MISRA 標(biāo)準(zhǔn)。使用 QA MISRA 開發(fā)的代碼往往 不那么復(fù)雜,因?yàn)閱蝹€(gè)開發(fā)人員和團(tuán)隊(duì)可以遵循一致的標(biāo)準(zhǔn)。
可測(cè)試、可維護(hù)和可移植
使用 QA MISRA 創(chuàng)建的軟件可以在開發(fā)的所有階段進(jìn)行測(cè)試。如果軟件符合 MISRA 標(biāo)準(zhǔn),那么代碼的維護(hù)和移植就容易多了。
縮短上市時(shí)間
可以在非常早期的階段可靠地識(shí)別和糾正錯(cuò)誤,從而使用戶能夠更快地發(fā)布軟件, 而不會(huì)危及質(zhì)量。
3、持續(xù)集成
什么是持續(xù)集成
持續(xù)集成原則鼓勵(lì)開發(fā)人員和團(tuán)隊(duì)不斷地共享和集成他們的所有貢獻(xiàn);遠(yuǎn)離夜間構(gòu)建的概念,轉(zhuǎn)而接受連續(xù)構(gòu)建的概念;遠(yuǎn)離政策執(zhí)行,轉(zhuǎn)而依靠質(zhì)量執(zhí)行;目標(biāo)是獲得對(duì)軟件驗(yàn)證和軟件依賴性的完全和自動(dòng)化的控制,這樣每個(gè)開發(fā)人員都有可能成為發(fā)布候選。
可以在命令行上運(yùn)行測(cè)試工具,以便它們可以輕松地與許多CI工具集成。
關(guān)鍵軟件的以測(cè)試為中心的過程
QA MISRA和CANTATA支持驗(yàn)證代碼的靜態(tài)和動(dòng)態(tài)方面。靜態(tài)分析有助于在執(zhí)行代碼動(dòng)態(tài)測(cè)試之前檢測(cè)缺陷,節(jié)省時(shí)間。軟件單元和集成測(cè)試驗(yàn)證正確的行為,以及不會(huì)發(fā)生不正確的行為,同時(shí)檢查代碼的執(zhí)行路徑和驗(yàn)證需求。每個(gè)階段的自動(dòng)化功能以及與CI構(gòu)建系統(tǒng)和需求收集工具的可靠集成,將手動(dòng)測(cè)試的需求降至最低。所有這些加起來大大減少了缺陷,并通過在開發(fā)周期中更快、更早地識(shí)別問題節(jié)省了時(shí)間。
Jenkins 插件
為靜態(tài)分析解決方案倡導(dǎo)的“早期且經(jīng)?!钡姆椒@然與持續(xù)集成理念產(chǎn)生了共鳴,這種理念正越來越多地被作為軟件質(zhì)量的可靠方法保障。
Jenkins插件將允許用戶自動(dòng)化啟用的 C/C++項(xiàng)目的分析,將分析作為持續(xù)集成過程的一部分來執(zhí)行。
該插件提供了一系列功能,包括:
- 自動(dòng)檢查每個(gè) Jenkins 構(gòu)建是否違反規(guī)則
- 直接在 Jenkins 工作區(qū)中歸檔分析報(bào)告
- 通過 Jenkins web 界面訪問分析結(jié)果
- 根據(jù)用戶的標(biāo)準(zhǔn),根據(jù)分析結(jié)果自動(dòng)將生成標(biāo)記為錯(cuò)誤
- 將不同版本的分析作為單獨(dú)的分析修訂版啟動(dòng),以便于調(diào)試和記錄進(jìn)度
4、給用戶帶來的價(jià)值
- 降低成本,同時(shí)縮短上市時(shí)間
- 降低程序失敗的風(fēng)險(xiǎn)
- 在開發(fā)周期的早期識(shí)別編碼問題
- 確保符合代碼質(zhì)量和編碼標(biāo)準(zhǔn)
- MISRA 標(biāo)準(zhǔn)的完全集成環(huán)境
- 適用于需要安全關(guān)鍵軟件的所有行業(yè)
- 加速并重新聚焦代碼評(píng)審過程,并改進(jìn)開發(fā)團(tuán)隊(duì)的協(xié)作
- 提升開發(fā)人員的專業(yè)技能并推廣最佳實(shí)踐
- 增強(qiáng)可靠性、可移植性和可維護(hù)性
- 提高代碼的可移植性和可重用性
- 開發(fā)環(huán)境中的即時(shí)和可重復(fù)測(cè)試
5、主要特征
QA MISRA 是一種靜態(tài)分析器,旨在檢查符合 C90、C99、C11、C18 和 C++98、C++11、C++14、C++17 語言規(guī)范的安全關(guān)鍵 C/C++程序的編碼準(zhǔn)則,計(jì)算代碼度量。
- 快速易用
- 實(shí)施編碼準(zhǔn)則,包括 MISRAC:2004、MISRA-C:2012 和定制規(guī)則集
- 在句法規(guī)則上沒有漏報(bào)和誤報(bào)
- 與 Astrée 無縫集成,確保語義規(guī)則的零漏報(bào)和最小誤報(bào)
- 代碼度量的計(jì)算:HIS 度量和定制度量
- 強(qiáng)制執(zhí)行度量閾值
- 報(bào)告的代碼問題的完全可跟蹤性
- 交互式結(jié)果探索
- 調(diào)查結(jié)果的穩(wěn)健分類
- 可配置報(bào)告文件生成
- 項(xiàng)目進(jìn)度和分析修訂的跟蹤和可視化
- 客戶機(jī)/服務(wù)器體系結(jié)構(gòu),具有分析請(qǐng)求的隊(duì)列處理,以及集中的用戶管理和身份驗(yàn)證
- 具有開放接口和開放文件格式的獨(dú)立工具
- MATLAB 集成與 TargetLink 耦合
- 根據(jù)安全標(biāo)準(zhǔn)進(jìn)行自動(dòng)工具合格審定
6、基本功能
- 命令行接口
- 交互式圖形用戶界面
- 在線幫助和 MISRA 知識(shí)庫
- 概要和詳細(xì)報(bào)告
- 集成到基于 Eclipse 的 IDE 中
7、代碼分析功能
- 快速源代碼分析
- 警報(bào)可根據(jù)注釋進(jìn)行分類
- 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)
8、持續(xù)集成環(huán)境
- Jenkins
- 其他 CI 環(huán)境可以通過命令行集成
9、支持的編程標(biāo)準(zhǔn)
- MISRA C:2004
- MISRA C:2012
- MISRA C:2012 修訂 1&2
- MISRA AC AGC
- HIS Metrics
- ISO/IEC TS 17961:2013(C 安全編碼規(guī)則)
- SEI CERT C 編程規(guī)范
- SEI CERT C++ 編程規(guī)范
- CWE
- MISRA C++:2008
- Adaptive AUTOSAR C++14
- 命名規(guī)范檢查
- 可擴(kuò)展的規(guī)則集
10、安全關(guān)鍵標(biāo)準(zhǔn)
通過使用“合格審定支持工具包”,QA MISRA 支持以下安全標(biāo)準(zhǔn):
- ISO 26262:2018(汽車電子)
- EN 50128:2011/A2:2020(軌道交通)
- EN 50657:2017(鐵路軌道)
- IEC 62304:2006(醫(yī)療器械)
- IEC 61508:2010(工業(yè)自動(dòng)化)
- DO-178B(航空航天與國(guó)防)
- DO-178C / DO-330(航空航天與國(guó)防)
11、系統(tǒng)需求
- Windows:64 位 Windows10
- Linux:64 位 CentOS/RHEL 7 或其他兼容發(fā)行版
- 4 GB RAM(建議使用 16 GB)
- 4 GB 存儲(chǔ)空間