1.背景
使用代碼分析工具PMD檢查Android Java代碼缺陷,本文是個(gè)整理。
介紹
PMD是一個(gè)靜態(tài)源代碼分析器。它找到常見的編程缺陷,如未使用的變量,空的catch塊,不必要的對(duì)象創(chuàng)建等等。它主要關(guān)注Java和Apex,但支持其他六種語(yǔ)言。
PMD具有許多內(nèi)置檢查(在PMD術(shù)語(yǔ),規(guī)則中),這些檢查在規(guī)則參考中針對(duì)每種語(yǔ)言進(jìn)行了記錄。我們還支持廣泛的API來(lái)編寫您自己的規(guī)則,您可以使用Java或作為自包含的XPath查詢來(lái)執(zhí)行。
在集成到構(gòu)建過(guò)程中時(shí),PMD最有用。然后,它可以用作質(zhì)量門,以強(qiáng)制執(zhí)行代碼庫(kù)的編碼標(biāo)準(zhǔn)。除其他外,PMD可以運(yùn)行:
- 作為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 先了解使用手冊(cè)
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í)行檢測(cè)的命令行格式
./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
查看報(bào)告
位于:build/reports/pmd 文件夾下
