写点什么

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

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

关注

评论

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

蔚来汽车智能座舱接入通义大模型,并使用通义灵码全面提效

阿里巴巴云原生

2025年智能合约玩法创新白皮书:九大核心模块与收益模型重构Web3经济范式

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

高清视频会议系统BeeWorks Meet,支持私有化部署

BeeWorks

即时通讯 IM 私有化部署 局域网视频软件

JVM实战—线上FGC的几种案例

量贩潮汐·WholesaleTide

JVM

高并发秒杀系统设计:关键技术解析与典型陷阱规避

飞算JavaAI开发助手

蔚来汽车智能座舱接入通义大模型,并使用通义灵码全面提效

阿里云云效

PGRX for Cloudberry 开源,pgvector for Cloudberry 升级到 0.8.0

酷克数据HashData

干货分享!MCP 实现原理,小白也能看懂

王磊

顶尖认证!Cloud Ace 培训师荣膺 Google Cloud 两项重量级培训师大奖

Cloud Ace 云一

云计算 谷歌云 谷歌云培训

Palo Alto Cortex XSOAR 8.8 for ESXi - 安全编排、自动化和响应 (SOAR) 平台

sysin

palo alto

如何使用AI辅助开发CSS3 - 通义灵码功能全解析

阿里巴巴云原生

css3

VMware ESXi 8.0U3e macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版

sysin

esxi

深入研究:京东图片搜索商品API详解

tbapi

京东API 京东拍立淘API 京东图片搜索API 京东图片API

DeepSeek :中国 AI 如何用 “小米加步枪” 逆袭硅谷

GPU算力

数字化转型 #大模型 PC集群 DeepSeek DeepSeek R1 模型

VMware vCenter Server 8.0U3e 发布 - 集中管理 vSphere 环境

sysin

vcenter

手把手教你安装部署金仓数据库KingbaseES

金仓技术

数据库 电科金仓 KingbaseES 金仓数据库

后端程序员逆袭之路:巧用 AI 工具,拿下高薪 offer

飞算JavaAI开发助手

2025上海国际电子元器件展览会

AIOTE智博会

页面加载提速37.9%,“凯叔讲故事”做了什么

HarmonyOS SDK

harmoyos

“新E代弯道王”MAZDA EZ-6鹭羽白内饰焕新

极客天地

VMware vSphere 8.0 Update 3e 下载 - 企业级工作负载平台

sysin

vSphere

VMware ESXi 8.0U3e macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)

sysin

esxi

如何使用AI辅助开发CSS3 - 通义灵码功能全解析

阿里云云效

Android 16 应用适配指南

冉冉同学

android 安卓

DeepSeek大模型Prompt工程深度实践(开发者空间Notebook版)

华为云开发者联盟

昇腾 DeepSeek 华为开发者空间

下一代数据架构全景:云原生实践、行业解法与 AI 底座 | Databend Meetup 成都站回顾

Databend

VMware ESXi 8.0U3e 发布下载 - 领先的裸机 Hypervisor

sysin

esxi

面试官:如果某个业务量突然提升100倍QPS你会怎么做?

不在线第一只蜗牛

程序员 面试

观测云多步拨测最佳实践

观测云

可用性监测

AI应用突围,中小企业的新周期已至

新消费日报

Cloud Ace 荣获 2025 年 Google Cloud 大中华区年度国家合作伙伴大奖!

Cloud Ace 云一

Google Cloud 谷歌云 企业云服务 Google Cloud Next'25

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