github 检查代码质量_Android(8): 代码质量检查
代碼質(zhì)量檢查是持續(xù)性的工作,檢查的兩個基本工具是FindBugs和CheckStyle。在實(shí)際項(xiàng)目中,檢查的工作由測試人員實(shí)施,開發(fā)人員進(jìn)行配合,形成日常性的工作。每天會對最新的代碼進(jìn)行檢查,使用腳本(一般是測試用python寫的)對檢查結(jié)果進(jìn)行解析,定位到代碼行并根據(jù)SVN記錄關(guān)聯(lián)責(zé)任人,輸出郵件,開發(fā)則根據(jù)郵件結(jié)果進(jìn)行修復(fù)。
對于代碼進(jìn)行質(zhì)量檢查,在剛開始會有一些抵觸情況。有的是之前沒有接觸過,有的是覺得需求已經(jīng)很緊了,還要花時間解決這些問題。還有一方面原因是一剛開始掃描出來的問題會特別多,特別是代碼規(guī)范的問題,好幾千條。但只要走出第一步,熟悉了規(guī)則,解決了一些問題積累經(jīng)驗(yàn),后面的問題就比較少了。
FindBugs
FindBugs是針對java的靜態(tài)分析工具,根據(jù)經(jīng)驗(yàn),確實(shí)能發(fā)現(xiàn)一些沒有意識到的問題,對提高代碼質(zhì)量還是有幫助。掃出的問題以java文件為單位,會定位到代碼行,并給出問題說明,處理起來也比較方便。
FindBugs有一些規(guī)則和級別,如果覺得有一些規(guī)則沒太大必要可以進(jìn)行調(diào)整。印象中有兩個規(guī)則大家覺得比較“無聊”:第一個是有變量申明了但沒有使用,第二個是沒在靜態(tài)函數(shù)中訪問靜態(tài)變量。這兩個如果不處理也沒什么問題,但還是最好處理,形成最佳實(shí)踐。比如有沒有使用的變量,可能是代碼有Bug,應(yīng)該使用的,筆誤成了其它的變量;確實(shí)沒有使用的話,就應(yīng)該刪掉。
FindBugs在實(shí)際項(xiàng)目中,沒有集成到Android Studio,是測試對指定的代碼目錄進(jìn)行了掃描。詳細(xì)的使用方法可參考FindBugs的官網(wǎng)。
CheckStyle
CheckStyle是代碼規(guī)范分析工具,保證團(tuán)隊(duì)的代碼符合一個統(tǒng)一的代碼規(guī)范。CheckStyle的檢查也是根據(jù)定義的規(guī)范文件來的。實(shí)際項(xiàng)目中使用的規(guī)范文件據(jù)說是華為使用的,Github上有下載,我們使用的也是這份規(guī)范,并補(bǔ)充了一些規(guī)則。
CheckStyle有一個Android的插件,因些一般是集成到Android Studio中。
//添加Plugin
apply plugin: 'checkstyle'
//設(shè)置CheckStyle版本
/**
* 檢查代碼規(guī)范的checkstyle
* http://ju.outofmemory.cn/entry/187977
*/
checkstyle {
toolVersion '6.0'
showViolations true
}
//設(shè)置配置文件
task checkstyle(type: Checkstyle) {
configFile file("config/checkstyle/checkstyle.xml")
source 'src/main/java'
include '**/*.java'
exclude '**/gen/**'
ignoreFailures true
classpath = files()
}
配置好后,要進(jìn)行檢查,執(zhí)行g(shù)radle checkstyle任務(wù)就好了,最終檢查結(jié)果會生成HTML和XML文件。結(jié)果也是同F(xiàn)indBugs一樣生成報告郵件。
在實(shí)際項(xiàng)目中,有爭議的還是規(guī)則。有些人之前沒有進(jìn)行過代碼規(guī)范的訓(xùn)練,已經(jīng)形成了自己的習(xí)慣,掃描出來問題就特別多,但還是以規(guī)則為主;且規(guī)則不宜作太大的修改,盡量跟公司內(nèi)還有業(yè)界保持一致。
有些規(guī)則的細(xì)節(jié),可根據(jù)項(xiàng)目實(shí)際情況調(diào)整。比如函數(shù)最多參數(shù)個數(shù)這個規(guī)則就調(diào)了好幾次,因?yàn)榧尤肓艘恍v史代碼,且不太好修改,只好調(diào)整規(guī)則。比如重復(fù)代碼的行數(shù),開始定10行,后來發(fā)現(xiàn)空行也算進(jìn)去了,后面又調(diào)整成15行。其他的一些規(guī)則,如變量命名、方法命名則沒有什么好商量的,按規(guī)則的來,習(xí)慣就好了。
Lint Clean
在實(shí)際項(xiàng)目中,我們還使用了一個LintClean這個工具。主要作用是清除項(xiàng)目中沒有使用的資源文件及資源項(xiàng),如有個xml、png或字符串沒有引用。它會掃描出來并進(jìn)行刪除,也會將掃描結(jié)果保存到xml。通過持續(xù)清除項(xiàng)目中無效資源,即可保證工程整潔,也能防止包文件過大,雖然混淆也會清除無效資源,但還是有一定影響。
這個工具也是插件形式提供的,也可集成到項(xiàng)目,
dependencies {
classpath 'com.droidtitan:lint-cleaner-plugin:0.3.0'
}
apply plugin: 'com.droidtitan.lintcleaner'
配置好后,執(zhí)行g(shù)radle lintClean,就可進(jìn)行檢查。有時,有些資源可能是resources.getIdentifier的使用的,這樣就要加一些白名單。LintClean也提供了加白名單的功能。檢查的結(jié)果也是由測試人員編寫的腳本進(jìn)行解析,定位到責(zé)任人,形成報告并發(fā)送郵件。
跟LintClean一起,我們還加了另一個功能,就是掃描資源目錄下的png、jpg等圖片資源文件,當(dāng)發(fā)現(xiàn)文件大小超過100KB,會單獨(dú)列出來,當(dāng)成文件過大警告。根據(jù)項(xiàng)目的實(shí)際經(jīng)驗(yàn),一般單張圖片大小比較少的情況下需要100K。
總結(jié)
以上是生活随笔為你收集整理的github 检查代码质量_Android(8): 代码质量检查的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 胸腔积水怎么治疗
- 下一篇: android 5.0状态栏下载地址,A