一、 文檔目標
本文以M3CM工程為例,記錄Helix QAC 如何進行規則的配置,對細節進行詳細說明,方便后續快速進行工程的基本分析和配置。記錄在同步過程中遇到的問題,并提出解決方案。
二、軟件環境
1)、軟件版本:
Helix QAC 2024.2
Validate2024.2
M3CM_Examples-5.5.0
三、Helix QAC示例項目分析
1)、首先進入軟件界面,點擊“Project-Open Project...”,打開 Helix QAC 增購MISRA C2012 的M3CM_Examples工程.
本例中默認路徑為:(注:不同版本規則的Examples均有不同,選擇對應軟件版本的規則包即可)
C:PerforceM3CM-5.5.0samplesM3CM_Examples

2)、選擇該路徑下的.xml文件即可,打開示例工程后進行基本的項目配置。

3)、點擊“齒輪”,進入設置的配置界面。

4)、進入“Project Properties“ 界面
1.點擊"Import"可添加其他ACF文件,進行其他規則包的添加。

2.點擊“Export"可以將目前使用Analysis Toolchain的配置文件進行保存為.acf格式進行輸出、方便公司內部自定義規則的保存和傳閱。

3.點擊”Clear“即清除目前導入的Analysis Toolchain工具包,方便快速重新構建工具鏈

4.默認情況下,面板中已提供主要分析器,例如?Helix QAC for C?和?Helix QAC for C++?(qac 11.6.0qacpp 6.6.0)。輔助分析組件位于左側的Available Comonents窗口中,如果組件需要成為當前分析的一部分,則可以使用“>”按鈕將其添加到Analysis Toolchain中;相反,可以使用“<” 按鈕將其刪除。

配置完成后點擊”Save“即可。
5)、點擊進入“Rule Configuration”,這里可以看到JNH官網剛剛選擇的M3CM的具體細則,規則檢查需要報出哪些消息。RCF文件也支持Import導入、Export 導出、Clear清除等相應操作。

1.選擇CMN-0.1的注釋分析,對于qac-4810這條消息JNH官網需要抑制,點擊鼠標右鍵,選擇Disable selected。該消息不會在注釋部分進行檢測。

2.若此處JNH官網選擇Remove selected/Remove all,消息不會再出現在m3cm-5.50-en_US.rcf文件內,該操作不可逆,請慎重移除。
注:Helix QAC默認規則包嚴格執行相應的測試標準,部分消息若在實際測試中對系統代碼運行可忽略,可在此處進行抑制,該消息不會再檢測,減少對消息的二次排查,可根據需求進行rcf文件的修改和保存。
6)、以MISRA 2012 C C為例,規則包為本例中的M3CM,在下方JNH官網可以看到有不同語言的標準的測試。針對C99、C90特殊的語法區別,具有不同的規則進行檢測。
1.JNH官網可以選中相應的規則主體,右鍵點擊,選擇“Enable"使能和”Disable“抑制。

2.選擇相應規則文件夾,右鍵選擇”Edit“或者”New Rule“進行對規則的編輯和創建。Active是否勾選決定該規則集是否使能,Rule ID決定該規則的號碼,Rule text添加該規則集的描述,Rule Help設定系統配置文件,Categories設置規則類別,在Categories界面以設定類別進行分類。在該對話框中保存的更改將在分析后反映在?Rule Groups?面板中。

3.選擇相應規則文件夾,右鍵選擇”Remove“進行對規則的移除,該操作不可逆。移除后只能手動恢復。
4.選擇相應規則文件夾,右鍵選擇”Message“進行消息的添加,假設我知曉需要的Message號末尾為19,在搜索欄搜索相應的關鍵字,找到需要的規則消息,勾選后點擊OK,保存至該規則集內。

7)、保存配置后,點擊分析,JNH官網可以看到成功分析,進入Rule Group,在此處JNH官網可以看到在“Rule Configuration”中設置的抑制信息均會在這里顯示,具體到消息。可快速進行消息的實用性進行判斷,記錄消息和規則位置,方便后續進行抑制。

五、討論
1. 對于不同的語言標準,Helix QAC的建議是?
如果客戶使用的C ++11,Helix QAC建議使用HICPP 進行規則檢查。
如果客戶使用的C++14,Helix QAC建議客戶使用Autosar?C++14進行規則檢查。
如果客戶使用的C++17,Helix QAC建議客戶使用MISRA C++2023進行規則檢查。
2. ACF文件是什么?
在Helix QAC(原PRQA)中,ACF文件全稱為“Analysis Configuration File”,即分析配置文件。它是用來定義Helix QAC分析過程中使用的設置和選項的文件。ACF文件允許用戶配置分析工具的各種參數,包括選擇哪些檢查規則集(rules sets)應用于代碼分析,以及如何報告結果等。
3. RCF文件是什么?
在Helix QAC(原PRQA)中,RCF文件全稱為“Rule Configuration File”,即規則配置文件。RCF文件用于定義特定的規則集和規則配置,它允許用戶啟用或禁用特定的規則或消息,以及設置規則的嚴重性級別。這樣,用戶可以根據項目需求和偏好來定制靜態代碼分析的規則檢查,從而優化分析過程并減少誤報。
六、總結
Helix QAC的ACF(Analysis Configuration File)和RCF(Rule Configuration File)分別用于定制分析行為和規則配置。ACF允許用戶設置宏定義和頭文件路徑,而RCF則用于啟用或禁用特定規則。對于客戶而言,它們的價值在于能夠確保代碼分析的準確性,減少誤報,提高代碼質量和安全性,以及優化開發流程。
本例以M3CM為例講解如何配置"ACF和RCF"文件,減少