BARR-C是Barr集團的編碼標(biāo)準(zhǔn),旨在減少嵌入式軟件中的錯誤,并引入風(fēng)格指南以提高可維護性和可移植性。
在這里,我們解釋了什么是Barr-C,開發(fā)人員如何使用BARR-C:1018檢測用C編寫的固件中的錯誤,以及如何將其與MISRA的指南相結(jié)合。
什么是BARR-C?
BARR-C是由BarrGroup開發(fā)的嵌入式C編碼標(biāo)準(zhǔn),專注于減少軟件中的錯誤數(shù)量,同時提高嵌入式軟件的可維護性和可移植性。
BARR-C:2018指南分為兩大類:
1.處理細分語言的方法,例如避免特定關(guān)鍵字(例如“register”或“continue”)和使用類似于宏的函數(shù)。
2.關(guān)于編程風(fēng)格的內(nèi)容(例如,縮進和命名約定)。
第一類中的一些規(guī)則被標(biāo)記為“零bug...周期”。遵循這些規(guī)則將有助于首先防止錯誤。
為什么BARR-C很重要?
開發(fā)嵌入式軟件可能具有挑戰(zhàn)性,即使使用正確的工具來識別缺陷和合規(guī)性問題也是如此。
BARR-C:2018主要旨在最大限度地減少編碼錯誤。因此,BARR-C:2018可以被視為適用于各種項目的C語言子集的第一步。
對于未使用編碼標(biāo)準(zhǔn)和靜態(tài)分析的情況,采用BARR-C:2018是一項重大改進。
如何實現(xiàn)BARR-C合規(guī)性?
為了遵守BARR-C:2018,必須執(zhí)行所有準(zhǔn)則。
有幾種方法可以檢測不合規(guī)的代碼:例如,非正式代碼審查或自動掃描。每條規(guī)則都描述了所建議的執(zhí)行方法。標(biāo)準(zhǔn)中的許多規(guī)則都可以使用靜態(tài)分析工具(如HelixQAC)自動檢查。
BARR-C與MISRA有何關(guān)系?
設(shè)計安全關(guān)鍵型系統(tǒng)的開發(fā)人員知道要嚴格遵守MISRAC:2012指南。符合MISRAC:2012標(biāo)準(zhǔn)可確保嵌入式代碼安全可靠。
BARR-C:2018并不是為了與MISRAC:2012競爭而設(shè)計的;它們實際上是兼容和互補的。例如,使用MISRA C:2012的項目可以使用BARR-C:2018的編程風(fēng)格部分來滿足MISRA C關(guān)于采用和實施一致編碼風(fēng)格的建議。
同樣,關(guān)鍵項目最初可以努力實現(xiàn)對BARR-C的遵守,然后順利過渡到MISRAC的合規(guī)性。
為什么使用HelixQAC實現(xiàn)Barr-C合規(guī)性
HelixQAC可輕松遵守編碼標(biāo)準(zhǔn)和準(zhǔn)則,包括MISRA和BARR-C。
親自了解HelixQAC如何幫助您遵守BARR-C和其他功能安全標(biāo)準(zhǔn)。
-
代碼
+關(guān)注
關(guān)注
30文章
4828瀏覽量
69063
發(fā)布評論請先 登錄
相關(guān)推薦
C7000 C/C++優(yōu)化指南用戶手冊
![<b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C</b>++優(yōu)化指南用戶手冊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
TMS320C6000優(yōu)化C/C++編譯器v8.3.x
![TMS320<b class='flag-5'>C</b>6000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++編譯器v8.3.x](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
TMS320C28x優(yōu)化C/C++編譯器v22.6.0.LTS
![TMS320<b class='flag-5'>C</b>28x優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++編譯器v22.6.0.LTS](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
TMS320C6201/C6701/C6211 HPI啟動操作
![TMS320<b class='flag-5'>C</b>6201/<b class='flag-5'>C</b>6701/<b class='flag-5'>C</b>6211 HPI啟動操作](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
從TMS320C6211B/C6711/C6711B/C6711C遷移到TMS320C6711D
![從TMS320<b class='flag-5'>C</b>6211B/<b class='flag-5'>C</b>6711/<b class='flag-5'>C</b>6711B/<b class='flag-5'>C6711C</b>遷移到TMS320<b class='flag-5'>C</b>6711D](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
從TMS320C6712/C6712C遷移到TMS320C6712D
![從TMS320<b class='flag-5'>C</b>6712/<b class='flag-5'>C6712C</b>遷移到TMS320<b class='flag-5'>C</b>6712D](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
對TMS320VC5503/C5506/C5507/C5509/C5509A I2C外設(shè)進行編程
![對TMS320VC5503/<b class='flag-5'>C</b>5506/<b class='flag-5'>C</b>5507/<b class='flag-5'>C</b>5509/<b class='flag-5'>C</b>5509A I2<b class='flag-5'>C</b>外設(shè)進行編程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
從TMS320C6211B/C6711/C6711B和C6713遷移到TMS320C6713B
![從TMS320<b class='flag-5'>C</b>6211B/<b class='flag-5'>C</b>6711/<b class='flag-5'>C</b>6711B和<b class='flag-5'>C</b>6713遷移到TMS320<b class='flag-5'>C</b>6713B](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
usb-c和type-c哪個好
![](https://file1.elecfans.com/web2/M00/CD/75/wKgaomYgmg2ADWcPAAFu55dKSPQ208.jpg)
C/C++代碼動態(tài)測試工具VectorCAST插樁功能演示#代碼動態(tài)測試 #C++
USB-C和TYPE-C有哪些區(qū)別
![USB-<b class='flag-5'>C</b>和TYPE-<b class='flag-5'>C</b>有哪些區(qū)別](https://file1.elecfans.com//web2/M00/C7/34/wKgaomYGvvGATrQEAAB_vZu8xzY625.jpg)
評論