Trinitytec 发表于 2015-10-10 10:39:08

通过静态分析和持续集成 保证代码的质量 (PRQA )3

第二部分:利用PRQA Jenkins插件进行静态分析
PRQA的Jenkins插件,可与我们的静态分析工具QA·C 或QA·C++一起使用,来对源代码进行分析。在构建完成之后的阶段,该插件自动执行以下主要任务:

[*]分析项目
[*]生成合规报告
[*]将项目中的信息总数与可配置的临界值进行对比,如果超过了该临界值,就将构建状态设置为“不稳定”:可以将其当作大门,阻止后续任务的执行。
[*]有选择性地将分析结果上传到QA·Verify中,这是PRQA的网络质量管理系统。
分析阶段的工作可以通过“依赖模式”来开展——所以只需要对在上次分析之后有所改变的文件进行分析,从而尽量减少项目的分析时间。也可以在构建阶段进行分析(比如Makefile集成),并向插件提供列表,列出所有经过分析的文件,让插件可以识别到已分析过的文件。
如图5,插件将概要信息显示在事件网页上。
http://images2015.cnblogs.com/blog/772469/201510/772469-20151009165945174-900953253.png
图5 使用PRQA插件的事件(为适应页面大小改变了一下格式)遵从度和每次构建时产生的信息总数都能以曲线图形式显示出来,这样就很容易看到编码规范的违规趋势。合规汇总表显示项目和文件的合规百分比(这些数据可从QA·C/QA·C++合规报告中获取,报告会详细指出不符合编码规范的代码)以及所产生的信息总数。第二个表显示的是各个级别的分解信息。插件会自动存档所有报告,所以在项目合规状态方面能够提供更详细的信息。
违规数量的临界值可设置为绝对值,比如0,表示不允许有任何违规行为。此外,还可以设置执行临界值的信息级,这样就可以将信息的严重性等级考虑在内。如果代码需要的维护工作不是特别复杂,样式方面的问题也不是很严重,就可以视为通过;但是如果代码有严重的问题,就不能通过。
能够将分析结果上传到QA·Verify是该插件最强大的功能。将结果上传之后,开发人员就可以看到深入的分析结果,包括带注解的源代码,这些结果中会显示违反编码规范的具体位置。该插件还允许添加、管理和报告违反编码规范的代码,并可自动校对代码是否遵循编码规范,如MISRA C。QA·Verify也会向其它项目相关者(比如,管理员,甚至是客户)公开这些质量信息。图6展示了PRQA工具是如何与Jenkins配合使用的。
http://images2015.cnblogs.com/blog/772469/201510/772469-20151009170140409-1193652287.png
图6:Jenkins与QA·C,QA·C++,QA·Verify配合使用的情况开发人员像平常一样提交代码(代码先提交到临时库中,当代码通过所有测试时,再转入正式库)。要配置持续集成服务器,以便可以对原代码进行 QA·C 或 QA·C++分析。概要信息,如:通过集成服务器可以了解代码是否遵循了最佳编码惯例,而且,分析结果还可以自动上传到QA·Verify。这样开发人员就可以通过网页浏览器看到带注释的源代码,从而准确找到不符合编码规范的地方,以便在重新提交代码之前修复这些问题。
其它项目相关人员可以在QA·Verify中看到带注释的源代码,但是管理层和质检人员等,会希望了解更多其它更高级别的数据。管理层可能不太想看源代码,他们感兴趣的应该是:代码中有多少问题——问题的数量是呈上升还是下降趋势。因为可以看到项目中不同级别的信息,管理层在做决定时,就可以根据必要的数据来判断应该如何重新分配资源。

结论
通过持续集成,很容易就能够“循序渐进地”将最佳编码惯例应用于静态分析中。持续集成能够让集成和测试环节贯穿整个开发阶段,这将为开发带来很多裨益。因为这样有利于在问题变得严重之前尽早解决,还能保证存储库中的代码一直处于高质量状态。
使用插件,很容易能够将PRQA静态分析工具QA·C和QA·C++与Jenkins持续集成结合起来,从而迅速给出反馈,指出代码是否遵循了编码规范和最佳惯例。该插件还能够将结果上传到QA·Verify,以便进行深入的调查研究和趋势分析。
将持续接触和PRQA的静态分析工具结合起来能够帮助提高代码的交付质量,并且能保证在规定时间和预算范围内实现交付。


页: [1]
查看完整版本: 通过静态分析和持续集成 保证代码的质量 (PRQA )3