• PMD:Java源代码扫描器


    PMD是一个开源代码分析器。可以查找常见编程缺陷,比如未使用的变量、空catch代码块、不必要的对象创建等。支持Java、JavaScript、PLSQL、Apache Velocity、XML、XSL。

    pmd

    除此之外,PMD还包含CPD(拷贝、粘贴检测器)。CPD可以发现重复的Java、C、C++、C#、PHP、Ruby、Fortran、JavaScript、PLSQL、Apache Velocity、Ruby、Scala、Objective C、Matlab、Python、Go。

    主要功能

    与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在不运行Java程序的情况下报告错误。PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题,例如:

    • 潜在的bug:空的try/catch/finally/switch语句
    • 未使用的代码:未使用的局部变量、参数、私有方法等
    • 可选的代码:String/StringBuffer的滥用
    • 复杂的表达式:不必须的if语句、可以使用while循环完成的for循环
    • 重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs
    • 循环体创建新对象:尽量不要再for或while循环体内实例化一个新对象
    • 资源关闭:Connect,Result,Statement等使用之后确保关闭掉

    此外,用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。例如,你可以编写一个规则,要求PMD找出所有创建Thread和Socket对象的操作。

    工作原理

    PMD的核心是JavaCC解析器生成器。PMD结合运用JavaCC和EBNF(扩展巴科斯-诺尔范式,Extended Backus-Naur Formal)语法,再加上JJTree,把Java源代码解析成抽象语法树(AST,Abstract Syntax Tree)。

    安装及PMD插件

    PMD为各种IDE提供了安装插件:

    文档

    官方文档介绍了从下载、安装、相关书籍、最佳实践、自定义规则等详细信息。

    官方网站:https://pmd.github.io/
    开源地址:https://github.com/pmd

  • 相关阅读:
    洛谷P3674 小清新人渣的本愿
    洛谷P3709 大爷的字符串
    CF747F Igor and Interesting Numbers
    洛谷P1494 小Z的袜子
    洛谷P3396 哈希冲突
    分块⑨题
    洛谷P4219 大融合
    bzoj2959 长跑
    洛谷P2486 染色
    洛谷P4382 劈配
  • 原文地址:https://www.cnblogs.com/huojg-21442/p/7614199.html
Copyright © 2020-2023  润新知