




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、让开发自动化:用eclipse插件提高代码质量开发软件时,我的主要目标z是:要么防止将缺陷引入代码库,要么限制缺陷的生存期;换言z, 要尽早找到缺陷。很显然,越是了解如何编写更好的代码以及如何有效测试软件,就越能及早地捕捉 到缺陷。我也很想要一张能发现潜在缺陷的安全之网。在本系列八月份的那期文章中,我得出了这样的结论:将检验工具集成到构建过程(例如,使用ant 或maven)中,能够建立起一种寻找潜在缺陷的方法。尽管这种方法使一致性成为可能并超越了 ide, 但它也有一点友作何必须在木地构建软件或等待continuous integration构建的运行。如果使 用eclipse插件,就可以在
2、通过continuous integration构建或集成滋发现一些这样的冲突。 这就促成了我称为渤遊编瘗的编程方式,在这种方式下,允许在编码过程中进行一定程度的质量检 验一再也不能比这个更早了!本文涵盖了我所认为的“五大”代码分析领域: 编码标准 代码重复 代码覆盖率 依赖项分析 复杂麼监控可以用接下来的儿个灵活的eclipse插件来揭示这些分析领域: checkstyle:用于编码标准 pmd的cpd:帮助发现代码重复 coverlipse:测量代码覆盖率 jdepend:提供依赖项分析 eclipse metric插件:有效地查出复杂度eclipse不是您的构建系统使用eclipse插件
3、与您将这些检验工具用于构建过程并不矛盾。事实上,您想耍确保的是:下列 使用eclipse插件的规则就是应用到构建过程中的规则。安装eclipse插件安装eclipse插件再简单不过了,只需要儿个步骤。在开始之前,最好把该插件下载站点的url准 备好。表1是本文用到的插件的列表:表1.代码改进插件和相应的下载站点url工具目的eclipse 插件的 urlcheckstyle编码标准分析http:/eclipse-cs sourceforge nel/updale/coverlipse测试代码覆盖率http:/covcrlipse sf. nct/updatccpd复制/粘贴检验http:/pm
4、d. sourcoforgo. not/oclipse/jdepend包依赖项分析http:/andrei gmxhoine de/eclipse/metrics复杂度监控http:/metrics sourceforge net/update知道了这些有用插件的下载地址后,安装插件就是-个极简单的过程。启动eclipse,然后遵循下列 步骤:1. 选择 help | software updates | find and install.如图 1 所示:图1.寻找并安装eclipse插件he edl sojce ref«torserch皿vmndowf java (clipte s
5、okjw«kcme het> coverts 竽26 oynamrheiporkshtthtncfo.o«sheecs.softwarerndandlratal2. 选择 search for new features to in stall 单选按钮,单击 next。3. 单击new remote site,输入要安装的插件名和url (参见图2),单击ok,然后 单击finish來显示eclipse更新管理器。图2.配置新的远程站点4.在eclipse更新管理器屮,有一个查看插件各方面特性的选项。我通常选择顶级项,如图3 所示。选择您需耍的选项并单击finisho
6、 eclipse现在安装该插件。您需耍重启eclipse实 例。图3.安装eclipse插件请遵循匕述这些步骤来安装其他的eclipse插件;只需改变插件名和相应的下载位置即可。回页首用checkstyle校止标准代码库的可维护性直接影响着软件的整个成本。另外,不佳的可维护性还会让开发人员十分头痛(进 而导致开发人员的缺乏)代码越容易修改,就越容易添加新的产品特性。像checkstyle这样 的工具可以协助寻找那些可影响到可维护性、与编码标准相冲突的地方,比方说,过大的类、太长的 方法和未使用的变量等等。有关pmd另一个叫做pmd的开源工具提供的功能和checkstyle类似。我偏爱check
7、style,但pmd也 有很多执着的追随者,所以我建议您了解一下这个工具,毕竟它也颇受一些人的青睐。使用eclipse的checkstyle插件的好处是能够在编码过程屮了解到源代码上下文的各种编码冲 突,让开发人员更可能在签入该代码前真正处理好这些冲突。您也几乎可以把checkstyle插件视 作一个连续的代码复查工具!安装checkstyle插件并做如下配置(参见图4):1. 选择project,然后选择eclipse菜单屮的properties菜单项。2. 选择 checkstyle active for this project 复选框,单击 ok°图4在eclipse中配置c
8、heckstyle插件eclipse重新构建工作空间,并在eclipse控制台中列示已发现的编码冲突,如图5所示:图5. eclipse中checkstyle的代码冲突列表(0舟.x rport dbde«xrv 才 tdt-fwo0: «>0 1 rw<5bmg(林umvsmotmk ii: j5otetic flr<a string"izmocwmmsimw mmklepxdtim twet mv b#«s<rvgf<zormftc<rr< ctr<y”0juwm artot t mbtclteat n
9、rv tiwtoc (ceatcax mat la>xtim)jtuaedteat;fitr «<<ttr v>14 mia|scr>ft9() ars <juait ceatul.te 0 19i0>p0r/xgmkfwd taw>owovtwhmwtfhuubm * wnmv»«ioo3s“rm0 丫3>7切宀*(« mtgmed 切宀 *«* rwt (rtcedbd mfi.teimcruer. 'mocton* mm > ms使用checkstyle插件在eclips
10、e内嵌入编码标准检验是一种很棒的方法,用这种方法可以在编码 妙积极地改进代码,从而在开发周期的早期发现源代码中潜在的缺陷。这么做述有更多的好处,如 节省时间、减少失败,也因此会减少项日的成本。没错,这就是一种积极主动的方式!回页首用coverlipse确认覆盖率coverlipse是一个用于cobertura的eclipse插件,cobertura是一个代码覆盖率工具,可以 用它来评估具有相应测试的源代码的比率。cobertura也提供一个ant任务和imaven插件,但 用cobertura,您可以庄编写zf/w评估代码覆盖率。您见过这样的模式吗?通过选择eclipse菜单项run安装cov
11、erlipse插件并将其和junit关联起来,该操作会显示一 系列运行配置选项,例如junit、swt应用程序和java应用程序。右键单击它并选择junit w/coverlipse节点屮的new。在这里,需耍确定junit测试的位置,如图6所示:图6.配置coverlipse以获取代码覆盖率create, manage, and run coofigtrdtkmn fur juht wthcoveritehpe f 2 gt3 ache tomcat t qcx loui appmbcn edpw amacmioa u mow took 涉 ejnox osq ft newcrkg«
12、;rwrk strvergenenc scrw(extcmal i.>v. appkmionamji ccm beer.butfm.ier jv ccmponertx junt au*t«t 3 4 junt w/coverfse ji; componer«ov«dpm ji* xs swt acacmion套tertiffaraw<$ ."cmgtfter g«mh bk *£ 0 s«jc« 电 enwomht "i©rs ¥ twts g the selected p
13、roject,or soiree fomer:testi/ccwrporwri smkk.r叼 ke jur* wkoveri$e rumng ust 5 when detm9x*0一旦单击了 run, eclipse会运行coverlipse并在源代码(如图7所示)中嵌入标记,该标记 显示了具有相关junit测试的代码部分:图7. coverlipse生成的具有嵌入类标记的报告rwm wtw weenftv crr (.mmmtry (mwt oewvm cf cewtvmvwttriecte4 cmwccioa vtccoamcc toft (str vrl)( retern 9ttcof
14、u<ction(conitantf pxzvxx,wty.bkumt,222 5&5rzow* cwcweboa coredt二 u mj. -www- uis escb z9ussaedubk(strstci»9 «rlt stci»9 mmcmm9 strihg xfod)(cobmct 10a com! will;c(de wer i,coaa pr iwrbamver.vtcmmmcejmkwr 1 uxrmm »w«vor<i); . mt avt«c«»>t (*<>
15、;<) j> catch |slt>cwpc 10a ml (thrw rtv *ua<ioa(m)>> catclb (c lotnotuft z)(一运二汪三unlymq;:正如您所见,使用coverlipse eclipse插件可以更快地确定代码覆盖率。例如,这种实时数据功能 有助于在将代码签入cm系统前更好地进行测试。这对渐进编程來说意味看什么呢?回页首用cpd捕捉代码重复eclipse的pmd插件提供了一项叫做cpd (或复制粘贴探测器)的功能,用于寻找重复的代码。 为在eclipse屮使用这项便利的工具,需耍安装具有pmd的eclipse插件,该
16、插件具有cpd功 能。为寻找重复的代码,请用右键单击一个eclipse项1=1并选择pmd | find suspect cut and paste,如图8所示:图8.使用cpd插件运行复制粘贴检验newgo intosrc tests tests testsjre?匚 confi -datal3bbtests .star bum cargccopy:q copy quatfied name _ pastex deletecbi+cctri+vdeletebuild path>sourcealt+swt+s refactoralt+shtft+t 注 import.必exportrefr
17、eshf5close projectrun asdebug asprofile asvalidatean alysisfix copyrights % force file synchronizationteamcompare withrestore from local history.find bugsreviewpoe toolsf4pmdopen in new windowopen type hierarchy| ? find suspect cut and paste如junit-iunitllocal.:了 昼 & j> r一旦运行了 cpd,您的eclipse根目录
18、下就会创建出一个report文件夹,其中包含一个叫做 cpd.txt的文件,文件中列示了所有重复的代码。图9中是一个cpd.txt文件的例子:图9. eclipse插件生成的cpd文本文件cdl 96旅人工來寻找重复的代码是一项挑战,但使用像cpd这样的插件却能在编码时轻松地发现重复的代 码。回页首使用jdepend进行依赖项检查jdepend是个可免费获取的开源工具,它为包依赖项提供面向对象的度量值,以此指明代码库的弹 性。换句话说,jdepend可有效测量一个架构的健壮性(反之,脆弱性)。除了 eclipse插件,jdepend还提供一个ant任务、maven插件和一个java应用程序,用
19、以 获取这些度量值。对于相同的信息,它们有着不同的传递机制;但eclipse插件的特别之处和相应 优点是:它能以更接近源代码(即,编码时)的方式传递这条信息。图10演示了使用eclipse jdepend插件的方法:通过右键单击源文件夹并选择run jdepend analysiso 一定要选择一个含源代码的源文件夹;否则看不到此菜邕项。图10.使用jdepend analysis分析代码src20newgo into open in new window open type hierarchy二 copy2 齬 copy qualified name$ 鸟 p"terr- x de
20、letef4qrl+cqrl+vdeletealt+5hift+s alt+shift+t errorrun as* avoiddebug as* avoidprofile as* avoidvalidate> systeranalysis> syster |run jdepend analysisf5辛 build path sourcex refactorg 讪 import 必export二3和如图11显示了运行jdepend analysis时生成的报告。左边显示包,右边显示针对每个包的依赖项 度量值。图11. eclipse项目中的包依赖项正如您所见,jdepend插件提
21、供了有助于不断观察架构可维护性变化的大量信息一这其中最大 的好处是您可以在编码时看到这些数据。回页首用metrics测屋复杂度“五大”代码分析最后的一项是测量复杂度。eclipse提供一种叫做metrics的插件,使用该插件可 以进行许多有用的代码度量,包押;圈复杂度度量,它用于测量方法中惟一路径的数目。安装metrics插件并重启eclipse;然后遵循下列步骤:1.右键单击您的项冃并选择properties菜单。在结果窗口中,选择enable metrics plugin复选框并单击ok,如图12所示:图12.为项目配置metrics回凶type fter textwobudersjava
22、 budd p&h t) java code style tl java compierjavadoc locationmetrics enable metnc« properties for brewerymetricsproject reference refactoring rtrtoryrestore gaukj app*y 2. 从eclipse屮选择 window菜单打开metrics视图,然后选择show view | other.-.o3. 选择metrics | metrics view打开如图13中显示的窗口。您需要使用java透视图 并重新构建项日,从而
23、显示这些度量值。图 13.打开 eclipse 中的 metrics viewtype filter textgb & generalgt 0 ant± & cheat sheetsffl &cvs g debug £> help田 0 java± 3 java browsings 3 metricsmetrics view口 dependerxy graph view 口 layered package graph view cl layered package table view de 3 pde 6 pde runtimes)
24、 & teamok | cancel4.单击ok來显示如图14中的窗口。在此例中,我正在查看一个单独方法的圈复杂度。真正妙的是您可以双击metrics列表中 的方法,该插件会在eclipse编辑器中为此方法打开源代码。这就让修正变得超级简单(如 果需要的话)!0 stmk arnux«$per type)± nested etockd«c<h («vg/«y per method) ± nnt>er of mothod( («vq/m<x per type) l«k cohewn of m
25、echoa (avq/hiax per tye) o mccabe cydomabc conkxty (*vnax per nnethi0.9331.4293.m70.127lsi.becr.web <om.bmr.cormtf>a com.be«r.bumws<.d«t42 8mvo«)ifrol.>«va4 /br«w*ry/tk/ccrvmr/«omnor>/comuf<$hv3 /br«wtry/*ca5«r/bumwm/d秋刨beert*t wo8 /
26、brcwery/jrcao»becr/bu$rie5$/dcrnor/bw. )tv40.057 /brcwery/$r cacnbecr/busnesi/domarvv 6 /br«wery/“c/core«rmeb/s4rvbtcor<fo*ere6 /br«wery/src/corb«er/web/s«rvb<cor<roler)v«6 /8rewy”rc/co0becrxb/servtek wr>tq5 /brcw»ry/h</convbeer/cww/bmeo*>mv3
27、 /frewtry/srcaorvbmramjmwsl/da/beerd«otrrpl. hva3 /brewery/mc/com/bmv/butf»kawa/bmrd«obrpl*0图14.查看方法的圈复杂度st»t conn.preparestatement(sql):t9 sent .cxecutequcryo :hile (rs.nexc () <state 9t«te new stated:9tate.setstate(rs.aetscrina(wst«tew);statesetrescriptlonfrsgetstr
28、ing(wde9crtptionw); statesadd(state):frdai hndakt 如 create becromlrrci 8ecrc>ao.)ava正如我之前提到过的,eclipse metrics插件还提供了许多功能强大的度量值,有助于您在开发软件 的过程中改进代码可见,它是一个渐进编程意义上的插件!回页首合适的才是最好的正如您从本文屮看到的那样,将“五大”测量方法,即编码标准、代码重复、代码覆盖率、依赖项分析 和复杂度监控,用于改进代码质量十分重要。但适合您的才是好的。请记住还有其他许多可用的 eclipse插件(比如pmd和findbugs)能够帮助您在开发周期
29、的早期改进代码质量。不管您想 要的工具或偏爱的方法是什么,重要的是:行动起来去积极改进代码质显并止手工代码检验的过程变 得更加有效。我估计您使用这些插件一段时间后,就再也离不开它们了。参考资料学习 您可以参阅本文在developerworks全球站点上的英文原文。 让开发h动化(paul duvall, developerworks):阅读完整的系列。 improving code quality with pmd and eclipsen (levent gurses, jacoozi, 2005 年1月):这篇文章将pmd视为eclipse插件,介绍了使用pmd改进代码质量并缩 短代码检验
30、过程的方法。"用 cobertura 测量测试覆盖率”(elliotte rusty harold, developerworks, 2005 年 5月):elliotte rusty harold分亨了他的经验,艮卩如何使用代码覆盖率的最佳实践来利 用 cobertura。 “不要被覆盖报告所迷惑” (andrew glover, developerworks, 2006年1月):这 篇文章进一步揭示了覆盖率报告中的数字所代表的真正含义,也给出了这些数字所不能代表 的含义。 "managing your dependencies with jdepend" (glen wilcox, onjava, 2004 年 1 ji ):在这篇文章中,glen wilcox介绍了 jdepend,这是一个可以免费获取的工具, 它能洞悉软件架构中的许多质量问题。 “软件架构的代码质量”(andrewglover, developerworks, 2006 年 4 月):andrew glover介绍了如何持续监控以及如何改止能够
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 注册土木工程师自测技巧试题及答案
- 2024全媒体运营师的反馈机制及试题及答案
- 全媒体运营师项目规划能力试题及答案
- 二零二五年度正常劳动合同签订与员工出差补贴协议合同
- 二零二五年度全款购入进口商务车合同范本
- 2025年度脱贫攻坚帮扶工作合作协议
- 二零二五年度数字经济合伙入股协议书
- 二零二五年度企业法人变更专项合同审查及执行细则
- 计算机与软件专业初级考试试题及答案
- 个人与村委会2025年度农村文化活动组织合同书
- 2025年公务车辆租赁管理合同范本
- 2025年会计招聘的面试题及答案
- 9.3.2《设计简单装置制作酸奶》跨学科实践主题学习单元教学设计
- 2025年工程测量员(技师)职业技能鉴定理论考试指导题库(含答案)
- 盈浦街道村务工作者招聘真题2024
- 金属熔融岗位培训课件
- 2025年车驾管知识题库查验业务知识考试题(附答案)
- 事故隐患内部举报奖励制度
- 人力资源部ogsm计划
- 抹灰砂浆技术规程JGJT220-2010(完整版)
- 仓储行业保险承保指引
评论
0/150
提交评论