日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機(jī)站
  • 小程序

    汽車(chē)測(cè)試網(wǎng)

  • 公眾號(hào)
    • 汽車(chē)測(cè)試網(wǎng)

    • 在線課堂

    • 電車(chē)測(cè)試

談?wù)劥a靜態(tài)分析

2021-01-08 09:55:45·  來(lái)源:汽車(chē)ECU開(kāi)發(fā)  
 
這是數(shù)字化的風(fēng)險(xiǎn)之一:網(wǎng)絡(luò)犯罪分子在自動(dòng)駕駛汽車(chē)中發(fā)現(xiàn)安全漏洞,并操縱油門(mén)或制動(dòng)。隨著車(chē)輛中軟件占比越來(lái)越高,與安全漏洞相關(guān)的風(fēng)險(xiǎn)也會(huì)增加。長(zhǎng)期以來(lái),
這是數(shù)字化的風(fēng)險(xiǎn)之一:網(wǎng)絡(luò)犯罪分子在自動(dòng)駕駛汽車(chē)中發(fā)現(xiàn)安全漏洞,并操縱油門(mén)或制動(dòng)。隨著車(chē)輛中軟件占比越來(lái)越高,與安全漏洞相關(guān)的風(fēng)險(xiǎn)也會(huì)增加。長(zhǎng)期以來(lái),全面分析和符合編碼標(biāo)準(zhǔn)已成為必不可少的。靜態(tài)代碼分析可以在這方面提供幫助,因?yàn)檎_使用代碼,可以顯著提高代碼質(zhì)量。

在討論功能安全時(shí),繞不開(kāi)ISO26262。車(chē)輛中大多數(shù)軟件組件必須得到相應(yīng)的認(rèn)證,對(duì)于這些軟件組件,ISO26262建議在軟件編碼要遵循編碼規(guī)范。汽車(chē)領(lǐng)域最成熟的編碼標(biāo)準(zhǔn)莫過(guò)于MISRA C,MISRA C中的編碼規(guī)則構(gòu)成了高水平源碼質(zhì)量的基礎(chǔ),如果不嚴(yán)格執(zhí)行編碼標(biāo)準(zhǔn),則很難獲得功能安全認(rèn)證,但是鑒于當(dāng)前軟件的復(fù)雜性很高,如果不使用自動(dòng)化工具,這將是一項(xiàng)艱巨的任務(wù)。

近年來(lái),靜態(tài)代碼分析越來(lái)越受汽車(chē)行業(yè)重視。適當(dāng)?shù)墓ぞ呖梢栽诰幋a過(guò)程中檢查代碼是否滿足編碼規(guī)則,如果不滿足,立即顯示違反的規(guī)則,并提示修改措施,這樣可以幫助開(kāi)發(fā)人員遵守編碼規(guī)則。這樣一來(lái)可以在開(kāi)發(fā)階段就避免潛在的問(wèn)題,從而節(jié)省時(shí)間和精力,還能保證產(chǎn)品的質(zhì)量。

盡早引入代碼靜態(tài)分析

“盡早”意味著在流程中引入靜態(tài)代碼分析的最佳時(shí)間是盡可能早的。理想情況下,應(yīng)在開(kāi)始編碼之前部署合適的工具。然而,實(shí)際上,汽車(chē)行業(yè)的軟件開(kāi)發(fā)項(xiàng)目很少是從頭開(kāi)始。取而代之的是,開(kāi)發(fā)是基于現(xiàn)有的代碼進(jìn)行的,例如來(lái)自開(kāi)源,第三方開(kāi)發(fā)人員或以前的項(xiàng)目的代碼。在這種情況下,應(yīng)盡早追溯并引入相應(yīng)的工具,然后在整個(gè)開(kāi)發(fā)過(guò)程中持續(xù)使用,這樣就可以確保至少將來(lái)的代碼從一開(kāi)始就滿足代碼規(guī)范的要求。
在準(zhǔn)備部署靜態(tài)代碼分析工具時(shí),應(yīng)該考慮軟件集成的需求,例如開(kāi)發(fā)人員使用的編譯器?該工具如何與版本管理系統(tǒng)一起使用?如何與現(xiàn)有的工具鏈進(jìn)行融合?最好的商業(yè)工具將允許靈活的部署方案,并與其他流行的開(kāi)發(fā)工具順利集成。

靜態(tài)代碼工具部署:第一步在開(kāi)發(fā)人員的電腦桌面

靜態(tài)分析器直接安裝在開(kāi)發(fā)人員的電腦上。這種解決方案可以在源代碼編寫(xiě)的時(shí)候?qū)崟r(shí)檢測(cè)代碼是否符合相關(guān)的編碼規(guī)范(如圖1)。如果某些代碼不符合當(dāng)前設(shè)定的編碼規(guī)則,則開(kāi)發(fā)人員會(huì)看到提示窗,以便開(kāi)發(fā)人員可以更正此問(wèn)題。由于提供了有關(guān)如何編寫(xiě)代碼才能符合MISRA C規(guī)范的即時(shí)反饋結(jié)果,開(kāi)發(fā)人員在中長(zhǎng)期進(jìn)行了培訓(xùn),使其更加合規(guī),慢慢的效率也就提高了。


圖1 靜態(tài)代碼分析
另外分析工具也會(huì)檢查當(dāng)前代碼組件是否存在客觀錯(cuò)誤。這樣可以調(diào)高源碼質(zhì)量,從而節(jié)省時(shí)間和成本,例如潛在錯(cuò)誤存在源碼中的時(shí)間越長(zhǎng),則需要追溯檢查已執(zhí)行的流程和對(duì)其修復(fù)的成本就越高。更不用說(shuō)如果部署在最終的產(chǎn)品中,它可能會(huì)成為安全漏洞,

第二步:構(gòu)建在服務(wù)器上
在持續(xù)集成流程的形式中,進(jìn)一步的分析流程將在服務(wù)器部署的幫助下執(zhí)行。這通常是夜間在服務(wù)器上分析,涉及完整的項(xiàng)目分析,包括白天簽入的所有代碼部分。除了來(lái)自單個(gè)開(kāi)發(fā)人員代碼的檢查,項(xiàng)目作為一個(gè)整體也會(huì)被檢查。服務(wù)器部署的核心是深度數(shù)據(jù)流分析。這模擬了每個(gè)可能的執(zhí)行路徑的執(zhí)行,而不是實(shí)際創(chuàng)建一個(gè)可執(zhí)行程序。相反,它創(chuàng)建了一個(gè)軟件的行為模型,可以用來(lái)監(jiān)控變量及其在運(yùn)行時(shí)將被分配的值。數(shù)據(jù)流分析還可以識(shí)別冗余代碼,或永遠(yuǎn)不被執(zhí)行的代碼,這類代碼可能會(huì)指向設(shè)計(jì)錯(cuò)誤。另外在硬件資源嚴(yán)格受限的嵌入式系統(tǒng)中,它們可能會(huì)占用寶貴的存儲(chǔ)空間。

在服務(wù)器分析過(guò)程中識(shí)別出的任何錯(cuò)誤或沖突都會(huì)被標(biāo)記以供審查。理想情況下,所使用的分析工具應(yīng)該集成到一個(gè)問(wèn)題管理系統(tǒng)中。這允許自動(dòng)整理問(wèn)題,并且分發(fā)給相應(yīng)的開(kāi)發(fā)人員,以便在第二天進(jìn)行修復(fù)。另外也有可能發(fā)現(xiàn)了團(tuán)隊(duì)已知的問(wèn)題,或者與各自項(xiàng)目無(wú)關(guān)的問(wèn)題,例如,項(xiàng)目中根本沒(méi)有使用特定的MISRA規(guī)則。即使這些與故障排除無(wú)關(guān),也可以使用一個(gè)復(fù)雜的分析工具來(lái)確保對(duì)它們進(jìn)行正式的文檔化。如果進(jìn)行了審核,團(tuán)隊(duì)可以很容易地證明該問(wèn)題不是一個(gè)被忽略的錯(cuò)誤,而是一個(gè)經(jīng)過(guò)考慮的已知偏差,并且不會(huì)對(duì)車(chē)輛的正確運(yùn)行產(chǎn)生風(fēng)險(xiǎn)。

為了在實(shí)踐中使該解決方案達(dá)到最高的有效性,在引入和使用過(guò)程中要注意多個(gè)方面,這一點(diǎn)很重要。分析的效率隨著工具針對(duì)特定工作環(huán)境、特定目標(biāo)和特性的定制程度的提高而提高。

一般來(lái)說(shuō),引入這樣的工具也需要進(jìn)行個(gè)別的微調(diào)。如果不這么做,大多數(shù)時(shí)候可以檢測(cè)出目標(biāo)錯(cuò)誤,但同時(shí)也存在風(fēng)險(xiǎn)。解決方案會(huì)產(chǎn)生大量的誤報(bào)。沒(méi)有優(yōu)化配置的工具可能會(huì)產(chǎn)生許多誤報(bào),這需要時(shí)間和精力來(lái)優(yōu)化工具。這可能會(huì)產(chǎn)生挫折感,并降低對(duì)工具的信心。因而開(kāi)發(fā)人員可能不太愿意使用這個(gè)工具,這將不可避免地導(dǎo)致更多的安全問(wèn)題出現(xiàn)在最終產(chǎn)品中。

另外一個(gè)潛在的風(fēng)險(xiǎn)在于靜態(tài)分碼分析工具引入時(shí),未對(duì)開(kāi)發(fā)人員進(jìn)行培訓(xùn),導(dǎo)致開(kāi)發(fā)人員不能準(zhǔn)確的分析報(bào)出的原因,另外也要認(rèn)識(shí)到靜態(tài)代碼分析的局限性,例如,它不能根據(jù)開(kāi)發(fā)人員的實(shí)際意圖來(lái)檢查一段代碼,例如,如果一個(gè)函數(shù)是用來(lái)計(jì)算面積,但是開(kāi)發(fā)人員寫(xiě)成圖2所示,靜態(tài)代碼分析不會(huì)檢測(cè)到一個(gè)錯(cuò)誤,除非使用的變量出現(xiàn)了溢出。為使代碼分析在實(shí)踐中達(dá)到比較好的效果,汽車(chē)專家不應(yīng)低估所需的努力訓(xùn)練開(kāi)發(fā)人員的重要性。


圖2 靜態(tài)分析工具可能檢測(cè)到可能的溢出,但無(wú)法確定該功能沒(méi)有執(zhí)行預(yù)期的操作

一旦正確的先決條件已經(jīng)就位,在實(shí)踐中成功使用靜態(tài)代碼分析的思路就清晰了。具體的好處可以用數(shù)字來(lái)衡量,并在整個(gè)項(xiàng)目中直接監(jiān)控。可以度量質(zhì)量指標(biāo),并將其與代碼的快照關(guān)聯(lián)起來(lái),以構(gòu)建隨著時(shí)間推移的進(jìn)度圖。

最后就可以成為項(xiàng)目經(jīng)理或者是管理者匯報(bào)項(xiàng)目的指標(biāo),例如錯(cuò)誤數(shù)量隨時(shí)間變化的報(bào)告,或者顯示自引入解決方案以來(lái),代碼復(fù)雜性降低了多少。最終每個(gè)人都最終受益于改進(jìn)代碼質(zhì)量:開(kāi)發(fā)人員負(fù)擔(dān)減小,不要因?yàn)槟涿畹膯?wèn)題抓破頭腦;汽車(chē)制造商可以得到滿足合規(guī)要求的產(chǎn)品,并且獲得不錯(cuò)的口碑,最后消費(fèi)者使用的車(chē)輛更加安全。 
分享到:
 
反對(duì) 0 舉報(bào) 0 收藏 0 評(píng)論 0
滬ICP備11026917號(hào)-25