MISRA-2012-AMD2-靜態(tài)代碼檢查合規(guī)研究報(bào)告_第1頁
MISRA-2012-AMD2-靜態(tài)代碼檢查合規(guī)研究報(bào)告_第2頁
MISRA-2012-AMD2-靜態(tài)代碼檢查合規(guī)研究報(bào)告_第3頁
MISRA-2012-AMD2-靜態(tài)代碼檢查合規(guī)研究報(bào)告_第4頁
MISRA-2012-AMD2-靜態(tài)代碼檢查合規(guī)研究報(bào)告_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

e7d195523061f1c021b92b3d25e54ab5e788c0576048880950C3AFFA1066A7153250F1349197BA8C5246BA9D557EC0274B8DA272D2431748978789E76D2CD7D1F11E7447C1D163F5D9CA1CD35DC7B6F04BDF10FCA079404AD523CA8F0B8CCBF60F2D51B7B0A2748B8722102F0457CEC8E7393D07E56B760E0701CF322F8215ED6370C26B80BDD67A8877F7DB6EB5BAF9SmartEasyMISRAC/C++合規(guī)探討報(bào)告MISRAComplianceResearchReport基于公開可獲得的資料20200917V1.5預(yù)期讀者與閱讀指南預(yù)期讀者閱讀建議管理層閱讀合規(guī)價(jià)值,工具采購價(jià)格,研究結(jié)論軟件經(jīng)理仔細(xì)閱讀全文項(xiàng)目經(jīng)理仔細(xì)閱讀全文QA仔細(xì)閱讀全文商務(wù)經(jīng)理仔細(xì)閱讀交付項(xiàng)目合規(guī)流程書目一、簡介MISRA合規(guī)的價(jià)值,符合MISRA能帶來什么?什么是MISRA?編碼規(guī)范差異比較MISRA標(biāo)準(zhǔn)構(gòu)成和分類說明二、合規(guī)可行性探討如何符合MISRA?交付類項(xiàng)目合規(guī)流程合規(guī)檢查工具選擇比較合規(guī)實(shí)施風(fēng)險(xiǎn)及應(yīng)對(duì)措施導(dǎo)入支配三、探討結(jié)論附件:探討產(chǎn)物代碼質(zhì)量度量公式MISRA合規(guī)的價(jià)值靜態(tài)代碼檢查是發(fā)覺軟件缺陷的最早期階段,通過預(yù)防成本投入削減上市后的售后維護(hù)成本;滿足客戶的軟件過程實(shí)力審核要求符合編碼規(guī)范是ISO26262:2018-6軟件功能平安開發(fā)標(biāo)準(zhǔn)的內(nèi)在要求之一,開發(fā)ASIL功能平安項(xiàng)目必需滿足;

MISRA已成為汽車行業(yè)公認(rèn)的C/C++語言規(guī)范,MISRA現(xiàn)已廣泛擴(kuò)展應(yīng)用于汽車行業(yè)之外的醫(yī)療,航天,航空,軌道交通等領(lǐng)域;MISRAandAUTOSAR,兩個(gè)世界領(lǐng)先的編碼指南聯(lián)盟宣布,它們的C++最佳實(shí)踐行業(yè)標(biāo)準(zhǔn)將整合為單一的標(biāo)準(zhǔn),預(yù)料2021可獲得;

軟件質(zhì)量規(guī)范的要求10.9.2靜態(tài)測(cè)試要求

10.9.2.1修復(fù)代碼靜態(tài)掃描問題

供應(yīng)商應(yīng)對(duì)所負(fù)責(zé)的全部代碼進(jìn)行靜態(tài)掃描,并修復(fù)全部發(fā)覺的缺陷。無法修復(fù)的缺陷須要經(jīng)過公司同意。

C/C++代碼須要遵守MISRAC/C++規(guī)范,公司運(yùn)用QAC和Coverity進(jìn)行掃描。

其他語言和工具,需滿足至少以下異樣被包含:

-棧溢出

-訪問越界

-資源泄露

-空指針

-未初始化

-數(shù)值溢出

10.9.2.2CodeMetric代碼度量要求

CodeMetric由特定工具(QAC、Coverity、Logiscope等)生成,公司不指定特定工具。

以下CodeMetric須要被測(cè)試并且跟蹤:

-圈困難度(CyclomaticComplexity“v(G)”),不高于15.

-注釋密度(CommentDensity,COMF),0.2到1

-路徑數(shù)量(NumbersofPATHs,PATH),1到80.

ISO26262:2018-6軟件層面功能平安開發(fā)要求適當(dāng)?shù)慕#O(shè)計(jì)或編程語言(參見)所用語言本身未能充分解決的標(biāo)準(zhǔn),應(yīng)考慮表1所列主題,并由相應(yīng)的指南或開發(fā)環(huán)境所涵蓋。示例1MISRAC(參見參考文獻(xiàn)[3])是編程語言C的編碼指南,其中包括自動(dòng)生成的代碼的指南。示例2:在具有自動(dòng)代碼生成功能的基于模型的開發(fā)中,可以在模型級(jí)別以及代碼級(jí)別應(yīng)用準(zhǔn)則??梢钥紤]適當(dāng)?shù)慕邮街改?,包括MISRAAC系列。商業(yè)工具的樣式指南也是可能的指南。留意:可以為特定的項(xiàng)目開發(fā)修改現(xiàn)有的編碼準(zhǔn)則和建模準(zhǔn)則。通則ASIL示例:靜態(tài)代碼檢查工具-Parasoft提供的驗(yàn)證方法ABCD1a強(qiáng)制低復(fù)雜度++++++++報(bào)告圈復(fù)雜度、基本復(fù)雜度以及額外的軟件代碼度量指標(biāo)1b語言子集的使用++++++++增強(qiáng)編碼標(biāo)準(zhǔn),例如對(duì)不安全語言結(jié)構(gòu)的檢測(cè)1c強(qiáng)制強(qiáng)類型++++++++查找隱式類型轉(zhuǎn)換1d防御式實(shí)現(xiàn)技術(shù)的使用++++++保守性編程是通過使用合適的編碼標(biāo)準(zhǔn)規(guī)則達(dá)成的,例如,檢查調(diào)用函數(shù)返回值的錯(cuò)誤代碼等1e已建立的設(shè)計(jì)原則的使用++++++業(yè)界廣泛認(rèn)知的編碼標(biāo)準(zhǔn)規(guī)則集,例如MISRAC/C++、JSF、HIS源碼度量指標(biāo)等等1f無歧義圖形化表示的使用+++++++增強(qiáng)特定格式轉(zhuǎn)換1g樣式指南的使用+++++++增強(qiáng)特定的編碼習(xí)慣1h命名慣例的使用++++++++增強(qiáng)特定的命名習(xí)慣1i并發(fā)因素++++無,2018版26262新增表1建模和編碼指南涵蓋的通則MISRA簡介1994年,在英國成立了一個(gè)叫做汽車工業(yè)軟件牢靠性聯(lián)合會(huì)(TheMotorIndustrySoftwareReliabilityAssociation,簡稱MISRA)的組織。它是致力于幫助汽車廠商開發(fā)平安牢靠的軟件的跨國協(xié)會(huì),其成員包括:AB汽車電子、羅孚汽車、賓利汽車、福特汽車、捷豹汽車、路虎公司、Lotus公司、MIRA公司、Ricardo公司、TRW汽車電子、利茲高校和福特VISTEON汽車系統(tǒng)公司。1998年,MISRA發(fā)布了一個(gè)針對(duì)汽車工業(yè)軟件平安性的C語言編程規(guī)范——《汽車專用軟件的C語言編程指南》(GuidelinesfortheUseoftheCLanguageinVehicleBasedSoftware),稱為MISRAC:1998;2004年發(fā)布其次版,2012年發(fā)布第三版,為當(dāng)前最新有效的C語言規(guī)范版本,稱為MISRAC:2012。2008年MISRA發(fā)布針對(duì)C++的編碼規(guī)范,稱為MISRAC++:2008;8C/C++編碼規(guī)范差異簡介MISRA和AUTOSARC++偏向于功能平安(Safety),CERT偏向于(Security)防止平安威逼Safety:

Itcanbeusedwithoutcausingharm.Safety愛護(hù)的是意外的損害,ISO26262是Safety標(biāo)準(zhǔn)Secure:

Itcan’tbehacked.Secuity愛護(hù)的是有意的網(wǎng)絡(luò)威逼,ISO27001是Security標(biāo)準(zhǔn)英文兩個(gè)詞通常放在一起,因?yàn)橐粋€(gè)系統(tǒng)的穩(wěn)健設(shè)計(jì)必需同時(shí)保證防止有意和無意的平安風(fēng)險(xiǎn)標(biāo)準(zhǔn)組織發(fā)布的語言規(guī)范適用范圍標(biāo)準(zhǔn)類型MISRAC:2012C11SafetyC++:2008C++03SafetySEICERTC:2016C11SecurityC++:2016C++14SecurityCWEC&C++4.2:2020Latest,基于社區(qū)反饋的隱患庫SecurityAUTOSARC++C++14SafetyJSFVC++C++C++,適用于航天和國防SafetyHIC++4.0:2013C++11IntegrityISOISO17961:2013cor1:2016C11(面向分析工具而不是開發(fā)人員)Security9MISRAC版本歷史MISRA版本發(fā)布年份C語言版本指令數(shù)量規(guī)則數(shù)量指南總數(shù)19981998C90不詳127不詳20042004C90不詳142不詳20122012C99161431592012AMD-12016C99171561732012AMD-22020C111715817510C語言版本歷史年份C標(biāo)準(zhǔn)通用名別名標(biāo)準(zhǔn)編譯選項(xiàng)GNU擴(kuò)展選項(xiàng)1972BirthC----1978K&RC----1989-1990X3.159-1989,ISO/IEC9899:1990C89C90,ANSIC,ISOC-ansi,

-std=c90,

-std=iso9899:1990-std=gnu901995ISO/IEC9899/AMD1:1995AMD1C94,C95-std=iso9899:199409-1999ISO/IEC9899:1999C99--std=c99,

-std=iso9899:1999-std=gnu992011ISO/IEC9899:2011C11--std=c11,

-std=iso9899:2011-std=gnu112018ISO/IEC9899:2018C18--std=c18,

-std=iso9899:2018-std=gnu18MISRA版本發(fā)布年份C++版本指令數(shù)量規(guī)則數(shù)量指南總數(shù)20082008C++03無228不詳MISRAC++版本歷史注1:2019年1月,MISRA宣布將集成AutosarC++編碼指南為業(yè)內(nèi)單一的編碼指南,支持C++17,MISRA當(dāng)前支持的C++03版本低于Autosar支持的C++14,因此當(dāng)前不是導(dǎo)入MISRAC++規(guī)范的最佳時(shí)機(jī)注2:C++03、C++11和C++14是C++最常用的版本,尤其是安全關(guān)鍵型行業(yè);C++17是C++的最新版本。但是,采用新的編程語言的速度很慢,尤其是對(duì)于嵌入式行業(yè);雖有一些支持C++17的編碼標(biāo)準(zhǔn),但是如果有合規(guī)要求的話,使用C++14(或更早版本)進(jìn)行編碼更實(shí)用。年份C++標(biāo)準(zhǔn)通用名別名標(biāo)準(zhǔn)編譯選項(xiàng)GNU擴(kuò)展選項(xiàng)1978CwithClasses----1998ISO/IEC14882:1998C++98--std=c++98-std=gnu++982003ISO/IEC14882:2003C++03--std=c++03-std=gnu++032011ISO/IEC14882:2011C++11C++0xstd=c++11,

std=c++0xstd=gnu++11,

std=gnu++0x2014ISO/IEC14882:2014C++14C++1ystd=c++14,

std=c++1ystd=gnu++14,

std=gnu++1y2017ISO/IEC14882:2017C++17C++1zstd=c++17,

std=c++1zstd=gnu++17,

std=gnu++1z2021修訂中C++版本歷史MISRAC:2012(MISRAC3)標(biāo)準(zhǔn)構(gòu)成MISRAC:2012GuidelinesfortheuseoftheClanguageincriticalsystemsMISRA

C:2012-Amendment1:AdditionalsecurityguidelinesforMISRA

C:2012MISRA

C:2012-Amendment2:UpdatesforISO/IEC9899:2011corefunctionalityMISRA

C:2012-TechnicalCorrigendum1:

TechnicalclarificationofMISRA

C:2012MISRA

Compliance2020:AchievingcompliancewithMISRAcodingguidelines,MISRA

C:2012-Addendum2:

CoverageofMISRA

C:2012againstISO/IEC

TS

17961:2013"C

Secure",ISBN978-906400-18-7(PDF),SecondEdition,January2018.MISRAC:2012-Addendum3:CoverageofMISRAC:2012againstCERTC,ISBN978-906400-19-4(PDF),January2018.1份指南(Guideline)+2份修正案(Amendment1+2)+1份合規(guī)性指南(Compliance) +1份技術(shù)勘誤(TechnicalCorrigendum1)MISRAC:2012為最新有效版本,有效的規(guī)則由如上發(fā)布物(標(biāo)識(shí)淺藍(lán)色,已獲得)構(gòu)成:&2份標(biāo)準(zhǔn)比照補(bǔ)充和5份AC(自動(dòng)代碼)指南(未獲得)MISRAACINT

MISRAACGMG

MISRAACSLSF

MISRAACTL

MISRAACAGCGuidelineType指南類型:Directive-指令Rule-規(guī)則Category類別:Mandatory:強(qiáng)制的Required:必需的Advisory:建議的AnalysisScope分析范圍:SingleTranslationUnit:SystemLanguage語言版本:C90C99C90,C99Decidability可判定性:Decidable:可判定的Undecidable:不行判定的《MISRAC:2012》規(guī)則條文示例HeadlineTextClarification:標(biāo)題文本說明要求的擴(kuò)展說明須要該指南的理由示例《MISRAC:2012》規(guī)則條文示例Directive指令A(yù)directiveisaguidelinewhichisnotdefinedwithreferencetothesourcecodealone.Analysistoolsmaybeabletoassistincheckingcompliance,butadirectivewillalsoreferto,orimposerequirementsonprocesses,documentationorfunctionalrequirements.Therequirementsofadirectivemayalsointroduceadegreeofsubjectivejudgementanddifferenttoolswillthereforesometimesplacedifferentinterpretationsonwhatconstitutesanon-compliance.-可能定義寬松-允許依據(jù)有不同的說明-可對(duì)過程或者文檔進(jìn)行要Rule規(guī)則Aruleisaguidelinewhichimposesrequirementsonthesourcecodewhicharecomplete,objective,unambiguousandindependentofanyprocess,design-documentationorfunctionalrequirement.Analysistoolsarecapableofcheckingcompliancewithrules,subjecttothelimitationsdescribedlaterinSection3.5.-有明確定義-可靜態(tài)實(shí)施檢查(接受某些限制)MISRAC:2012相較2004版引入“分類”,分為兩類:

Mandatoryguidelines強(qiáng)制的-聲明符合MISRA的C代碼應(yīng)遵守全部強(qiáng)制性準(zhǔn)則-不允許偏差。-強(qiáng)制性類別是2012版新增的類別,過往的MISRA版本沒有該類別Requiredguidelines必需的-公司或項(xiàng)目可以選擇將任何必需的準(zhǔn)則視為強(qiáng)制性準(zhǔn)則;-不符合須有正式的偏差許可Advisoryguidelines建議的-它們是建議性的;-不符合可基于用戶的判定許可-不符合應(yīng)被記錄;-無須正式的偏差許可;Category類別:

2012版有3個(gè)類別Decidability可判定性:

Decidable

可判定的Undecidable不可判定的Rule

12.2:

depends

on

the

value

of

the

right-hand

operand

of

a

shift

operator;規(guī)則12.2:取決于移位運(yùn)算符右側(cè)操作數(shù)的值;Rule11.3:

depends

on

the

source

pointer

and

destination

pointer

types;規(guī)則11.3:取決于源指針和目標(biāo)指針的類型;規(guī)則或是Decidable可判定的,或是Undecidable不行判定的--一個(gè)規(guī)則是可判定的,假如它總是能夠在任何程序中運(yùn)用工具確定代碼是否合規(guī),否則就是不行判定的兩類分析范圍AnalysisScopeSingletranslationUnitrule單一編譯單元--通過隔離分析每個(gè)編譯單元中的源代碼,可以牢靠地進(jìn)行驗(yàn)證的代碼Systemrules系統(tǒng)規(guī)則--只能通過分析整個(gè)系統(tǒng)中的源代碼來完全檢查驗(yàn)證Rule8.6:Anidentifierwithexternallinkageshallhaveexactlyoneexternaldefinition;規(guī)則8.6:具有外部鏈接的標(biāo)識(shí)符應(yīng)具有準(zhǔn)確的一個(gè)外部定義;Rule16.4:

“Every

switch

statement

shall

have

a

default

value規(guī)則16.4:每個(gè)switch語句應(yīng)具有默認(rèn)值;

MISRAC:2012AMD-2MISRACGuidelineClassificationSummary規(guī)則分類統(tǒng)計(jì)Derectives指令Rules規(guī)則Category類別Mandoratory強(qiáng)制的016Required必須的10110Advisory建議的732Language支持的C語言版本C9002C99,C11011C90或C99,C1117144C1101Decidability可判定性Decidable-122Undecidable-36AnalysisScope分析范圍SingleTranslationUnit-109System-49合計(jì)17158Rule8.1,17.3Rule1.4AMD-2新增如何符合MISRAMISRACompliance:2020-AchievingcompliancewithMISRACodingGuidelines-February2020給出了如何聲明符合MISRA編碼規(guī)范的指南,該指南替代MISRAC:2012中的合規(guī)描述的相關(guān)章節(jié)InorderforaclaimofMISRAcompliancetohavemeaning,itisnecessarytoestablish:為了使符合MISRA的要求有意義,有必要確定:●Useofadisciplinedsoftwaredevelopmentprocess;運(yùn)用規(guī)范的軟件開發(fā)流程;●Exactlywhichguidelinesarebeingapplied;明確運(yùn)用哪份指南●Theeffectivenessoftheenforcementmethods;執(zhí)行方法的有效性●Theextentofanydeviationsfromtheguidelines;偏離指導(dǎo)原則的程度;●Thestatusofanysoftwarecomponentsdevelopedoutsideoftheproject.項(xiàng)目外開發(fā)的任何軟件組件的狀態(tài)7ClaimingMISRAcompliance除非已依據(jù)本文檔中描述的過程和原則進(jìn)行開發(fā),否則無法將項(xiàng)目描述為“符合MISRA標(biāo)準(zhǔn)”Aprojectcannotbedescribedas“MISRACompliant”unlessdevelopmenthasbeenconductedinaccordancewiththeprocessandprinciplesdescribedinthisdocumentQ:流程上如何檢查是否合規(guī)?A:可以運(yùn)用《MISRACompliance:2020》附錄A的檢查表追個(gè)檢查-“為了聲明MISRA的合規(guī)性,必需遵循附錄A:過程和工具檢查表,如2.2節(jié)和7.4節(jié)所述”MISRA合規(guī)的含義

符合MISRA不是-為一個(gè)公司……而是只針對(duì)一個(gè)交付項(xiàng)目-適用于軟件生命周期……而是只針對(duì)開發(fā)符合MISRA不是-沒有偏差……而是沒有未解決的違規(guī)實(shí)現(xiàn)MISRA合規(guī),當(dāng)-在項(xiàng)目起先時(shí)建立商定的流程和接受標(biāo)準(zhǔn)(GRP)-通過明確定義的流程授權(quán)管理違規(guī)并記錄偏差Enforceablity可實(shí)施性Decidability可判定性符合MISRAComplicanceDeviation偏差Enforceablity可實(shí)施性能被工具檢查的規(guī)則越多越好,工具誤報(bào)越少越好Decidability可判定性應(yīng)當(dāng)制定一份指南執(zhí)行支配(GEP),其中列出了《指南》中的每個(gè)規(guī)則,以指示如何檢查與指南的符合性,假如工具無法完全檢查準(zhǔn)則,則可能須要一個(gè)進(jìn)行手動(dòng)審查過程Deviation偏差通過明確定義的流程授權(quán)管理違規(guī)并記錄偏差(GCR)Guidelineenforcementplan(GEP)指南執(zhí)行支配Guideline

指南Compilers編譯器Analysistools分析工具M(jìn)anualreview人工評(píng)審‘A’‘B’‘A’‘B’Dir1.1

ProcedurexDir2.1noerrorsnoerrors

…Rule4.1

message38

Rule4.2

warning97

Rule5.1warning347

…Rule12.1

message79

Rule12.2

message432

ProcedureyRule12.3

message103

Rule12.4

message27

指南3.3要求:應(yīng)當(dāng)制定一份指南執(zhí)行支配(GEP),其中列出了《指南》中的每個(gè)指南,以指示如何檢查與指南的符合性。供應(yīng)商應(yīng)將GEP供應(yīng)應(yīng)選購 方,以便可以評(píng)估已進(jìn)行的檢查的適用性和牢靠性。假如工具無法完全檢查準(zhǔn)則,則可能須要一個(gè)進(jìn)行人工評(píng)審過程。示例Guideline指南MISRAcategory類別Revisedcategory修改后的類別Dir1.1RequiredMandatoryDir2.1RequiredRequired…Rule4.1RequiredRequiredRule4.2AdvisoryDisappliedRule5.1RequiredMandatory…Rule12.1AdvisoryMandatoryRule12.2RequiredRequiredRule12.3AdvisoryAdvisoryRule12.4AdvisoryRequiredGuidelinere-categorizationplan(GRP)指南重新分類支配指南5.1要求在開發(fā)項(xiàng)目起先時(shí),選購 方和供應(yīng)商應(yīng)就準(zhǔn)則重新分類支配(GRP)達(dá)成共識(shí),以確定如何應(yīng)用準(zhǔn)則1.不得以任何方式對(duì)強(qiáng)制性準(zhǔn)則進(jìn)行重新分類;2.必需的準(zhǔn)則不得重新分類為“建議”或“不適用”;3.仍被歸類為“建議”的準(zhǔn)則不須要偏差支持但須要識(shí)別4.重新分類為“不適用”的準(zhǔn)則的違規(guī)可以被忽視。MISRAcategory指南允許的修改水平RevisedcategoryMandatoryRequiredAdvisoryDisappliedMandatoryPermitted不允許不允許不允許RequiredPermittedPermitted

不允許不允許AdvisoryPermittedPermittedPermittedPermitted示例指南的合規(guī)性等級(jí)如下:1.

合規(guī)-項(xiàng)目中沒有違反指南的狀況;2.

偏差-項(xiàng)目中存在違反指南的狀況,這些都有偏差支持;3.

違規(guī)-項(xiàng)目中存在未得到偏差支持的違反指南的行為;4.

不合格-沒有檢查是否符合指南。MISRACategoryGCS合規(guī)報(bào)告允許聲明的合規(guī)水平MandatoryCompliant

RequiredCompliantDeviations

AdvisoryCompliantDeviationsViolationsDisappliedGuidelineMISRACategoryComplianceDir1.1RequiredCompliantDir2.1RequiredDeviations…Rule4.1RequiredDeviationsRule4.2AdvisoryDisappliedRule5.1RequiredCompliant…Rule12.1AdvisoryCompliantRule12.2RequiredDeviationsRule12.3AdvisoryViolationsRule12.4AdvisoryDeviationsGuidelineComplianceSummary(GCS)指南合規(guī)報(bào)告示例指南7.3要求在項(xiàng)目結(jié)束時(shí),應(yīng)編制一份準(zhǔn)則合規(guī)摘要(GCS),以記錄該項(xiàng)目總體要求的最終合規(guī)水平。GCS在《指南》中為每個(gè)指南都包含一個(gè)條目,并記錄其MISRA類別允許的遵守程度。26交付類項(xiàng)目合規(guī)開發(fā)流程依據(jù)<MISRA合規(guī)指南2020>的說明,交付項(xiàng)目的開發(fā)流程應(yīng)如下協(xié)議GEPGRP偏差報(bào)告和許可GCR交付在SOR階段向客戶提交GEP(指南執(zhí)行支配)以便客戶評(píng)估;在立項(xiàng)階段,應(yīng)與客戶合同確定一份雙方認(rèn)可調(diào)整的GRP(指南重新分類支配),以確定如何應(yīng)用規(guī)則,規(guī)則分為強(qiáng)制的,必需的,建議的,調(diào)整只允許升級(jí)不允許進(jìn)行降級(jí);在開發(fā)階段,如有偏差,應(yīng)有明確定義的流程授權(quán)管理違規(guī)并記錄偏差(模板見指南附錄2:偏差報(bào)告),偏差許可應(yīng)供應(yīng)應(yīng)客戶,強(qiáng)制類規(guī)則不允許偏差;在驗(yàn)證階段,規(guī)則分為SingleTranslationUnit(單個(gè)翻譯單元,可通過隔離單元源代碼牢靠驗(yàn)證)orSystem(系統(tǒng),必需通過分析全部源代碼才能驗(yàn)證),因此舉薦有效的檢查工具驗(yàn)證部署方式是在IDE通過插件早期檢查單元代碼的合規(guī)性,最終在自動(dòng)集成工具上Jenkins部署自動(dòng)化插件完整檢查以證明合規(guī)性;在結(jié)項(xiàng)階段,應(yīng)編制GCR(指南合規(guī)報(bào)告),報(bào)告每一條規(guī)則的合規(guī)狀況,供應(yīng)應(yīng)客戶;27合規(guī)檢查流程Q:應(yīng)在哪個(gè)開發(fā)流程節(jié)點(diǎn)進(jìn)行靜態(tài)代碼檢查?IDE,代碼評(píng)審還是CI持續(xù)集成?A:規(guī)則分為SingleTranslationUnit(單個(gè)翻譯單元,可通過隔離單元源代碼牢靠驗(yàn)證)orSystem(系統(tǒng),必需通過分析全部源代碼才能驗(yàn)證),因此舉薦有效的檢查工具驗(yàn)證部署方式是在IDE通過插件早期檢查單元代碼的合規(guī)性(部分工具供應(yīng)SVN/GIT提交時(shí)檢查),最終在自動(dòng)集成工具上Jenkins部署自動(dòng)化插件完整檢查生成合規(guī)報(bào)告以證明合規(guī)性;27MISRA合規(guī)靜態(tài)檢查節(jié)點(diǎn)單元檢查-IDE;系統(tǒng)檢查-Jenkins;MISRA合規(guī)配置檢查節(jié)點(diǎn)編譯語言版本;指南符合版本;靜態(tài)代碼檢查工具選擇標(biāo)準(zhǔn)選擇標(biāo)準(zhǔn):違規(guī)報(bào)告精確性:該報(bào)錯(cuò)的要報(bào)錯(cuò),少漏報(bào)(Falsenegative:違規(guī)存在但未報(bào)告違規(guī))或錯(cuò)報(bào)(Falsepositive:違規(guī)不存在但報(bào)告違規(guī));是否支持公司須要合規(guī)的編碼規(guī)范(C,C++,Android,JAVA…);是否通過認(rèn)證ISO26262;測(cè)試覆蓋率;是否支持IDE插件,Jenkins自動(dòng)化集成插件;是否支持代碼質(zhì)量度量(圈困難度,注釋密度,路徑數(shù)量…);是否支持GRP(指南重新分類支配);是否支持輸出合規(guī)性報(bào)告;生命周期內(nèi)的部署方案和價(jià)格;MISRA官網(wǎng)供應(yīng)的支持MISRA檢查的工具清單:Axivion

BUGSENG

CosmicSoftware

Cppcheck

EsterelTechnologies

GimpelSoftware

GrammaTech

GreenHillsSoftware

HelixQAC(formerlyfromProgrammingResearchLtd)

HitexUK(embeddedtoolsreseller)

IARSystems

Klocwork

LDRALtd

Metrowerks

OakwoodComputing

Parasoft

PhaedrusSystemsLtd(embeddedtoolsreseller)

Polyspace

RistanCASE

ScientificToolworksInc

SonarSource

Soft4Soft

Sparrow

SuresoftTechnologiesInc

TASKINGSoftwareTools

Telelogic代碼靜態(tài)檢查工具比較探討工具名稱出品公司優(yōu)勢(shì)劣勢(shì)QACPerforceMISRA標(biāo)準(zhǔn)制定方覆蓋率最好永久授權(quán)按語言包采購,合規(guī)語言多時(shí)價(jià)格沒有優(yōu)勢(shì)Jenkins插件須單獨(dú)采購CoveritySynopsys新思科技三大EDA軟件巨頭提供開源代碼合規(guī)檢查解決方案Blackduck(須另采購)按年付費(fèi),包含所有語言規(guī)范,合規(guī)要求多時(shí)整體合算一次性部署成本較高按年付費(fèi)而非永久授權(quán)C/C++TESTParasoft客戶群體主要為TOP500語言包僅支持C/C++PC-lintGimpel預(yù)算有限下的首選小巧方便,歷史悠久覆蓋率約95%,相比QAC和Coverity弱無GUICppCheck開源社區(qū)開源免費(fèi)對(duì)強(qiáng)制,必須類規(guī)則覆蓋率不足尚未支持AMD-1TBvisionLDRAMISRA標(biāo)準(zhǔn)制定方不詳注:MISRA官網(wǎng)供應(yīng)的合規(guī)檢查工具清單中的其它工具由于所在行業(yè)領(lǐng)域,出品國家為韓日,官網(wǎng)信息較差等緣由未進(jìn)行比較合規(guī)實(shí)施風(fēng)險(xiǎn)及應(yīng)對(duì)措施風(fēng)險(xiǎn)來源風(fēng)險(xiǎn)描述處置措施Adoptedcode采用的代碼指南6提及的6種Adoptedcode:1.標(biāo)準(zhǔn)庫2.驅(qū)動(dòng)文件3.中間件4.第三方庫5.自動(dòng)生成的代碼6.現(xiàn)有代碼(其它項(xiàng)目或者現(xiàn)有項(xiàng)目代碼的過往版本)“如果項(xiàng)目建立在已經(jīng)具有可靠記錄的代碼上,那么通過重構(gòu)現(xiàn)有代碼來獲得合規(guī)性的好處可能會(huì)被引入缺陷的風(fēng)險(xiǎn)所抵消。在這種情況下,需要根據(jù)可能獲得的凈收益做出判斷”6種類型對(duì)應(yīng)參見合規(guī)指南第6章節(jié)的處理措施;所應(yīng)在新產(chǎn)品平臺(tái)或項(xiàng)目中導(dǎo)入應(yīng)用MISRA規(guī)則,不建議在舊平臺(tái)項(xiàng)目上實(shí)施以符合規(guī)范合規(guī)實(shí)施導(dǎo)入支配課題研究研究和報(bào)告合規(guī)的要求及實(shí)踐方式標(biāo)準(zhǔn)化建立符合MISRA-CAMD-2的C編碼規(guī)范培訓(xùn)培訓(xùn)合規(guī)流程和編碼規(guī)范熟悉使用試用或開源工具以及人工評(píng)審的方式熟悉代碼合規(guī)要求決策確定導(dǎo)入的新產(chǎn)品或平臺(tái)項(xiàng)目,檢查工具方案采購根據(jù)項(xiàng)目的需求確定和采購靜態(tài)檢查工具實(shí)施在選定的產(chǎn)品平臺(tái)項(xiàng)目上部署實(shí)施檢查工具人員能力矩陣識(shí)別人員能力要求,先培訓(xùn)再上崗,保證合規(guī)跟蹤研究跟蹤MISRAC++:2021標(biāo)準(zhǔn)發(fā)布狀態(tài),適時(shí)建立C++編碼規(guī)范...探討結(jié)論《MISRA

Compliance2020》是最新有效的合規(guī)性指南,規(guī)定了項(xiàng)目而不能是公司如何聲稱符合MISRA,交付類項(xiàng)目聲稱符合MISRA,流程上應(yīng):在SOR階段向客戶提交GEP(指南執(zhí)行支配)以便客戶評(píng)估;在立項(xiàng)階段,應(yīng)與客戶合同確定一份雙方認(rèn)可調(diào)整的GRP(指南重新分類支配),以確定如何應(yīng)用規(guī)則,規(guī)則分為強(qiáng)制的,必需的,建議的,調(diào)整只允許升級(jí)不允許進(jìn)行降級(jí);在開發(fā)階段,如有偏差,應(yīng)有明確定義的流程授權(quán)管理違規(guī)并記錄偏差(模板見指南附錄2:偏差報(bào)告),偏差許可應(yīng)供應(yīng)應(yīng)客戶,強(qiáng)制類規(guī)則不允許偏差;在驗(yàn)證階段,規(guī)則分為SingleTranslationUnit(單個(gè)翻譯單元,可通過隔離單元源代碼牢靠驗(yàn)證)orSystem(系統(tǒng),必需通過分析全部源代碼才能驗(yàn)證),因此舉薦有效的檢查工具驗(yàn)證部署方式是在IDE通過插件早期檢查單元代碼的合規(guī)性,最終在自動(dòng)集成工具上Jenkins部署自動(dòng)化插件完整檢查全部代碼以證明合規(guī)性;在結(jié)項(xiàng)階段,應(yīng)編制GCR(指南合規(guī)報(bào)告)確定合規(guī)水平(合規(guī),偏差,違

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論