写点什么

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:161863
用户头像

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

关注

评论

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

TikTok直播网络方案推荐

Ogcloud

TikTok 直播专线 tiktok直播 tiktok直播专线 tiktok直播网络

体育赛事直播APP网站开发:提升用户增长必要核心功能

软件开发-梦幻运营部

云投集团:流程+数据,双轮驱动世界一流财务管理体系

用友智能财务

报表 财务 会计

10 分钟了解 18 个冷门编程概念

俞凡

最佳实践

如何让敏捷落地?谈谈敏捷工具在团队中的应用实践

爱吃鱼的小雨

敏捷开发 敏捷项目管理 敏捷工具 scrum工具 敏捷研发工具

一个超经典 WinForm,WPF 卡死问题的终极反思

快乐非自愿限量之名

WPF

2025年,全球人形机器人市场迎来新格局!!

机器人头条

自动驾驶 科技 大模型 人形机器人

流程+数据,双轮驱动世界一流财务管理体系访谈分享

用友智能财务

投资 访谈 会计

利用原生IP做海外电商平台店铺运营有哪些好处

Ogcloud

海外原生IP 海外IP 原生IP 海外IP代理 海外静态IP

深度解析:低代码技术如何为新型工业化提供关键赋能支撑

快乐非自愿限量之名

通义灵码 2.0 全新升级,阿里云正式推出繁星计划

阿里云云效

阿里云 云原生 通义灵码

人形机器人的ChatGPT时刻即将到来,如何转入?

机器人头条

自动驾驶 大模型 人形机器人 科技、

专业解读:JNPF低代码开发平台怎样为企业财务管理创新转型提供数字化赋能

不在线第一只蜗牛

低代码

GitLab 国际站中国大陆等地区停服,如何将数据快速迁移到云效

阿里云云效

阿里云 云原生

通义灵码 2.0 全新升级,阿里云正式推出繁星计划

阿里巴巴云原生

阿里云 云原生

场景题:如何实现亿级用户在线状态统计?

王磊

2024年终总结:终于把北京房贷还清啦!

王中阳Go

面试题 找工作 年终总结 就业辅导 程序员创业

群体基因组文献解读-Prediction of axillary lymph node metastasis in triple-negative breast cancer by multi-omics analysis and an integrate

INSVAST

基因检测 生信分析 Sentieon 三阴性乳腺癌 变异分析

去哪儿 Node 生成 1 亿张图片实践 (Satori + Sharp)

Qunar技术沙龙

人工智能 Ai绘图

从代理聊到Lambda表达式

陈一之

Java 设计模式 杂谈

Kyutai开源端侧模型Helium -1 preview;FoloToy内测「超级智能体」,支持联网查询和语音调整音量语速

声网

设计了两个弹性长度数字编码,可以灵活地编解码数字以便高效传输

Drunk

编码 路由协议 DCE

G1原理—G1垃圾回收过程之Full GC

EquatorCoco

Java 算法 JVM

火山引擎上线鸿蒙原生智能美化解决方案 轻松提升图形视频美化体验

HarmonyOS开发者

火山引擎

工作流程图怎么制作?10个流程图模板案例盘点!

职场工具箱

流程图 画图软件 绘图 在线白板 流程图绘制工具

SimCorp最新买方调查显示,人工智能必须更好地融入投资流程

财见

恭喜 Apache RocketMQ、Apache Seata 荣获 2024 开源创新榜单“年度开源项目”

阿里巴巴云原生

Apache 阿里云 RocketMQ 云原生

数智化转型背景下,低代码开发推动企业快速迭代的专业洞察与实践分析

EquatorCoco

低代码

用DevEco Studio模拟器这些能力 没真机也能高效调测鸿蒙原生应用

HarmonyOS开发者

GitLab 国际站中国大陆等地区停服,如何将数据快速迁移到云效

阿里巴巴云原生

阿里云 gitlab 云原生

我在腾讯用AI写代码

cloud studio AI应用

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