写点什么

PMD:自动化源码分析和 bug 检测

  • 2007-07-23
  • 本文字数:909 字

    阅读完需:约 3 分钟

PMD 这款开源的自动化 Java 源码分析和 bug 检测工具刚刚发布了 4.0 版。InfoQ 就 PMD 所提供的功能与该项目的负责人 Tom Copeland 进行了深入探讨。

PMD 是一个静态 Java 源码分析工具,从概念上讲与 Checkstyle FindBugs Coverity 很相似。它从 Java 代码中可以搜索出那些效率低下的代码,bug 和常见的编程问题。它可以通过 IDE 的集成在开发环境中使用,也可以和 Ant Maven 构建直接交互。PMD 使用规则(rules)来执行源码分析,这些规则可以被组织为规则集(rulesets)。InfoQ 就具体细节向 Cohen 进行了提问,Cohen 回答说:

这些规则是按照它们所检查的问题进行分类的——“无用代码”的规则集检查那些没有用到的局部变量,私有变量和方法;“严格异常”的规则集检查那些抛出异常的方法和捕获如 NullPointerException 等异常的代码块。还有一些是特定于代码库的规则集。例如, JUnit 规则集用来在 JUnit 测试套件中寻找常见的问题(如使用了assert(x==null) 而不是``assertNull(x))等。当前我们已经有了 225 条规则,还有更多的规则正在制定中。当有人想到了新的规则并提交补丁或是请求时,新规则就会被添加进来。每一条规则都有一系列相关的单元测试,来减少那些比较明显的“假阳性(false positive)”的数量;我们希望这也会使得 PMD 产生的检查报告保持相当的整洁。

InfoQ 问到在 4.0 中有哪些新特性时,Copeland 回答说,最大的新特性就是 Java 5。PMD 在 Java 5 的基础上进行了重写,现在已经是默认对基于 Java 5 的源码进行分析了——当然 1.4 和之前的代码一样可以支持。在性能上也有了提升,同时还有些 bug 的修复和新的代码检查规则。当被问到 PMD 下一步比较大的计划是什么时,Copeland 答道:

类型解析将是一块比较重要的内容。目前 PMD 只能一次检查一个源码文件,这就对它的规则作用区域有所限制。我们的一个核心开发人员 Allan Caplan 已经在这个方向做了大量的工作,他用了 ASM 这个字节码操作库来解析类文件依赖,我们认为这将减少“假阳性”的数量,发现更多真正的问题。我们现在已经有了一个数据流分析层,当类型解析完成之后,它就能用得上这个功能了。这是多么美妙的事情啊!

查看英文原文: PMD: Automated source code analysis and bug detection

2007-07-23 08:161996
用户头像

发布了 197 篇内容, 共 57.9 次阅读, 收获喜欢 20 次。

关注

评论

发布
暂无评论
发现更多内容

云灾备场景

天翼云开发者社区

公有云 容灾场景

InfoQ对话天润融通CTO|AI时代,开发者的机遇与挑战?

天润融通

人工智能

官宣!玲珑项目升级,如意玲珑(Linyaps)全新启航!

nn-30

Linux 开源 操作系统 deepin deepin V23

某新员工大量使用Lambda表达式,老员工喷是炫技

源字节1号

小程序 开源 前端 后端

软件测试学习笔记丨接口请求体-form表单

测试人

软件测试

性能测试:行业流行性能剖析工具介绍

测吧(北京)科技有限公司

测试

搭建安全测试演练环境:实操常见安全漏洞

测吧(北京)科技有限公司

测试

代码审查完整指南来了!

敏捷开发

编程 软件开发 代码审查 代码管理

rbd常用的配置参数

天翼云开发者社区

rbd 配置参数

Python循环控制

不在线第一只蜗牛

Python

Objective-C 语言基础知识:编写测试代码

测吧(北京)科技有限公司

测试

在 Xcode 中运行和调试单元测试:使用 Debug 和日志

测吧(北京)科技有限公司

测试

S3基准测试工具 - Warp使用简介

天翼云开发者社区

测试 S3 开源云工具

什么是云抄表?

源字节1号

小程序 开源 后端‘’

京东按图搜索商品新视角:jd.item_search_img API返回值解读

技术冰糖葫芦

API 安全 API 文档 API 开发 API 协议

测试平台环境配置指南

测吧(北京)科技有限公司

测试

基于快照的异步远程复制介绍

天翼云开发者社区

Java 前端 rbd

etl 常用数据类型转换 元数据配置说明

weigeonlyyou

Go 大数据 物联网 ETL MySQL 8.0

天润融通用小改进,盘活大资产

天润融通

人工智能 天润融通

Java/OC 语言知识讲解:反射与回调

测吧(北京)科技有限公司

测试

接入单元测试框架:原理与执行流程介绍

测吧(北京)科技有限公司

测试

为什么从 Demo 测试开始上手

测吧(北京)科技有限公司

测试

抖音商品详情API实战指南:轻松获取并利用商品数据

tbapi

抖音商品数据采集 抖音API 抖音数据采集 抖音商品详情接口

deepin Meetup 上海站回顾,揭秘如意玲珑(Linyaps)升级“内幕” | 附 PPT下载

nn-30

Linux 开源 操作系统 deepin deepin V23

AI大模型深度对比:腾讯混元大模型 VS 百川大模型

幂简集成

AI API 大模型

没有它,你的Scrum无法实现!

敏捷开发

项目管理 Scrum 敏捷开发

Web 应用框架环境安装指南

测吧(北京)科技有限公司

测试

SQLAlchemy 安装与配置指南

测吧(北京)科技有限公司

测试

PMD:自动化源码分析和bug检测_Java_Ryan Slobojan_InfoQ精选文章