1. 背景
使用代码分析工具 PMD 检查 Android Java 代码缺陷, 本文是个整理.
介绍
PMD 是一个静态源代码分析器. 它找到常见的编程缺陷, 如未使用的变量, 空的 catch 块, 不必要的对象创建等等. 它主要关注 Java 和 Apex, 但支持其他六种语言.
PMD 具有许多内置检查 (在 PMD 术语, 规则中), 这些检查在规则参考中针对每种语言进行了记录. 我们还支持广泛的 API 来编写您自己的规则, 您可以使用 Java 或作为自包含的 XPath 查询来执行.
在集成到构建过程中时, PMD 最有用. 然后, 它可以用作质量门, 以强制执行代码库的编码标准. 除其他外, PMD 可以运行:
作为 Maven 的目标
作为 Ant 任务
作为 Gradle 任务
从命令行
官网地址
https://pmd.github.io/pmd/index.html
命令行方式使用 PMD 的 Demo
https://github.com/vir56k/demo/tree/master/pmd/命令行方式使用pmd
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 下载
前往官网, 下载 压缩包, 解压
下载地址
https://github.com/pmd/pmd/releases
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
4. 参考
https://pmd.github.io/pmd/index.html
来源: http://www.jianshu.com/p/5fe23ed8d147