使用程式碼分析工具PMD檢查Android Java程式碼缺陷
1.背景
使用程式碼分析工具PMD檢查Android Java程式碼缺陷,本文是個整理。
介紹
PMD是一個靜態原始碼分析器。它找到常見的程式設計缺陷,如未使用的變數,空的catch塊,不必要的物件建立等等。它主要關注Java和Apex,但支援其他六種語言。
PMD具有許多內建檢查(在PMD術語,規則中),這些檢查在規則參考中針對每種語言進行了記錄。我們還支援廣泛的API來編寫您自己的規則,您可以使用Java或作為自包含的XPath查詢來執行。
在整合到構建過程中時,PMD最有用。然後,它可以用作質量門,以強制執行程式碼庫的編碼標準。除其他外,PMD可以執行:
- 作為Maven的目標
- 作為Ant任務
- 作為Gradle任務
- 從命令列
命令列方式使用 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%A8pmdGradle 方式使用 PMD 的Demo
https://github.com/vir56k/demo/tree/master/pmd/UsePMDByGradle2.命令列方式使用 PMD
2.1 先了解使用手冊
https://pmd.github.io/pmd/pmd_userdocs_installation.html#how-to-install-pmd-and-cpd
2.2 下載
2.3 執行檢測的命令列格式
./run.sh pmd -d ../../../src/main/java/ -f text -R rulesets/java/basic.xml
2.4 我的指令碼
# 準備環境資訊 CUR=`PWD` echo 當前工作目錄:${CUR} basepath=$(cd `dirname $0`; pwd) echo 當前執行的指令碼檔案的父目錄:${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 關聯到 check task
check.dependsOn 'pmd'
3.4 執行 check
./gradlew check
檢視報告
位於:build/reports/pmd 資料夾下

image.png