在咱們平時項目開發中,常常會寫一些不嚴謹的代碼或者一些比較低級的錯誤代碼,可是這些錯誤每每很難被發現,這樣就致使了咱們的項目中會隱藏了不少影響性能甚至是致使閃退的錯誤代碼,因而許多響應的檢測工具就出現了.在這裏我就介紹一下我比較經常使用的幾個檢測工具吧javascript
顧名思義,FindBugs是一個尋找bug的工具,更具體的說FindBugs是一個靜態檢測java代碼的工具,能夠找到代碼中的一些潛在bug,好比說NullPointerException,或者是一些流或者數據庫沒有關閉的問題.html
檢測範圍 :java
當建立流的時候發生了異常 那麼inputStream就可能爲空 接下來直接調用inputStream就可能產生空指針異常
android
這裏使用了io流,可是沒有作釋放
git
task findbugs(type: FindBugs, dependsOn: "assembleDebug") {
ignoreFailures = false
effort = "max"
reportLevel = "high"
excludeFilter = new File("$configDir/findbugs/findbugs-filter.xml")//這裏是自定義的規則
classes = files("${project.rootDir}/app/build/intermediates/classes")
source 'src'
include '**/*.java'
exclude '**/gen/**'
reports {
xml.enabled = false
html.enabled = true
xml {
destination "$reportsDir/findbugs/findbugs.xml" //這裏是報告產生的路徑
}
html {
destination "$reportsDir/findbugs/findbugs.html" //這裏是報告產生的路徑
}
}
classpath = files()
}複製代碼
task pmd(type: Pmd) {
ignoreFailures = false
ruleSetFiles = files("$configDir/pmd/pmd-ruleset.xml") //這裏是自定義的規則
ruleSets = []
source 'src'
include '**/*.java'
exclude '**/gen/**'
reports {
xml.enabled = false
html.enabled = true
xml {
destination "$reportsDir/pmd/pmd.xml" //這裏是報告產生的路徑
}
html {
destination "$reportsDir/pmd/pmd.html" //這裏是報告產生的路徑
}
}
}複製代碼
TreatCheckstyle errors as warnings 若是勾上的話,檢測到錯誤時只是會以警告的形式提示github
下面是勾上時的提示方式(以警告的形式)正則表達式
下面是不勾時的提示方式(以報錯的形式)
數據庫
下面是選擇官方默認的檢測規則(也能夠本身定義,具體這裏就不作詳解了)
編程
task checkstyle(type: Checkstyle) {
configFile file("$configDir/checkstyle/checkstyle.xml") //這裏是自定義的規則
configProperties.checkstyleSuppressionsPath = file("$configDir/checkstyle/suppressions.xml").absolutePath //這裏是自定義的規則
source 'src'
include '**/*.java'
exclude '**/gen/**'
classpath = files()
}複製代碼
注意Demo裏面的task都抽取到了config目錄下的quality.gradle中,因此須要在項目的build.gradle添加android-studio
apply from: '../config/quality.gradle'
Demo是在他人的基礎上修改的,因爲已經沒法找到源頭,因此在這裏聲明一下