PRQA/Helix QAC软件工具使用介绍

0.QAC软件结构

prqaproject.xml :文件保存工程相关信息
config :包含工程各配置文件,如 cct 、 acf 、 rcf 等。
output 按照代码层次创建文件夹,保存分析后输出文件。
reports :保存生成的报告文件
src\lib…:相关代码文件夹,可手动或通过同步导入(保持其结构)

Helix QAC是Perforce公司(原PRQA公司)产品,主要用于C/C++代码的自动化静态分析工作,可以提供编码规则以及信息安全相关检查、代码质量度量、软件结构分析、测试结果管理等功能。Helix QAC能够准确地发现软件中潜在的问题,自身符合ISO26262功能安全标准认证。适用于自动驾驶领域,能保障嵌入式软件的质量,提高其防御黑客攻击能力。Helix QAC主要模块为QAC/QAC++、Dashboard(原QA Verify)以及常用行业规则包(如MISRA C:2012、MISRA C++:2008、AUTOSAR C++、CERT、CWE等)。

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 嵌套的最深层次;

  • 30
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1、 QAC介绍使用说明 其他的功能概括 1、提供一种可量化措施的代码度量值属性:33基于功能 32基于文件和4个项目级别 2、功能结构关系图,以提供控制流动洞察 3、展示全局调用函数的关系图引用和文件树结构 4、提供统计分析对代码质量的全面评估 5、跨模块分析能力(CMA)、分析递归功能和全局标识符的各种问题 6、简化的旧代码修改的设置基准模块 Source..c文件通过分析工具生成3种文件source.c.i、source.c.met、source.c.err。source.c.i文件可以直接生成报告文件,.met、.err这两个文件可以分析出功能结构、关系、特征标准、报告或者进行跨模块分析,对于跨模块分析和剖析器分析需要进行配置,source.c.met、source.c.err、配置文件可以在信息浏览器中显示 2、 规划 2.1、自动生成文件及参数说明 生成自动文档步骤: 1、从文件菜单中选者Auto-Create Project 2、进入Root Folder Name,这是工程的根目录,后面的自动生成的文件都会对应此根目录产生 3、进入Starting Directory,这个源代码目录与工程的根目录相连 4、进入Output File Path,这里可以选择QAC分析后的输出文件,好的情况就是用一个专门的目录和工程根目录相连 5、Replicate source tree structure in output paths通常是为输出部分建立一个子目录结构,这里可以有2种选择,可以选择Parallel to Source Structure为源代码建立一个平行的目录结构,或者选择Sub-path to each source location把规定的输出的子目录嵌入到源工程目录下面 6、选择File Extensions可以加入项目,通常只要选择一个.C文件,包括对.H文件也就被加入 7、为文件夹选择一个个性,可能会使用默认设置为起始点,可以在QAC中选择Configuration菜单 8、点击OK就是建立了工程,包含源文件工程和子文件夹 9、保存文件,外部扩展名为.prj 注意:也可以在已有的项目上自动生成一个文件夹,点击菜单Edit > Auto-create Sub-Folders,其余步骤和以上相同 文件夹参数:包括文件夹名称、默认源路径、输出路径和三种个性 可以进入Edit > Folder Parameters只可以改变文件夹参数,进入Edit > Propagate Changes to Sub-Folders可以改变所有子文件夹参数 2.2、手动生成文档及参数说明 生成手动文档步骤: 1、从菜单File中选择New Project,显示一个对话框New Project Parameters 2、进入Root Folder Name,输入一个项目名称 3、进入Default Source Path为项目初始化文件夹,这个路径可以改变所有子文件夹 4、在Output File Path中选择需要输出的分析文档 5、为工程选个个性 6、点击 OK创建项目,这工程的配置是唯一的文件夹 7、按要求增加更多的子文件夹和文件按要求 8、保存文件,外部扩展名为.prj 文件夹参数;在File > Reopen这项中可以有10多个选项,当没用的文件可以选择Clean-up。 文件和目录的位置时重新打开项目,将检查的存在。如果不存在一个条目将显示下面的对话框。有的更正可以自动应用的过程。 2.3、选择输出文件 一般文件夹的层次结构在在左边显示,选择的列表在文件的右边显示 所有的选择都在Browse 和d Reports这两个菜单中 A、如果选择单个文件或一组文件,则使用 B、否则当前所选文件夹,再加上所有子其文件夹,窗体所选内容。这意味着使用这些文件夹中的所有文件。 在浏览器内修改,有可能会改变开始的选择,用Select Files…在File菜单内 2.4、互相比较和环境变化的报告 2.4.1、根路径 2.4.2、基于GUI的环境变量创建 2.4.3、相对路径和环境变量的运用 选择Apply Relative Paths项可以选择相对路径减少的所有文件条目,根目录在右上角,表示保存项目文件的位置,确定路径是否合适相对路径减少。 选择Make file paths in each folder relative to its Default Source Path entry项,如果想要应用一个虚拟的环境变量表达默认每个文件的源路径到其他文件条目下。 在Available Environment Variables列表下,可以添加EVs to Apply至右边框中,将这种替换只发生在项目中的项的文件或关联的路径不受相对路径减少的个性 选择Apply path reduction to personality file entries associated with the project项,为了继续应用相对路径和环境变量在文件路径下的个性定义 选择Remove all path reduction from the project and associated personalities项若要撤消所有的相对路径和环境变量从相关个性设置项目恢复到完全在所有情况下限定的路径 例如,一个被重建的“Diff”项目如下所示与充分的relative道路实施 3、 配置QAC 为应用程序配置主要通过可访问Configuration > Options选项卡,有以下几点: Annotated Source 附加说明源 Cross-Module Analysis 跨模块分析 Custom Reports 自定义报告 Default Personalities 默认特性 Editor Preferences 编辑选项 Environment 环境 (Product)Extensions (产品)条目 Project File Options 项目文件选择 要查看您的安装与那些一起中的个性的一组在您的项目中定义,可以在Configuration下选择Message Personalities, Analyser Personalities or Compiler Personalities这几个选项 当创建了一个额外的特性,也可以设置它们成为系统默认,在Configuration>Options>Default Personalities下设置 3.1、配置编译器特性 看附录A 3.1.1、设置系统头文件 在系统包括系统标题选项卡上的标题,设置您系统标头包含路径 可以点击Suppress Output阻止这些头文件,当阻止了那些头文件,一些从特定的头文件或路径中产生的分析数据也不能在.err、.met文件中出现 您可以手动输入是相对于当前项目的路径位置,虽然建议进行完整路径选择和然后将任何选择的道路减少保存项目的过程中的应用操作 3.1.2、设置系统宏 在System Macro Defines下的Project Macros菜单中,设置宏同编译器或开发环境一致,宏可以在Compiler Personality或Analyser Personality设置 3.1.3、设置实现定义的类型 在c编译器里有3中类型定义,在“implementation defined”中选择,如下: size_t 一种无符号必需类型通过sizeof操作表示返回类型 ptrdiff_t 一种有有符号必需类型用减法运算的两个指针来表示 wchar_t 它反映了类型的范围内的整数类型字符文本和宽字符字符串 在Data Types下的Intrinsic Types条目控制这些类型的方法实施,需要以匹配编译器配置环境。所载入的任何相应类型声明头文件(e.g. stddef.h, stdio.h)必须反映内在匹配值类型。如果不符合,qac提示等级9的警告,如有必要,检查您的头文件确定适当的设置这些选项。 如上所述:QAC随提供一套标准库的头文件,如果想改变这些类型定义,必须先明白QAC内部的定义类型,因为那些头文件包含一些声明ptrdiff_t, size_t 和wchar_t,还有3种宏指令定义PRQA_PTRDIFF_T, PRQA_SIZE_T,和PRQA_WCHAR_T, 3.1.4、编译器扩展 许多编译器制造商实施 ISO C 的扩展语言定义来利用特定的硬件环境。特别是在嵌入式软件代码的速度和空间是重要 使用的语言扩展的危险是他们妥协可移植性。源代码越来越依赖于编译器和硬件环境。 QA C 是能够分析各种不同的语言变体和扩展,但它不是通常能够解释扩展在语义上。通常,必须配置该工具等,非标准关键字将被忽略。 有几种方法可以为此配置QAC,看附录B–extensions部分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一知半解-老同志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值