软件测试工具比较:QAC/QAC++ 与C++ Test的对比分析

QAC/QAC++ 与C++ Test的对比分析
1.        公司背景
        Programming Research公司总部在英国,1986年成立,是编程标准领域的权威,专注于 软件代码的质量,是ISO、 MISRA 等协会的主要成员,参与制定了多项国际编程标准,提供QAC/QAC++/QA J等编程规则 检查 工具,同时也为客户提供编程标准审查、咨询等服务。
        Parasoft公司总部在美国,1987年成立,主要研究错误 如何引入到软件以及如何预防,创始人出版过一些软件错误防御以及最佳实践的书籍,在中国有办事处,代理商有几家。
2.        产品构成
        Programming Research公司的产品包括:
        QA C ——C语言静态分析编程标准检查工具
        QA C++ —— C++ 语言静态分析编程标准检查工具
        QA J —— Java语言静态分析编程标准检查工具
        另有MISRA C 2004/MISRA C++ 2008/JSF AV++等标准一致性检查插件
        Parasoft的主要产品:
        J test —— JAVA语言代码分析审查、 测试工具
        C++test ——C/C++语言代码分析,动态测试套件
        Insure++ —— 运行时错误分析工具
        WebKing——是SOAtest的一部分
        SOAtest——WEB类型应用测试工具
        BPEL Maestro——帮助简化WEB服务的架构
        Concerto—— 项目流程 管理软件
        .TEST——.NET 开发 工程师的工具包,包括静态分析和动态测试
3.        主要 功能与应用方向
QA C/QA C++:
代码审查和静态分析,利用先进的EDG分析器 技术,对C/C++代码进行静态分析,基于软件内置的超过2000多条规则(C部分1300多条,C++部分1300条),报告被测软件违反规则的情况,包括代码的安全性隐患,危险用法,未定义行为等。同时提供上百种软件静态度量,包括基于 函数,基于 文件和类的。可以提供软件的结构分析。
主要用于:
        帮助企业实施编程标准,作为 自动检查工具使用;
        开发工程师的桌面检查工具,帮助提高代码的一致性和质量;
        代码评审辅助工具,生成的报告可以作为代码评审的有用 信息

C++ Test:
静态分析
基于800多条编程准则(C/C++混合在一起)进行 自动化的编程规范检查。
不提供软件质量度量和软件结构分析(待定)
缺点: C和C++是两种编程语言,C的编程标准和C++的编程标准是两种不同的标准,C++ Test用一套编程标准对C和C++同时进行检查,无法做到专业、准确。

动态测试
典型的单元测试功能,自动生成测试 脚本自动打桩,C++ Test是一个工具套件,同时包含静态分析和动态测试,QA C系列工具专注于静态分析和编程标准检查,可以集成其他的动态测试工具,例如Cantata++实现动态测试的能力。

C++ Test功能比较全面,主要用在开发人员的调试、代码走查和单元测试阶段
QAC/QAC++ 可以作为企业、组织、团队的编程标准约束工具,在机构内贯彻实施编程标准的利器。
4.        技术指标分析
工具
特性        QAC /QAC++        C++ Test
支持的标准        ISO、MISRA C、MISRA C++、JSF  AV++、GJB5369、Effective C++…        MISRA C/C++ Effective C++...
规则数量        C:1300、 C++:1300        C/C++共800
报告形式        GUI 浏览器、HTML、TXT、EXCEL、WORD、PDF、XML,报告格式可以定制各种 中文模版        提供20种报告模版
中文汉化        提供中文的警告消息报告,提供中文的报告        不详
支持MISRA        作为MISRA协会的主要成员,目前QAC7.1 支持95%,QAC++2.5支持88% MISRA C++标准的规则, 是支持MISRA规则最全面的工具        其支持MISRA规则是由RuleWizard自定义模块构成,只支持部分MISRA C/C++规则
集成性        提供MS VS6.0 .NET、Tornado、Eclipse等集成插件,也自定义集成,目前还可以集成Keil, Source Insight, VisualDSP等IDE环境。
可以继承makfile 等Build环境,可以继承配置管理工具        Eclipse
Visual Studio .NET
Wind River Workbench
ARM Real View Development Studio
NetBurner
Baseline功能        能够提供Baselining功能,把历史遗留的软件最为一个基线,只报告新加入的代码和修改的代码所存在的软件问题,可以和版本管理工具集成        无此功能
规则定制        QAC/QAC++提供规则定制的接口,也就是Post Analyses接口, 用户可以利用这个接口描述编程风格,命名约定,编程限制,度量限制、代码中存在问题的规则定制
        提供Rule Wizard模块,基于GUI的规则定制,可视化开发, 学习也需要一定的 时间,开发定制规则难度亦不小

软件度量        提供C语言60多种静态度量指标
提供C++语言20多种静态度量指标
以图形化的形式报告可以导出到Excel,进行质量度量
        无(待查)
结构分析        提供函数调用关系, 数据引用关系、包含关系、函数控制流图等分析        无(待查)
编译器支持        支持所有的C/C++编译器        针对特定的主机编译器和嵌入式编译器
分析器性能        采用先进的EDG 解决方案,分析器性能优越,分析速度快。
当前主流硬件配置下万行代码不超过10秒        私有分析器技术,分析速度慢,一般比QAC/QAC++慢2倍以上,如果打开自定义规则,分析速度更慢

5.        参考案例
摩托罗拉(中国)选择QAC作为编程规范检查工具
2006年摩托罗拉(中国)某部门选用QAC作为代码规范检查工具,之前此部分曾经购买CodeWizard(现已经合并到C++Test中),使用中发现分析 结果存在较多的误报,同时也有一些不安全的代码被遗漏等情况出现,经过试用,最后认为QAC分析速度快,分析结果准确,全面,QAC的MISRA模块生成的《MSIRA一致性报告》作为该客户的代码审查唯一的依据。


航天科工集团飞航技术研究院推广QAC/QAC++编程标准检查工具
2007年初, 航天科工集团飞航技术研究院(以下简称三院)准备在全院各个研发单位实施编程标准,具体的标准制定和工具选型由304所牵头开展,2007年9月,304所对多家供应商及其工具进行调研并实际试用评估,认为QAC/QAC++:
        能够满足三院对C/C++编程规则进行自动检查的要求
        可以针对三院提出的附加规则进行开发和定制
        成熟的许可证管理机制可以在三院内网部署
        具有许可证 资源冲突和超时管理的机制
        分析速度非常快
        可以生成多种格式的报告,报告模板可以定制
综合比较QAC/QAC++功能强大,且性价比最高,最终选择了旋极公司代理的英国PR公司的QAC和QAC++,作为在全院范围内强制执行编程标准检查的指定工具,旋极公司在软件工程化和 软件测试领域处于国内领先地位,有着10多年的 经验,是很多国防和军工研发单位软件工程化和测试方案的供应商和服务商,旋极公司不仅仅为客户提供软件测试的工具,更凭借雄厚的技术实力和长期积累的经验为用户提供工具实施和项目开发的咨询服务,304所工程师和旋极公司工程师一起对GJB5369-2005《航天型号C语言安全子集》以及《Effective C++》等标准进行分析,最后对航天三院的C/C++标准进行的调整和优化,并由旋极公司提供专门的检查模块。
2008年4月,由航天304所和旋极公司共同对涉及三院的七个软件研发单位进行了编程标准和工具使用的 培训。工具许可证 安装在三院信息中心机房 服务器上,三院各单位通过内网获取浮动许可证本地使用,项目启动近一年来,QAC/QAC++在各软件研发单位发挥了巨大的作用,已经成为型号软件开发中的必不可缺的常用工具,保证了型号软件的标准符合性和软件的质量。
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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值