使用代码分析工具PMD检查Android Java代码缺陷,本文是个整理。
PMD是一个静态源代码分析器。它找到常见的编程缺陷,如未使用的变量,空的catch块,不必要的对象创建等等。它主要关注Java和Apex,但支持其他六种语言。 PMD具有许多内置检查(在PMD术语,规则中),这些检查在规则参考中针对每种语言进行了记录。我们还支持广泛的API来编写您自己的规则,您可以使用Java或作为自包含的XPath查询来执行。 在集成到构建过程中时,PMD最有用。然后,它可以用作质量门,以强制执行代码库的编码标准。除其他外,PMD可以运行:
官网地址 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
https://pmd.github.io/pmd/pmd_userdocs_installation.html#how-to-install-pmd-and-cpd
前往官网,下载 压缩包,解压 下载地址 https://github.com/pmd/pmd/releases
./run.sh pmd -d ../../../src/main/java/ -f text -R rulesets/java/basic.xml
# 准备环境信息
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}
apply plugin: 'pmd'
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"
}
}
}
check.dependsOn 'pmd'
./gradlew check
位于:build/reports/pmd 文件夹下
image.png