内容


建立一个 Jazz Build Engine 来运行 Ant 脚本

第 3 部分. 设置构建脚本来协调代码审查和构建

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 建立一个 Jazz Build Engine 来运行 Ant 脚本

敬请期待该系列的后续内容。

此内容是该系列的一部分:建立一个 Jazz Build Engine 来运行 Ant 脚本

敬请期待该系列的后续内容。

这一系列文章将介绍如何使用 IBM® Rational Team Concert™ 来执行代码审查(code review)。基于代码审查的结果,这一过程或者提交构建版本进行编译,或者停止并报告代码审查错误。

第 1 部分描述了文中示例场景的构建定义、技术和功能等相关背景,以及支持构建定义的 Jazz Build Engine 配置。第 2 部分介绍了基于 Ant 的构建脚本,即定义构建任务如何运行的 build.xml。您需要首先阅读系列文章的第 1 及第 2 部分。

第 3 部分,即这篇文章,将介绍如何运行 RPP 同步任务,如何实现代码评审,如何解析、转换和发布代码审查结果,以及最后如何运行构建。

审查:Ant 构建脚本的描述

这一系列的第 2 部分介绍了如何使用一个运行在 Jazz Build Engine 上基于 Ant 的脚本,并贡献(contribute)构建工件返回给 Rational Team Concert 服务器。

Ant 脚本的格式是 XML,其中的节点定义了构建所要运行的任务。通常这一脚本被命名为 build.xml。更多关于如何创建一个基本的 Ant 构建脚本方面的信息,可以查询 Jazz.net 的文章“Getting Started with Ant scripts and RTC Build Ant Tasks”。

build.xml 脚本描述了从属构建(subordinate build)到特定构建过程的集成。这一过程包括了以下步骤,如图 1 所示。

  • 发布构建参数文件作为构建贡献(contribution)。
  • 运行预览依赖构建来识别自从最后一次构建依赖哪个 COBOL 程序发生了变更。
  • 发布 buildableFiles.xml 来作为构建贡献。
  • 转换这一文件为 .txt 文件,使其对于代码审查环节可读。
  • 运行 Rational Programming Patterns 同步来强制更新 Rational Programming Patterns 索引。
  • 解析同步日志文件来检查同步是否成功。
  • 为有限边界(limited perimeter,仅限自从最后一次构建以来有发生变更的 COBOL 程序)运行代码审查
  • 解析代码审查结果文件来检查是否有严重错误被侦测到。
  • 转换 .csv 结果文件为 .html 文件,并发布为构建贡献。
  • 如果没有严重错误被侦测到,运行一个从属构建来编译有限边界。
  • 等候从属构建的结束,并重用构建状态来实现主构建
图 1. build.xml 模式
解释构建过程的模式
解释构建过程的模式

发布任务以及预览构建任务涵盖在本系列的第 2 部分中。本文将从 RPP 同步任务开始。

RPP 同步任务

RPP 同步任务将一个 Eclipse 工作空间(workspace)与一个加载在 Rational Team Concert 构建中的沙箱(sandbox)进行同步。这一步骤专用于 Pacbase 应用,在 Java 或 COBOL 场景中可以被跳过。
模式片断 | 完整模式
图 2. build.xml:RPP 同步任务
build.xml 抽取第 162 到 192 行
build.xml 抽取第 162 到 192 行

这一命令用于运行保存在 synch.bat 文件中的 RPP 同步任务,如清单 1 所示。

清单 1. synch.bat 的内容
rem parameters:
rem  %1   ${team.scm.fetchDestination}
rem  %2   ${outputDir}
rem  %3   ${outputDirRpp}

CD "C:\Program Files\IBM\SDP_90\rpp"
CALL rpp --synchronize --sandbox %1 --data "%2/TEMP" --log "%3/TraceRppSync.log"

在 Rational Programming Patterns 场景中,这一步骤是更新 Rational Programming Patterns 内部索引(internal indexe)所必需的。在 COBOL 场景里,您可以跳过这一步骤。更多关于 RPP 同步任务的细节信息,请查询信息中心

如果返回代码不等于零,那么主构建已经失败。

代码审查任务

使用代码审查任务分析 COBOL 源代码,遵从所选择的编码规则来检查代码。
模式片断 | 完整模式

在 build.xml 文件中查看描述代码审查的完整节点,如图 3 所示。

图 3. build.xml:代码审查任务
build.xml 抽取第 195 到 211 行
build.xml 抽取第 195 到 211 行

这一命令用于运行保存在 CodeReviewCde.bat 中的代码审查,如清单 2 所示。

清单 2. CodeReviewCde.bat 的内容
rem parameters:
rem  %1   ${team.scm.fetchDestination}
rem  %2   BUILD_PARAMETERS
rem  %3   ${inputDirCodeReview}/exportUserRules.dat
rem  %4   ${outputDirCodeReview}
rem  %5   ${outputDirPreview}/buildableFiles.txt

CD C:\Program Files\IBM\SDP_90\bin
CALL codereviewbatch -workspace %1/%2 -rulefile %3 -exportdir %4 -directory 
"%1\BVAP.RES.COB\zOSsrc\pacscreen,%1\BVAP.PRO.COB\zOSsrc\pacprogram" -includefile %5 
-debug >"%4/TraceCQ.log"

在这一命令中,属性值由以下文件所定义:

  • -rulefile 属性:这一先前导出的文件包含了所要应用的质量控制规则。
  • -includefile 属性:由在预览构建任务中转换 buildableFiles.xml 所生成的 TXT 文件。

更多关于如何使用代码审查命令行的细节信息,请查询信息中心

解析,转换及发布结果

代码审查任务生成一个带有时间戳的文件夹以及一个日志文件,TraceCQ.log。
模式片断 | 完整模式

TraceCQ.log 文件如图 4 所示。

图 4. 由代码审查命令所生成的 TraceCQ.log 文件
TraceCQ.log 文件的内容
TraceCQ.log 文件的内容

这一带时间戳的文件夹,如图 5 所示,包含了多个在代码审查期间所生成的文件。

图 5. 代码审查带时间戳的文件夹
带时间戳的文件夹
带时间戳的文件夹

如图 6 所示,所生成的 XML Analysis Results.xml 文件尤其值得注意,因为它包含了所扫描资源的清单以及每一条识别这些资源的规则。

图 6. XML Analysis Results.xml
XML Analysis Results.xml 文件的内容
XML Analysis Results.xml 文件的内容

图 7 中的 build.xml 文件展示了描述日志文件是如何被解析的完整节点。

图 7. build.xml:解析代码审查结果
build.xml 抽取第 214 到 262 行
build.xml 抽取第 214 到 262 行

第一次运行时,日志文件将会被本地加载。然后它将被解析,以使用 :9090/rsar/reports/ 短语来查找报告链接。如果这一短语没有被找到,代码审查将被视为是失败的。

下一步,一个 JavaScript 脚本将从这一短语中抽取时间戳,并构建在何处保存结果文件的路径。

为了重新格式化 XML Analysis Results.xml 文件,并发布它作为构建贡献,使用 report.html 文件中的 XLS 转换来转换这一 XML 文件为一个 HTML 文件。在完成转换之后,这一 HTML 文件将会与图 8 中所展示的类似。

图 8. report.html
report.html 文件的内容
report.html 文件的内容

使用 linkPublisher 任务来添加一个链接来作为主构建结果的贡献。当您提交一个主构建时,HTML 代码审查结果将会在主构建结果的外部链接(External Links)页签上变为可访问的,如图 9 所示。

图 9. 主构建的外部链接页签
主构建的构建结果,外部链接页签
主构建的构建结果,外部链接页签

最后,CSV Analysis Results.csv 文件将会被扫描以查找单词 SEVERE 来判断是否有严重错误。如果这一单词被发现,代码审查将被视为失败,并且主构建将会在这一点上停止。

运行构建来编译工件

从属构建被第二次被调用来编译自从最后一次构建以来发生过改变的 COBOL 工件。这一指引是针对主机应用程序的,对于 Java 场景需要进行改变。
模式片断 | 完整模式

图 10 展示了 build.xml 文件,其中包括了描述编译过程的完整节点。

图 10. build.xml:编译过程
build.xml 抽取第 265 到 304 行
build.xml 抽取第 265 到 304 行

在 waitForTeamBuild 任务中,您可以检索到两个属性 buildStatePropertyBuildStatusProperty

根据所等待的状态,如果是如下状态构建将被视为完成:

  • COMPLETED:构建正常完成,但或许包含错误。
  • CANCELED:构建请求在构建开始前被取消。
  • INCOMPLETE:构建没有正常完成,例如,被抛弃。

默认的,timeout 属性会被设置为避免不确定的等待。更多关于 waitForTeamBuild task 的细节信息,请查询 信息中心

如果从属构建状态是 ERROR,那么主构建将会被视为已经失败。

总结

本文所描述的实现是在一个 IBM Rational Programming Patterns 场景中,基于一个由 Ant 任务驱动的软件处理的简单分支来实现的。

然而,这一实现可以应用于其它场景中,例如 COBOL、C++ 或 Java 编程语言。质量控制引擎过程会为所有这些编程语言建议原生规则。

致谢

本文作者向 Nicolas Dangeville、Benoit Jaunin 及 Tony Chen Zhang Hong 为本文所涉及功能进行的实现工作致谢,并感谢 Jean-Yves Baudy、Christian Chalumeau、Hervé Le Bars、Stéphane Leroy、Samira Bataouche 及 Vincent Trébuchon 为本文所作的审阅。

附录

图 11. 完整片断
RPP 同步任务片断

回到 build.xml 模式

 

 

图 12. RPP 同步任务片断
RPP 同步任务片断

回到 RPP 同步任务

 

图 13. 代码审查任务片断
代码审查任务片断

回到代码审查任务

 

图 14. 解析,转换和发布结果片断
解析,转换和发布结果片断

回到解析,转换和发布结果

 

图 15. 运行构建来编译工件片断
运行构建来编译工件片断

回到运行构建来编译工件


下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=994974
ArticleTitle=建立一个 Jazz Build Engine 来运行 Ant 脚本: 第 3 部分. 设置构建脚本来协调代码审查和构建
publish-date=01142015