- 持續(xù)集成及質(zhì)量跟蹤——Jenkins + FindBugs + CheckStyle + PMD + JDepend + ... 或 Sonar
- 適
應(yīng)互聯(lián)網(wǎng)研發(fā)特點(diǎn)的敏捷團(tuán)隊(duì)必須要通過“每天”的集成結(jié)果報(bào)告來指導(dǎo)下一日的工作,這包括幫助研發(fā)團(tuán)隊(duì)發(fā)現(xiàn)問題、跟蹤問題和解決問題,這意味著基于持續(xù)集
成平臺(tái)的質(zhì)量跟蹤工具需要在持續(xù)集成的構(gòu)建過程中產(chǎn)生各種各樣的“副產(chǎn)品”——將每日研發(fā)工作中的進(jìn)展和阻礙從各個(gè)角度暴露出來。
- Jenkins
是著名持續(xù)集成工具Hudson的開源版本,我們一般設(shè)定在每日凌晨進(jìn)行構(gòu)建,產(chǎn)生構(gòu)建報(bào)告,如果構(gòu)建失敗的話會(huì)直接給相應(yīng)的研發(fā)人員發(fā)送電子郵件并告知
問題所在。Jenkins平臺(tái)上的FindBugs和PMD插件主要用來掃描程序中的錯(cuò)誤代碼和重復(fù)代碼,隨著這2個(gè)插件變得越來越智能,很多危險(xiǎn)的
bugs和冗余的代碼邏輯(實(shí)踐證明冗余的代碼在被改動(dòng)時(shí)很容易引起bugs)被自動(dòng)掃描出來,研發(fā)人員可以很方便的查看并立即修正,這一切都有直觀的走
勢(shì)圖表輔助管理。JDepend插件可以分析代碼的邏輯層次和復(fù)雜度,這對(duì)于追求優(yōu)雅和精益求精的架構(gòu)師非常有用。
- Sonar平臺(tái)基于Jenkins提供了以上絕大部分的功能,目前我們?cè)谄髽I(yè)級(jí)的層次使用之,進(jìn)行全局的掃描統(tǒng)計(jì)工作。
- 項(xiàng)目及構(gòu)建庫管理——Maven + Nexus(或 Artifactory),just for Java
- Maven的主要作用是為協(xié)作研發(fā)統(tǒng)一管理類庫,這已經(jīng)成為了Java開發(fā)的工業(yè)標(biāo)準(zhǔn)。目前我們采用Artifactory這個(gè)Web開源項(xiàng)目作為私有倉庫的管理軟件,當(dāng)然Nexus也不錯(cuò)。
- 需求任務(wù)管理及缺陷跟蹤——Redmine
- Redmine是用Ruby語言開發(fā)的,是目前最流行的需求任務(wù)管理和缺陷跟蹤工具,事實(shí)上它還具有知識(shí)管理的功能。目前我們主要使用Redmine作為缺陷管理工具,這也是Redmine最擅長的領(lǐng)域。
- 知識(shí)管理——MediaWiki
- MediaWiki是非常流行的、簡易的知識(shí)管理工具,使用它能幫助我們方便的共享知識(shí)、管理知識(shí)并使整個(gè)組織的經(jīng)驗(yàn)沉淀下來,使用它我們可以在一定程度上避免重復(fù)的溝通和重復(fù)的錯(cuò)誤。當(dāng)然JspWiki等工具也可以替代之。
- 自動(dòng)化單元測(cè)試——Junit系列
- 很
多非功能性的bugs是黑盒測(cè)試同學(xué)無法發(fā)現(xiàn)的,Junit系列開源框架能幫助研發(fā)人員快速的構(gòu)建基于白盒的單元測(cè)試代碼,它不僅能進(jìn)行功能性測(cè)試,還可
以進(jìn)行非功能性測(cè)試,同時(shí)Junit單元測(cè)試還可以通過遵循Maven規(guī)范在持續(xù)集成的構(gòu)建中進(jìn)行執(zhí)行,從而有效的把關(guān)軟件的質(zhì)量。目前我們正在利用
Junit實(shí)現(xiàn)數(shù)據(jù)層/業(yè)務(wù)邏輯層/服務(wù)層/控制器層的單元測(cè)試。
- 配置管理——SVN 或 GIT
- 一般在企業(yè)里集中研發(fā)使用SVN比較合適。
- GIT是高效率的離線式配置管理工具,非常適合松散合作型的團(tuán)隊(duì)。
- 代碼量統(tǒng)計(jì)——SVNStat
- 我
們使用SVNStat統(tǒng)計(jì)每日的總體代碼工作量和每個(gè)研發(fā)人員的代碼修改量和提交分布,我們可以從中可以發(fā)現(xiàn)一些研發(fā)管理上的問題并觀察工作量分布的情
況。我們開發(fā)了一個(gè)工具將SVNStat的代碼量統(tǒng)計(jì)報(bào)告的生成與Jenkins每日集成綁定在一起,這樣,每日更新的代碼量統(tǒng)計(jì)報(bào)告可以為研發(fā)過程的管
理提供一定程度上的參考意見。
- 測(cè)試管理——Testlink,主要用于自動(dòng)化測(cè)試復(fù)用。
- 代碼評(píng)審——Phabricator,進(jìn)行代碼審查的好工具。
使用以上工具,可以支撐3~1000+人的研發(fā)團(tuán)隊(duì)協(xié)同工作,經(jīng)實(shí)踐證明 Very Good