使用代码分析工具PMD检查Android Java代码缺陷

544 阅读1分钟

1.背景

使用代码分析工具PMD检查Android Java代码缺陷,本文是个整理。

介绍

PMD是一个静态源代码分析器。它找到常见的编程缺陷,如未使用的变量,空的catch块,不必要的对象创建等等。它主要关注Java和Apex,但支持其他六种语言。
PMD具有许多内置检查(在PMD术语,规则中),这些检查在规则参考中针对每种语言进行了记录。我们还支持广泛的API来编写您自己的规则,您可以使用Java或作为自包含的XPath查询来执行。
在集成到构建过程中时,PMD最有用。然后,它可以用作质量门,以强制执行代码库的编码标准。除其他外,PMD可以运行:

  • 作为Maven的目标
  • 作为Ant任务
  • 作为Gradle任务
  • 从命令行

官网地址
pmd.github.io/pmd/index.h…

命令行方式使用 PMD 的Demo
github.com/vir56k/demo…

Gradle 方式使用 PMD 的Demo
github.com/vir56k/demo…

2.命令行方式使用 PMD

2.1 先了解使用手册

pmd.github.io/pmd/pmd_use…

2.2 下载

前往官网,下载 压缩包,解压
下载地址
github.com/pmd/pmd/rel…

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 文件夹下

2044033-57edc495011268d2.png

image.png

4. 参考

pmd.github.io/pmd/index.h…