美文网首页程序员
使用代码分析工具PMD检查Android Java代码缺陷

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

作者: 张云飞Vir | 来源:发表于2019-03-22 17:23 被阅读0次

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

    image.png

    4. 参考

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

    相关文章

      网友评论

        本文标题:使用代码分析工具PMD检查Android Java代码缺陷

        本文链接:https://www.haomeiwen.com/subject/mrurvqtx.html