1.背景
使用代碼分析工具PMD檢查Android Java代碼缺陷者春,本文是個整理捌刮。
介紹
PMD是一個靜態(tài)源代碼分析器浸间。它找到常見的編程缺陷恨憎,如未使用的變量与境,空的catch塊验夯,不必要的對象創(chuàng)建等等。它主要關(guān)注Java和Apex嚷辅,但支持其他六種語言簿姨。
PMD具有許多內(nèi)置檢查(在PMD術(shù)語,規(guī)則中)簸搞,這些檢查在規(guī)則參考中針對每種語言進(jìn)行了記錄扁位。我們還支持廣泛的API來編寫您自己的規(guī)則,您可以使用Java或作為自包含的XPath查詢來執(zhí)行趁俊。
在集成到構(gòu)建過程中時域仇,PMD最有用。然后寺擂,它可以用作質(zhì)量門暇务,以強(qiáng)制執(zhí)行代碼庫的編碼標(biāo)準(zhǔn)泼掠。除其他外,PMD可以運行:
- 作為Maven的目標(biāo)
- 作為Ant任務(wù)
- 作為Gradle任務(wù)
- 從命令行
官網(wǎng)地址
https://pmd.github.io/pmd/index.html
命令行方式使用 PMD 的Demo
https://github.com/vir56k/demo/tree/master/pmd/%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%96%B9%E5%BC%8F%E4%BD%BF%E7%94%A8pmd
Gradle 方式使用 PMD 的Demo
https://github.com/vir56k/demo/tree/master/pmd/UsePMDByGradle
2.命令行方式使用 PMD
2.1 先了解使用手冊
https://pmd.github.io/pmd/pmd_userdocs_installation.html#how-to-install-pmd-and-cpd
2.2 下載
前往官網(wǎng)垦细,下載 壓縮包择镇,解壓
下載地址
https://github.com/pmd/pmd/releases
2.3 執(zhí)行檢測的命令行格式
./run.sh pmd -d ../../../src/main/java/ -f text -R rulesets/java/basic.xml
2.4 我的腳本
# 準(zhǔn)備環(huán)境信息
CUR=`PWD`
echo 當(dāng)前工作目錄:${CUR}
basepath=$(cd `dirname $0`; pwd)
echo 當(dāng)前執(zhí)行的腳本文件的父目錄:${basepath}
PMD_HOME=$basepath/pmd-bin-6.12.0
echo PMD_HOME:${PMD_HOME}
PROJ_DIR=$(cd ${basepath}; cd ../../; pwd)
echo PROJ_DIR:${PROJ_DIR}
SRC=${PROJ_DIR}/app/src/main/java
FORMAT=html
RULE=rulesets/java/basic.xml
${PMD_HOME}/bin/run.sh pmd -d ${SRC} -f ${FORMAT} -R ${RULE}
3.Gradle 方式使用 PMD
3.1 引用插件
apply plugin: 'pmd'
3.2 編寫task
def configDir = "${project.rootDir}/scripts"
def reportsDir = "${project.buildDir}/reports"
task pmd(type: Pmd) {
ignoreFailures = true
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"
}
}
}
3.3 關(guān)聯(lián)到 check task
check.dependsOn 'pmd'
3.4 執(zhí)行 check
./gradlew check
查看報告
位于:build/reports/pmd 文件夾下