【導讀】AI編程助手已經徹底改變了一名開發者一個上午能完成的工作量。過去需要幾個小時才能理清思路、寫出草稿的代碼,現在幾秒鐘就能生成。對于探索性工作和快速原型開發來說,這種效率提升是實實在在的。
但在受監管的嵌入式開發領域,比如汽車軟件(ISO 26262)、工業控制系統(IEC 61508)、醫療器械(IEC 62304),速度從來都不是瓶頸,證據才是。這里說的證據不是代碼能跑起來,而是能證明代碼是在明確的開發規范下產出的、經過了相關標準的檢驗、并且從需求到測試全程可追溯。
這正是當前主流AI輔助方式最令人不安的地方:它加速的恰恰是原本并非瓶頸的環節(寫代碼),卻給本來就已經很吃力的環節(驗證、確認與合規認證),帶來了更大的壓力。
AI能生成代碼,卻生成不了合規性
現代AI工具確實很強。它們能建議實現方案、補全函數、生成測試框架。讓它用C語言寫一個轉速(RPM)計算函數,得到的結果往往不僅語法沒問題,邏輯上也說得過去。但這樣的代碼里,唯獨沒有合規性。
一段簡單的AI生成函數,乍一看可能挑不出毛病。可一旦交給執行MISRA C 2012 Rule 10.3的靜態代碼分析工具,其中的隱式類型轉換就會被判定為缺陷,而這個缺陷必須先解決掉,代碼才能被追溯到已驗證的需求上。
這樣的情況,在嵌入式團隊必須遵循的每一項標準里都會反復出現:
MISRA C/C++:安全關鍵型C/C++開發的基礎標準。把語言限定在一個定義清晰的子集內,能最大程度降低未定義行為帶來的風險。這在汽車、工業和醫療領域是不能讓步的底線。隨著AI工具生成的C/C++代碼越來越多,MISRA合規也就成了所有代碼進入代碼庫前必須跨過的一道關卡。
CERT C/C++:關注的是攻擊者慣用的可利用編碼模式。如果說MISRA關注的是功能安全(Safety),CERT C/C++關注的就是網絡安全(Security),而在互聯嵌入式系統中,這兩者的邊界正變得越來越模糊。
CWE:一份記錄常見軟件缺陷的目錄。對于要審查AI生成代碼的團隊來說,CWE提供了一套識別漏洞的通用詞匯。因為模型是從所有數據中學習的,合規與不合規的代碼它都學到了,可能在不經意間就復現了訓練數據中的漏洞模式。
模型不會自動遵守這些標準。這是開發者的責任,需要可靠的工具鏈來支撐。
驗證環節,才是真正的瓶頸
在安全關鍵型項目里,驗證與確認早已占去研發投入的40%以上。這不是效率低,而是構建監管機構和認證機構所要求的證據鏈所必須付出的成本。
如果AI只是加快了寫代碼的速度,卻沒有觸及證據鏈本身,會怎樣?結果是更多代碼涌入驗證流程,瓶頸進一步收窄。資深安全工程師要審查的追溯矩陣變得更龐大,而發布關口卻還是紋絲不動。
AI工具沖擊的,恰恰是開發曲線中本來就不是瓶頸的那一段。
真正的瓶頸,始終是后半程:靜態代碼分析、動態測試、覆蓋率測試、可追溯性,以及最終簽核。如果只加速前面寫代碼的環節,卻不去解決后半程的問題,對于要交付認證級固件的團隊來說,這算不上什么效率提升,反倒是給本已緊繃的流程又加了一道上游壓力。
質量到底該在哪里落地
要填上這個缺口,就得把靜態代碼分析、動態代碼分析和覆蓋率測試真正納入開發閉環,而不是等代碼寫完了再來一輪事后審計,而是讓它成為持續、內嵌的日常環節。理想的工作流,不會把“生成代碼”和“檢查合規”分成兩件事,而是讓兩者融為一體。
把靜態代碼分析嵌進構建過程
靜態代碼分析工具C-STAT是IAR工具鏈的一部分,能在代碼剛寫入的那一刻,就識別出違反MISRA C、MISRA C++、CERT C和CWE規則的地方,遠遠早于代碼被送去評審會或認證審計。AI負責提建議,開發者負責把關,C-STAT負責驗證。

圖:C-STAT分析報告,展示某實際嵌入式項目中MISRA C 2012與CERT C檢查項的違規情況
把動態代碼分析放進調試環節
動態代碼分析工具(C-RUN)會在調試過程中對代碼做插樁,檢測內存泄漏、越界訪問、整數溢出,以及沒處理的switch分支,這些問題往往跟運行時的具體狀態有關,靜態代碼分析未必都能檢查出來。在AI輔助生成代碼、結構看似沒問題但行為卻可能出乎意料的情況下,運行時插樁檢測就不是可有可無的東西了。

圖:C-RUN在調試階段檢測堆錯誤與越界訪問
模型負責建議,開發者負責判斷
這些都不是在反對使用AI。效率提升是真實存在的。在嵌入式軟件領域,熟練開發者本就稀缺、項目又越來越復雜,任何能加快寫代碼速度的工具,都具有真正的價值。
但在AI輔助的工作流里,開發者的角色正在從“代碼的作者”變成“質量的把關人”,開發者不再是從零開始編寫每一個函數,而是依據領域知識評估AI的建議,將其放入分析工具中檢驗,并做出模型無法替代的判斷,例如代碼邏輯是否符合安全意圖、測試用例是否覆蓋到正確場景等。
正是這層判斷,才能把“生成的代碼”變成“能站得住腳的代碼”。而受監管行業真正需要的,就是這種經得起推敲的代碼。
CI/CD:讓證據自動化
內嵌工具能在工作站層面把問題攔下來。但放到團隊協作的場景里,光靠工作站級別的檢查還不夠。真正的執行關口在流水線,不管代碼是怎么寫出來的,每一次提交都要自動拿企業所承諾遵循的標準進行測試。當一次開發者單次工作產出的代碼量,可能比過去一整周還多的時候,人工觸發質量檢查就不再具有可擴展性。檢查必須自動運行,伴隨每一次代碼推送。
IAR Build Tools提供與IAR Embedded Workbench相同的編譯器、鏈接器和工具鏈,并將其打包為可在CI環境中無頭(headless)運行的形式。無論流水線運行在Jenkins、GitHub Actions還是Azure DevOps上,CI中的構建結果都與開發者本機的構建結果完全一致。ISO 26262、IEC 61508和IEC 62304都要求,用來生成發布交付的工具配置必須留檔、可復現,IAR Build Tools讓這一點變得可驗證。
C-STAT可在CI環境中以無頭模式運行,違規項作為構建輸出被報告,覆蓋率趨勢也會隨時間被持續追蹤,架構層面的偏移會立即顯現。合規證據無需等到發布時再臨時拼湊,而是在項目全程中不斷累積。
支撐起這一切的平臺
上面這些工具,只有放進一個真正受治理的開發平臺里,價值才會成倍放大。在這樣的平臺上,構建是可復現的,工具認證有據可查,從源代碼到認證交付之間的整條證據鏈,隨時都能被完整還原出來。
IAR平臺正是圍繞這一需求設計的。它的工具認證(經TüV SüD認證)支持覆蓋ISO 26262、IEC 61508和IEC 62304。C-STAT和C-RUN直接集成在這個環境中,這意味著,合規檢查和構建過程運行在同一上下文中。
這才是“效率”和“合規”之間真正的分水嶺。區別不在于AI本身,而在于它背后依托的平臺和工具鏈。
AI負責編寫代碼,工具鏈保證質量與合規。IAR能實現兩者兼得。



