




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、讓開發(fā)自動化:用eclipse插件提高代碼質(zhì)量開發(fā)軟件時,我的主要目標(biāo)z是:要么防止將缺陷引入代碼庫,要么限制缺陷的生存期;換言z, 要盡早找到缺陷。很顯然,越是了解如何編寫更好的代碼以及如何有效測試軟件,就越能及早地捕捉 到缺陷。我也很想要一張能發(fā)現(xiàn)潛在缺陷的安全之網(wǎng)。在本系列八月份的那期文章中,我得出了這樣的結(jié)論:將檢驗工具集成到構(gòu)建過程(例如,使用ant 或maven)中,能夠建立起一種尋找潛在缺陷的方法。盡管這種方法使一致性成為可能并超越了 ide, 但它也有一點友作何必須在木地構(gòu)建軟件或等待continuous integration構(gòu)建的運行。如果使 用eclipse插件,就可以在
2、通過continuous integration構(gòu)建或集成滋發(fā)現(xiàn)一些這樣的沖突。 這就促成了我稱為渤遊編瘞的編程方式,在這種方式下,允許在編碼過程中進行一定程度的質(zhì)量檢 驗一再也不能比這個更早了!本文涵蓋了我所認(rèn)為的“五大”代碼分析領(lǐng)域: 編碼標(biāo)準(zhǔn) 代碼重復(fù) 代碼覆蓋率 依賴項分析 復(fù)雜麼監(jiān)控可以用接下來的兒個靈活的eclipse插件來揭示這些分析領(lǐng)域: checkstyle:用于編碼標(biāo)準(zhǔn) pmd的cpd:幫助發(fā)現(xiàn)代碼重復(fù) coverlipse:測量代碼覆蓋率 jdepend:提供依賴項分析 eclipse metric插件:有效地查出復(fù)雜度eclipse不是您的構(gòu)建系統(tǒng)使用eclipse插件
3、與您將這些檢驗工具用于構(gòu)建過程并不矛盾。事實上,您想耍確保的是:下列 使用eclipse插件的規(guī)則就是應(yīng)用到構(gòu)建過程中的規(guī)則。安裝eclipse插件安裝eclipse插件再簡單不過了,只需要兒個步驟。在開始之前,最好把該插件下載站點的url準(zhǔn) 備好。表1是本文用到的插件的列表:表1.代碼改進插件和相應(yīng)的下載站點url工具目的eclipse 插件的 urlcheckstyle編碼標(biāo)準(zhǔn)分析http:/eclipse-cs sourceforge nel/updale/coverlipse測試代碼覆蓋率http:/covcrlipse sf. nct/updatccpd復(fù)制/粘貼檢驗http:/pm
4、d. sourcoforgo. not/oclipse/jdepend包依賴項分析http:/andrei gmxhoine de/eclipse/metrics復(fù)雜度監(jiān)控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.配置新的遠(yuǎn)程站點4.在eclipse更新管理器屮,有一個查看插件各方面特性的選項。我通常選擇頂級項,如圖3 所示。選擇您需耍的選項并單擊finisho
6、 eclipse現(xiàn)在安裝該插件。您需耍重啟eclipse實 例。圖3.安裝eclipse插件請遵循匕述這些步驟來安裝其他的eclipse插件;只需改變插件名和相應(yīng)的下載位置即可?;仨撌子胏heckstyle校止標(biāo)準(zhǔn)代碼庫的可維護性直接影響著軟件的整個成本。另外,不佳的可維護性還會讓開發(fā)人員十分頭痛(進 而導(dǎo)致開發(fā)人員的缺乏)代碼越容易修改,就越容易添加新的產(chǎn)品特性。像checkstyle這樣 的工具可以協(xié)助尋找那些可影響到可維護性、與編碼標(biāo)準(zhǔn)相沖突的地方,比方說,過大的類、太長的 方法和未使用的變量等等。有關(guān)pmd另一個叫做pmd的開源工具提供的功能和checkstyle類似。我偏愛check
7、style,但pmd也 有很多執(zhí)著的追隨者,所以我建議您了解一下這個工具,畢竟它也頗受一些人的青睞。使用eclipse的checkstyle插件的好處是能夠在編碼過程屮了解到源代碼上下文的各種編碼沖 突,讓開發(fā)人員更可能在簽入該代碼前真正處理好這些沖突。您也幾乎可以把checkstyle插件視 作一個連續(xù)的代碼復(fù)查工具!安裝checkstyle插件并做如下配置(參見圖4):1. 選擇project,然后選擇eclipse菜單屮的properties菜單項。2. 選擇 checkstyle active for this project 復(fù)選框,單擊 ok°圖4在eclipse中配置c
8、heckstyle插件eclipse重新構(gòu)建工作空間,并在eclipse控制臺中列示已發(fā)現(xiàn)的編碼沖突,如圖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內(nèi)嵌入編碼標(biāo)準(zhǔn)檢驗是一種很棒的方法,用這種方法可以在編碼 妙積極地改進代碼,從而在開發(fā)周期的早期發(fā)現(xiàn)源代碼中潛在的缺陷。這么做述有更多的好處,如 節(jié)省時間、減少失敗,也因此會減少項日的成本。沒錯,這就是一種積極主動的方式!回頁首用coverlipse確認(rèn)覆蓋率coverlipse是一個用于cobertura的eclipse插件,cobertura是一個代碼覆蓋率工具,可以 用它來評估具有相應(yīng)測試的源代碼的比率。cobertura也提供一個ant任務(wù)和imaven插件,但 用cobertura,您可以莊編寫zf/w評估代碼覆蓋率。您見過這樣的模式嗎?通過選擇eclipse菜單項run安裝cov
11、erlipse插件并將其和junit關(guān)聯(lián)起來,該操作會顯示一 系列運行配置選項,例如junit、swt應(yīng)用程序和java應(yīng)用程序。右鍵單擊它并選擇junit w/coverlipse節(jié)點屮的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所示)中嵌入標(biāo)記,該標(biāo)記 顯示了具有相關(guān)junit測試的代碼部分:圖7. coverlipse生成的具有嵌入類標(biāo)記的報告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插件可以更快地確定代碼覆蓋率。例如,這種實時數(shù)據(jù)功能 有助于在將代碼簽入cm系統(tǒng)前更好地進行測試。這對漸進編程來說意味看什么呢?回頁首用cpd捕捉代碼重復(fù)eclipse的pmd插件提供了一項叫做cpd (或復(fù)制粘貼探測器)的功能,用于尋找重復(fù)的代碼。 為在eclipse屮使用這項便利的工具,需耍安裝具有pmd的eclipse插件,該
16、插件具有cpd功 能。為尋找重復(fù)的代碼,請用右鍵單擊一個eclipse項1=1并選擇pmd | find suspect cut and paste,如圖8所示:圖8.使用cpd插件運行復(fù)制粘貼檢驗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、下就會創(chuàng)建出一個report文件夾,其中包含一個叫做 cpd.txt的文件,文件中列示了所有重復(fù)的代碼。圖9中是一個cpd.txt文件的例子:圖9. eclipse插件生成的cpd文本文件cdl 96旅人工來尋找重復(fù)的代碼是一項挑戰(zhàn),但使用像cpd這樣的插件卻能在編碼時輕松地發(fā)現(xiàn)重復(fù)的代 碼?;仨撌资褂胘depend進行依賴項檢查jdepend是個可免費獲取的開源工具,它為包依賴項提供面向?qū)ο蟮亩攘恐?,以此指明代碼庫的彈 性。換句話說,jdepend可有效測量一個架構(gòu)的健壯性(反之,脆弱性)。除了 eclipse插件,jdepend還提供一個ant任務(wù)、maven插件和一個java應(yīng)用程序,用
19、以 獲取這些度量值。對于相同的信息,它們有著不同的傳遞機制;但eclipse插件的特別之處和相應(yīng) 優(yōu)點是:它能以更接近源代碼(即,編碼時)的方式傳遞這條信息。圖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、供了有助于不斷觀察架構(gòu)可維護性變化的大量信息一這其中最大 的好處是您可以在編碼時看到這些數(shù)據(jù)?;仨撌子胢etrics測屋復(fù)雜度“五大”代碼分析最后的一項是測量復(fù)雜度。eclipse提供一種叫做metrics的插件,使用該插件可 以進行許多有用的代碼度量,包押;圈復(fù)雜度度量,它用于測量方法中惟一路徑的數(shù)目。安裝metrics插件并重啟eclipse;然后遵循下列步驟:1.右鍵單擊您的項冃并選擇properties菜單。在結(jié)果窗口中,選擇enable metrics plugin復(fù)選框并單擊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透視圖 并重新構(gòu)建項日,從而
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中的窗口。在此例中,我正在查看一個單獨方法的圈復(fù)雜度。真正妙的是您可以雙擊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.查看方法的圈復(fù)雜度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插件還提供了許多功能強大的度量值,有助于您在開發(fā)軟件 的過程中改進代碼可見,它是一個漸進編程意義上的插件!回頁首合適的才是最好的正如您從本文屮看到的那樣,將“五大”測量方法,即編碼標(biāo)準(zhǔn)、代碼重復(fù)、代碼覆蓋率、依賴項分析 和復(fù)雜度監(jiān)控,用于改進代碼質(zhì)量十分重要。但適合您的才是好的。請記住還有其他許多可用的 eclipse插件(比如pmd和findbugs)能夠幫助您在開發(fā)周期
29、的早期改進代碼質(zhì)量。不管您想 要的工具或偏愛的方法是什么,重要的是:行動起來去積極改進代碼質(zhì)顯并止手工代碼檢驗的過程變 得更加有效。我估計您使用這些插件一段時間后,就再也離不開它們了。參考資料學(xué)習(xí) 您可以參閱本文在developerworks全球站點上的英文原文。 讓開發(fā)h動化(paul duvall, developerworks):閱讀完整的系列。 improving code quality with pmd and eclipsen (levent gurses, jacoozi, 2005 年1月):這篇文章將pmd視為eclipse插件,介紹了使用pmd改進代碼質(zhì)量并縮 短代碼檢驗
30、過程的方法。"用 cobertura 測量測試覆蓋率”(elliotte rusty harold, developerworks, 2005 年 5月):elliotte rusty harold分亨了他的經(jīng)驗,艮卩如何使用代碼覆蓋率的最佳實踐來利 用 cobertura。 “不要被覆蓋報告所迷惑” (andrew glover, developerworks, 2006年1月):這 篇文章進一步揭示了覆蓋率報告中的數(shù)字所代表的真正含義,也給出了這些數(shù)字所不能代表 的含義。 "managing your dependencies with jdepend" (glen wilcox, onjava, 2004 年 1 ji ):在這篇文章中,glen wilcox介紹了 jdepend,這是一個可以免費獲取的工具, 它能洞悉軟件架構(gòu)中的許多質(zhì)量問題。 “軟件架構(gòu)的代碼質(zhì)量”(andrewglover, developerworks, 2006 年 4 月):andrew glover介紹了如何持續(xù)監(jiān)控以及如何改止能夠
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- XX學(xué)校民主生活會個人剖析材料模板2
- 裝修提升工程合同范本
- 原水供水協(xié)議合同范本
- 廚房剪刀回購合同范本
- 勞務(wù)合同范例電工
- 勞務(wù)協(xié)議押金合同范本
- 網(wǎng)絡(luò)安全管理員模擬題含答案
- 化工單元操作模擬試題含答案
- 廠房建造木工施工合同范例
- 人保壽險合同范本
- 2025年江蘇南京技師學(xué)院招聘工作人員19人高頻重點模擬試卷提升(共500題附帶答案詳解)
- 華東師大版七年級數(shù)學(xué)下冊“第1周周考”
- DBJ50-T-385-2023半柔性復(fù)合路面技術(shù)標(biāo)準(zhǔn)
- 職業(yè)院校教師人工智能素養(yǎng):內(nèi)涵流變、框架構(gòu)建與生成路徑
- 如何在初中數(shù)學(xué)教學(xué)中提升學(xué)生的核心素養(yǎng)
- (完整版)小學(xué)一年級數(shù)學(xué)20以內(nèi)進退位加減法(1600道題)計算卡
- 2025年包頭鐵道職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2024年道路運輸企業(yè)安全生產(chǎn)管理人員證考試題庫
- 北京2024年北京市測繪設(shè)計研究院面向應(yīng)屆生招聘筆試歷年參考題庫附帶答案詳解
- 2025年減速機齒輪項目投資可行性研究分析報告
- 走進李白校本 課程設(shè)計
評論
0/150
提交評論