2018 年,沃爾沃汽車開始為嵌入式軟件開發(fā)團(tuán)隊(duì)提供持續(xù)集成 (CI) 工具鏈。該工具鏈為很多項(xiàng)目的開發(fā)人員帶來了持續(xù)編譯、測(cè)試和部署迭代代碼更改的能力。
Polyspace 產(chǎn)品作為這一自動(dòng)化軟件編譯流程的一部分,為用 C 和 C++ 編寫代碼的開發(fā)人員以及從 Simulink 模型生成代碼的開發(fā)人員提供了靜態(tài)代碼檢查。
“幾年前,我們的一個(gè)大型項(xiàng)目開始采用 C++ 進(jìn)行開發(fā),”沃爾沃高級(jí)首席軟件工程師 Johannes Foufas 說。“C++ 是一種復(fù)雜的語言,所以我們需要可靠的代碼驗(yàn)證工具。在我們嘗試過的所有靜態(tài)代碼分析工具中,Polyspace 產(chǎn)品是最為出色的產(chǎn)品之一。”
沃爾沃汽車在整個(gè)開發(fā)生命周期中使用 Polyspace 進(jìn)行靜態(tài)代碼檢查。
“借助 Polyspace,我們可以在每次代碼合并之前識(shí)別并修復(fù)關(guān)鍵的運(yùn)行時(shí)錯(cuò)誤,從而確保軟件的安全性和質(zhì)量。”
—— Johannes Foufas,沃爾沃汽車公司
挑戰(zhàn)
許多沃爾沃汽車軟件工程師用 C 或 C++ 進(jìn)行開發(fā),但這些語言頗為復(fù)雜,可能導(dǎo)致難以發(fā)現(xiàn)的錯(cuò)誤,修復(fù)成本也很高。在過去,沃爾沃汽車使用開源工具來檢查和調(diào)試代碼。然而,這些工具都無法識(shí)別源代碼中的一個(gè)下溢錯(cuò)誤,而該錯(cuò)誤導(dǎo)致了車輛上出現(xiàn)偶發(fā)問題。
為了節(jié)省開發(fā)時(shí)間和成本并符合功能安全和網(wǎng)絡(luò)安全標(biāo)準(zhǔn),沃爾沃團(tuán)隊(duì)需要一種萬無一失的方法來識(shí)別穩(wěn)健性測(cè)試很難檢測(cè)出來的關(guān)鍵運(yùn)行時(shí)錯(cuò)誤,包括溢出和其他數(shù)值問題。
解決方案
Johannes Foufas 的團(tuán)隊(duì)評(píng)估了多種代碼分析工具和服務(wù),最終選擇了 Polyspace 產(chǎn)品作為首選解決方案。沃爾沃汽車軟件工程師與 MathWorks Consulting Services 密切合作,將 Polyspace 工具集成到了軟件開發(fā)生命周期的每個(gè)階段。
工程師使用 Ansible 將 Polyspace 作為基礎(chǔ)作業(yè)整合到 Zuul CI 系統(tǒng)中,并將 Polyspace 的結(jié)果集成到代碼審查系統(tǒng)中。沃爾沃汽車的每個(gè)開發(fā)團(tuán)隊(duì)都可以創(chuàng)建一個(gè)單獨(dú)的已安裝和配置 Polyspace 代碼檢查的 CI 管道。
借助 Polyspace Access 提供的 Polyspace as You Code 插件,很多團(tuán)隊(duì)都會(huì)在使用 IDE 編碼時(shí)檢查代碼是否符合 CERT C、CERT C++、MISRA C 和 AUTOSAR C++14 編碼規(guī)范。在提交代碼修改之前,開發(fā)人員在本地計(jì)算機(jī)上運(yùn)行 Polyspace Bug Finder 和 Polyspace Code Prover 以對(duì)更改進(jìn)行預(yù)驗(yàn)證。
當(dāng)開發(fā)人員將更改推送到源代碼存儲(chǔ)庫時(shí)會(huì)自動(dòng)觸發(fā) Polyspace Bug Finder Server 和 Polyspace Code Prover Server 分析。Polyspace 的結(jié)果會(huì)集成到 Gerrit 中以支持代碼審查。CI 系統(tǒng)采用嚴(yán)格的控制措施:每項(xiàng)建議的更改在代碼合并之前都要經(jīng)過驗(yàn)證,并且僅在滿足功能安全和網(wǎng)絡(luò)安全要求的情況下才會(huì)提示提交到中央 Git 存儲(chǔ)庫中。
結(jié)果
現(xiàn)場(chǎng)測(cè)試前就檢測(cè)到了關(guān)鍵運(yùn)行時(shí)錯(cuò)誤。
Foufas 說,“在現(xiàn)場(chǎng)發(fā)現(xiàn)軟件缺陷需要很高的成本才能修復(fù)。Polyspace Code Prover 是唯一一款能夠讓我們從一開始就發(fā)現(xiàn)問題的工具。”
通過更好的代碼重用提高了工作效率。
Foufas 指出,“Polyspace 節(jié)省了開發(fā)時(shí)間。自從我們?cè)诨A(chǔ)軟件上部署了 Polyspace 靜態(tài)代碼分析工具,基于現(xiàn)有代碼的新項(xiàng)目的調(diào)試問題就大幅減少了。”
ASPICE、ISO 26262 和 ISO/SAE 21434 認(rèn)證要求達(dá)成。
“不符合行業(yè)標(biāo)準(zhǔn)的軟件會(huì)直接影響公司的聲譽(yù)和市場(chǎng)份額。借助 Polyspace 工具,我們更加確信我們的代碼沒有運(yùn)行時(shí)錯(cuò)誤,并且符合功能安全和網(wǎng)絡(luò)安全要求。”Foufas 說。
審核編輯 :李倩
-
嵌入式
+關(guān)注
關(guān)注
5071文章
19026瀏覽量
303492 -
C++
+關(guān)注
關(guān)注
22文章
2104瀏覽量
73503 -
沃爾沃汽車
+關(guān)注
關(guān)注
0文章
24瀏覽量
3717
原文標(biāo)題:靜態(tài)代碼分析 | 沃爾沃汽車軟件工廠使用 Polyspace 提高開發(fā)速度和質(zhì)量
文章出處:【微信號(hào):MATLAB,微信公眾號(hào):MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論