【Perforce】Helix QAC-规则包管理

一、 文档目标

本文以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”,这里可以看到我们刚刚选择的M3CM的具体细则,规则检查需要报出哪些消息。RCF文件也支持Import导入、Export 导出、Clear清除等相应操作。



1.选择CMN-0.1的注释分析,对于qac-4810这条消息我们需要抑制,点击鼠标右键,选择Disable selected。该消息不会在注释部分进行检测。



2.若此处我们选择Remove selected/Remove all,消息不会再出现在m3cm-5.50-en_US.rcf文件内,该操作不可逆,请慎重移除。


注:Helix QAC默认规则包严格执行相应的测试标准,部分消息若在实际测试中对系统代码运行可忽略,可在此处进行抑制,该消息不会再检测,减少对消息的二次排查,可根据需求进行rcf文件的修改和保存。


6)、以MISRA 2012 C C为例,规则包为本例中的M3CM,在下方我们可以看到有不同语言的标准的测试。针对C99、C90特殊的语法区别,具有不同的规则进行检测。

1.我们可以选中相应的规则主体,右键点击,选择“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)、保存配置后,点击分析,我们可以看到成功分析,进入Rule Group,在此处我们可以看到在“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"文件,减少