前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用代码分析工具PMD检查Android Java代码缺陷

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

作者头像
张云飞Vir
发布2020-03-16 16:25:33
1.8K0
发布2020-03-16 16:25:33
举报
文章被收录于专栏:写代码和思考写代码和思考

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 执行检测的命令行格式

代码语言:javascript
复制
   ./run.sh pmd -d ../../../src/main/java/ -f text -R rulesets/java/basic.xml

2.4 我的脚本

代码语言:javascript
复制
    # 准备环境信息
    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

代码语言:javascript
复制
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

代码语言:javascript
复制
check.dependsOn 'pmd'

3.4 执行 check

代码语言:javascript
复制
./gradlew check

查看报告

位于:build/reports/pmd 文件夹下

image.png

4. 参考

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.背景
    • 介绍
    • 2.命令行方式使用 PMD
      • 2.1 先了解使用手册
        • 2.2 下载
          • 2.3 执行检测的命令行格式
            • 2.4 我的脚本
            • 3.Gradle 方式使用 PMD
              • 3.1 引用插件
                • 3.2 编写task
                  • 3.3 关联到 check task
                    • 3.4 执行 check
                      • 查看报告
                      • 4. 参考
                      相关产品与服务
                      腾讯云代码分析
                      腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档