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

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/%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 先了解使用手册

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

2044033-57edc495011268d2.png
image.png

4. 参考

https://pmd.github.io/pmd/index.html

发布了253 篇原创文章 · 获赞 7 · 访问量 9万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览