</p>轨范四:持续集成
; M5 X' J& p0 C/ v4 S9 j9 t持续集成(ContinuousIntegration)是操作一系列的工具,体例和轨则,做到快速的构建开发代码,自动的测试化,来提高开发 代码的效率和质量。操作自动构建工具,随时都能把提交的代码构建出来,供给一个可以测试使用的版本,让用户和开发人员同时看到不异的功能,尽早的发现问题 和错误,也可以尽快的获得测试人员和用户的反馈。4 E) C; y8 m& U/ t
要做到持续集成,就要操作一系列工具,把开发过程中的一再工作自动化。搭建自动的构建处事器, 自动的进行单元测试和发布新版本,一个集成的处事器可以供给构建过程的结不美观陈述,自动通知开发人员构建结不美观,而且保留历史数据。 IBMRationalTeamConcert(RTC)可以供给工作使命的打点,项目打算的放置,代码版本打点节制,自动构建可用版本,生成构建结不美观报 告。这些过程组成了项目的持续集成过程,此鱿脯版本的自动构建和代码的自动单元测试是持续集成的关头过程,RTC在这些过程上供给了有力的撑持。/ [) z" N2 m# \3 J
自动构建& q, l3 ~" a( H3 I
RTC供给了buildengine来负责构建build,首选,启动buildengine,并和RTC处事器成立了毗连。再建树项目的 build界说。在这个界说中,需要设定编译哪些模块的代码,需要跳动哪个ANT文件来启动编译,和一些编译过程中的参数的设 定。当这些都筹备好了,编译对于项目而言,就酿成一个简单的工作。
0 \ u3 h k% [) Y. \ |' B可以看到,经由过程在build界说上,点击请求构建,就可以触发一次构建过程。选择需要的构建参数,这个过程就会在后台运行。每一个开发人员,做 了稍许的代码改变和提交,都可以触发新的构建过程,来保证我们代码的有用性。申请一个新的构建的过程如图13、图14所示。) O5 S" [, Q& @( j* {5 I5 @, ` n
/ ^) u: c! h, ` g* {; G' X8 T8 j0 G图13.申请一个新的构建 / K4 X: j4 o5 _, R
6 L! S+ ~5 u" ]: W! H3 X* H
图14.构建申请界面 5 W. _* G+ X3 K" h
当构建竣事后。RTC处事器会供给构建结不美观陈述。开发人员可以发芽到此次构建的具体信息。! n% x! {' o) x! D% q# y) R1 r7 U
0 _ v( A2 E$ z, j$ r8 w
图15.构建结不美观
4 }8 {+ h$ B0 C: n; b整个开发过程中,构建版本的过程应该是无数次的,经由过程每次构建,都可以获得那时代码的编译情形,而且可以获得一个可运行的软件版本。在构建界说 上,RTC撑持设置构建打算。按时自动的触发一次构建。$ D/ m. G: K) x5 r
8 ?8 P$ e7 F* P7 I7 X# Y图16.构建界说 $ u4 K0 P4 o& N' A# y0 u
自动单元测试
1 n* q' f0 S/ ]. M1 X2 e4 b构建可以自动了,重点提高代码质量的单元测试呢?如不美观每一天的代码,每一个版本的代码,都已经经由过程了我们的单元测试,这样我们就能对代码的质量 有了根基的保证。在构建剧本的自动挪用过程中,经由过程ANT的剧本,可以加上JUnit,EMMA,FindBugs的ANT剧本挪用,每一次的构建,都可 以把这些搜检工作自动的进行一遍测试。这些测试都要生成测试结不美观陈述,RTC不能供给这些陈述的展示,就可以操作Hudson这个开源工具,集成测试陈述 来便利查阅。/ k- e( u6 w, Z* o- r
* D/ n3 y& W1 R+ K0 u2 I图17.自动测试陈述 3 a4 [# g* ?. w2 L* Z
轨范五:代码评审和重构
( t' i3 O8 ?* j代码评审(CodeReview)是Java项目开发过程中的一个主要轨范,代码评审可以辅自觉现静态代码剖析过程中无法发现的一些问题,例如 代码的编写是否合适编码规范,代码在逻辑上或者功能上是否存在错误,代码在执行效率和机能上是否有需要改良的处所,代码的注释是否完整正确,代码是否存在 冗余和一再。代码评审还可以辅悔改进入项目组的成员快速进修和体味项目,促进经验分享,同时也能保证项目成员的精采沟通。代码评审首要搜罗两种形式,同级 评审(PeerReview)和小组评审(GroupReview)。同级评审首要指项目成员间的互相评审,小组评审是指经由过程召开评审会议,项目成员一路 对项目代码进行评审。
2 x" g) u2 K# b2 `8 ~7 t为了提高代码评审的有用性和效率,可以借助一些外部工具,斗劲常用的代码评审工具有Jupiter和CodeStriker。Jupiter是 一款开源的Eclipse插件,许可成员将评审定见定位到真实代码的具体行,因为代码评审的结不美观以XML文件的形式保留,所以可以把结不美观提交到版本打点处事器进 行共享。图18显示了使用Jupiter进行代码评审的界面。
' U4 s7 w! m$ K
0 B% m8 x6 H- V# L: e) }. S8 Y图18.Jupiter代码评审界面
+ w1 j8 {4 W7 ?在代码评审使命建树后,Jupiter将代码评审分成三个阶段,小我评审阶段(IndividualPhase)、团队评审阶段 (TeamPhase)和问题修复阶段(ReworkPhase)。在小我评审阶段,评审成员将发现的代码问题或者缺陷记实下来,每个问题城市作为一个记 录保留在评审表格中。在团队评审阶段,团队的全数或者部门成员会一路对小我评审阶段发现的问题进行定性,如不美观问题确实存在,就将该问题分配给某个成员去解 决,并在Jupiter中将该问题设置成响应的状况。在问题修复阶段,团队成员会修复属于自己的问题,并将响应的记实设置成已解决等正确的状况。. O8 ?+ j* I) c3 t7 x+ @+ S8 z
Codestriker是一款基于Web的常用代码评审工具,对代码的评审可以针对某一具体行,也可以针对折个代码文件,评审定见会被保留在数据库中。评审人员可以同时看到其他人的评论,代码作者也可以针对某一具体的评 论回覆。Codestriker撑持邮件通知,还可以同版本节制处事器进行集成,以跟踪和显示文件内容的改变。图19显示了Codestriker的界 面。
# m- w# g* [ p: b1 c0 A
3 }9 d) p1 v4 D* @图19.Codestriker陈述界面
$ O {( E6 k5 X8 N1 z在实践中对所有代码进行小组评审会斗劲费时,所以可以按照现实情形来遴选一些焦点代码进行小组评审,或者在项目的前期放置较多的小组评审,等项 目组的成员对代码评审的尺度和要求有较好的理解,进行代码评审的经验提高后,就可以逐渐削减小组评审的次数,年夜而达到年夜部门代码即使只进行同级评审也能保 证很好的质量。
( z3 @* Q: S7 n5 s; V经由过程代码评审发现的问题要经由过程代码重构实时解决失踪,较小的不涉及多人代码的重构可以由项目成员自己借助Eclipse的重构功能完成,分歧项目 成员写的实现不异功能的分歧代码要经由过程谈判整合成公共的类或者体例。斗劲复杂的或者斗劲高条理的重构工作,例如整个项目层面的代码组织形式的改变需要由整 个项目组配合谈判完成。1 O6 M+ X, s/ Z4 G9 G
结论# A$ Z1 S, }: l0 s6 v( o
软件开发没有一成不变、万能通用的流程和体例,但愿巨匠能年夜本文获得启发和收益,连系您的现实项目特点,实践以上轨范和体例,并加以完美和改 进,配合打造高效高质量的Java代码,为您的项目成功奠基坚实的基本。 |