0.QAC软件结构
prqaproject.xml :文件保存工程相关信息
config :包含工程各配置文件,如 cct 、 acf 、 rcf 等。
output 按照代码层次创建文件夹,保存分析后输出文件。
reports :保存生成的报告文件
src\lib…:相关代码文件夹,可手动或通过同步导入(保持其结构)
1.验证License
这个需要在创建工程之前验证License是否可用,否则就算导入文件成功也没法分析
2.创建工程
2.1 Project--->Create New Project
2.2 在新对话框内进行工程基本信息的填写
注意这里Compiler Setting 这里需要选择C语言或者C++,或者两者都选择,取决于测试的项目所使用的语言。
1)Project Name 栏通过右侧按钮选择工程根目录,以根目录名作为工程名。通过右侧按钮
选择工程根目录,以根目录名作为工程名 选好目录后可以进行修改,修改后重新创建工程
目录。
2)根据工程需要在下拉菜单选择配置文件。 (初始选择 default.acf 和default .en_US.rcf 即可)
3)点击 Next 进行相应编译器的选择 ,先选择 C ,在选择 C ++,如果只用 是 C 或者只
是 C++ 的代码 ,则另外一种 cct 可以 任意选择。
2.3 建议选择与实际编译器匹配或接近的 cct 文件,没有匹配的编译器时选择Helix_Generic_C 或 Helix_Generic_C++ 。
2.4 设置完毕后,点击 Finish 则可在弹出的窗口进行工程详细设定。
3.添加代码
手动添加代码可选择添加单一文件,或添加文件夹。右键选中文件夹,点击Add File(s),选中源代码所在路径。
4.工程配置
点击 Project --> Project Properties ,打开工程属性页面。
1、 Analysis 用于分析配置。从 Component Option 中选 择配置选项,在对应 Argument
窗口(界面右下角)中进行对应 设置。如选择 i 、 d 等
参数 | 含义 |
---|---|
-d | 必要的宏定义添加 |
-i | 添加必要的头文件路径 |
-quite | 抑制无影响的头文件输出 |
-max errors | 制定最大错误数 |
-threshold | 度量元检测值设定eg:STCYC>10 |
-warncall | 调用函数设置警告eg:open =6001 |
选中Analysis栏,点击qac 9.9.0,点击 -i或者 -d 双击右侧空白处可用添加
这里比较常用的是 -d 和-i,分别是添加路径和宏定义,QAC分析出的错误主要和这几个相关。
Rule Configuration 用于消息设定
在 Rule Configuration 可查看变更 Message 以及规则组。
在这里可以右键不需要的规则disable掉,如果需要 添加其他组件可以按这个方法添加m3cm 2.5.0
Rule Configuration 界面配置 m3cm 规则集
与之前一样,选save和close之后即可设置成功。
5.执行分析
方式一: 通过菜单栏 Analysis -->File Based Analysis ,选择 对当前工程、所选文件或
勾选指定文件进行静态分析。
方式二:也可以点击图标进行分析
方式三: 可在工程文件列表中,选择相应文件夹 文件,右键 Analyse selected files
对其进行分析。
6.分析结果查看
分析完毕后就来到这个界面,下方有个小滑块,可以拖动小滑块过滤出0-9级的错误
违反消息处有叹号标记
Analysis Results/Diagnostics中罗列当前选中文件中违反的消息信息。点击具体 ID 查看 Message 帮助文件,点击 Rule ,查看规则详细信息,双击消息内容,在 代码中高亮显示违反部分代码。可以通过窗口上方叹号标记筛选显示不同级别消息。筛选同时作用于 源代码上的标记。
红色标记Error message
黄色标记Warning message
绿色标记User message
蓝色标记Information message
② 悬浮窗可查看每个违反消息的帮助文档
③ 消息索引 可以选择不同分类:比如——Files 、 Rule Groups 、 Message Levels
7.生成报告
点击菜单 Report ,选择生成工程或单独文件的报告。
可生成 5 种相关报告:
1、 Code Review Report :生成 html 类型文件,显示文件相关度量结果和分析状态(未被抑制的违反规则数)
2、 Metrics Data Report :点击生成 Metrics Data Report ,将生成 xml 文件,存储相关度
量指标数据。
3、Rule Compliance Report :生成 html 类型文件,显示文件详细的违反规则数。
4、Suppression Report :生成 xml 文件,显示被抑制的消息信息。
5、HIS Metrics Report :生成 html 文件,显示 HIS 度量报告。
8.常见错误排查
以下是几种常见的9 级错误以及修改思路
切记:所有 的 9 级错误( error )均属于 QAC 的配置问题或本身语法错误,因此该级别
错误不可忽略,必须修正!
1) 缺少必要的头文件。这是在出现的 9 级错误中,首要考虑修正的问题。而且有可能是引
发 0434 消息的根源
错误形式:
修改方式: 通过配置头文件路径,可以使 QAC 在指定路径下搜索到相关文件
2) 关键字不识别 。 不同编译器有不同的扩展关键字,该部分不会影响 QAC 分析,可以通过
宏定义忽略
错误形式:
修改方式: 通过宏定义忽略 最简单的是“ IDENT=IDENT=”,可实现忽略当前 IDENT 标识符的
作用。
除此以外,宏 设置方式还有如下:使用 IDENT=_ignore 的方式,来忽略IDENT 后面的字符。
数据类型不识别 。 有些数据类型的实现并非通过引用头文件实现,而是编译器内部实现,
这种情况下, 需要 将其手动定义 为匹配的基本类型
修改方式:将非标准数据类型 手动定义 为匹配的基本类型,如 unsigned char 、 short 、int 等
4) #error 错误。 #error 命令是 C/C++ 语言的预处理命令之一,当 预处理器预处理到 #error
命令时将停止编译并输出用户自定义的错误消息。 QAC 分析中, error 报错一般是因为
编译器配置问题导致,我们需要根据当前代码开发环境对工程进行相应配置
错误形式:
修改方式:编译器的库文件中包含众多编译开关如,因此需要在 QAC 中将编译开关涉及
到的宏进行添加,让其进入正确分支,而非错误的“ “#else ”分支
5)QAC 默认设置( size_t/wchar_t/ptrdiff_t )与程序实现不一致
错误形式:
修改方式:在 QAC 中重新设置定义,使其与程序实现保持一致
9.五类报告
上述报告中Calculation of Metrics全部在文件:qac-manual.pdf中有详细介绍,路径为:软件安装路径下…\QAC\QAF\qa-framework-2.2.2\components\qac-9.3.1\doc-en_US\component_manual\pdf。
其中,以下三个参数较为重要:
1) STCYC: Cyclomatic Complexity 循环复杂度;
2) STPTH: Estimated Static Program Paths 评估的静态程序路径;
3)STMIF: Deepest Level of Nesting 嵌套的最深层次;