發佈嵌入式軟體不只是「能編譯就好」。真正重要的是安全性、資安防護,以及是否符合規範。


在產品上線後才出現的 bug 會消耗工程時間、降低客戶信任;漏洞則會讓連網裝置暴露在風險中。而在受規範的市場中,如果未通過 MISRA 或 CERT 的檢查,產品可能無法順利上市。越早找出問題,修復成本就越低、風險也越小。

這就是靜態程式碼分析(Static Code Analysis, SCA)能幫上忙的地方:在最早期就找出缺陷與不符合規範的程式碼,讓修復成本降至最低。


在 Zephyr 裡,你可以直接把 SCA 整合進 build 流程,不需要額外繞路或客製化工具鏈。

對嵌入式團隊來說,一個常見痛點就是要把分析工具硬塞進原本沒為它設計的 build 流程。Zephyr 解決了這個問題,你可以直接把靜態分析工具掛接在 west 的建置系統裡,不需要複雜的 script,也避免脆弱的 workaround。

要選擇分析工具,只需要設定 ZEPHYR_SCA_VARIANT build 參數。
你可以用 CMake 參數或用環境變數來指定:

west build -b <board_name> <application_path> -- -DZEPHYR_SCA_VARIANT=<tool>

如果你的專案需要證明程式碼品質並符合安全/資安相關標準,Zephyr 現在提供 IAR C-STAT 的原生支援,讓這件事比以往更輕鬆。C-STAT 是 IAR 平台的一部分。

C-STAT 是一套完整的 C/C++ 靜態分析工具,可依多種程式碼規範與既有漏洞清單檢查你的程式碼,包括:

  • MISRA C / MISRA C++
  • CERT C / CERT C++
  • CWE 與資安最佳實務
  • 可靠性與可維護性檢查

在 Zephyr 啟用 C-STAT 很簡單。只要照原本方式 build,再額外加一個參數指定 IAR C-STAT 為 Zephyr 的 SCA 工具即可:

west build -b stm32f429ii_aca samples/basic/blinky -- -DZEPHYR_SCA_VARIANT=iar_c_stat

不同團隊的需求從嚴格的安全合規,到偏向輕量的資安檢查都有。C-STAT 提供高彈性設定,可以依照團隊流程調整分析方式:

  • CSTAT_RULESET — 選擇規範組合(如:all、cert、misrac2012、misrac++2008、stdchecks、security)
  • CSTAT_ANALYZE_THREADS — 分析時使用的 thread 數量
  • CSTAT_ANALYZE_OPTS — 額外分析器參數(如:–timeout=900; –deterministic; –fpe)
  • CSTAT_DB — SQLite 資料庫路徑
  • CSTAT_CLEANUP — 分析前是否清理資料庫

例如要同時啟用 MISRA C:2012 與 CERT 檢查,可使用:

west build -b stm32f429ii_aca samples/basic/blinky -- \
-DZEPHYR_SCA_VARIANT=iar_c_stat \
-DCSTAT_RULESET=misrac2012,cert

靜態分析不只是在做合規檢查,而是為了更快打造品質更好的軟體。在 Zephyr build 流程中直接整合 SCA 可以讓團隊:

  • 更早抓到缺陷 — 像是 null dereference、buffer overrun、未初始化的資料等等
  • 更快符合標準 — MISRA、CERT 檢查直接在 build 中跑
  • 讓 Code Review 更專注 — 工具自動標示違規項目,工程師能專注在設計面
  • 建立信心 — 提供持續性的程式碼健康度證明,對稽核與客戶都更有說服力

透過 Zephyr 的 SCA 基礎架構與原生 IAR C-STAT 支援,你可以在每一次 build 過程中執行安全、可靠性與合規檢查,不論是在本地、CI/CD pipeline,或是在 container 中運作。這能讓團隊更早發現問題、減少後期風險,並有自信地交付更安全、更乾淨、符合標準的程式碼。

如需更多資訊,可參考 Zephyr 官方的 IAR C-STAT 靜態程式碼分析文件。您也可以查看 IAR 的 Code Quality & Compliance 解決方案以取得更多資源。

本文由IAR提供

延伸閱讀⎟