应用介绍
代码评审最耗人的部分往往不是设计讨论,而是一遍遍指出"这个变量没用到""这个异常吞掉了""这三段几乎一模一样"。这些问题机器看得比人快得多。
PMD 就是干这个的。它把源码解析成语法树,再拿规则去匹配,找出空的 catch 块、没用到的私有方法、必然为真的判断、过度复杂的分支。附带的 CPD 能跨文件找出复制粘贴出来的重复代码,这一项在老项目上往往能翻出惊人的量。它支持 Java、JavaScript、Apex、C#、Kotlin、Swift 等十几种语言,规则可以用 XPath 自己写,接进 CI 之后每次提交自动跑一遍。
多语言支持:Java、Kotlin、Swift、C#、JavaScript、Apex、PL/SQL、XML 等十几种语言共用一套引擎和报告格式。
CPD 重复代码检测:按 token 序列比对,能找出改过变量名、调过顺序的复制粘贴代码,跨文件跨语言都能查。
规则可自定义:内置几百条规则可以按项目挑选,也能用 XPath 表达式或 Java 类写自己团队的规范。
多种报告格式:文本、HTML、XML、SARIF、CSV 任选,能直接喂给 GitHub 代码扫描或 SonarQube。
接入构建流程:Maven、Gradle、Ant 插件齐全,也能在 CI 里当命令行工具跑,超过阈值就让流水线失败。
PMD 就是干这个的。它把源码解析成语法树,再拿规则去匹配,找出空的 catch 块、没用到的私有方法、必然为真的判断、过度复杂的分支。附带的 CPD 能跨文件找出复制粘贴出来的重复代码,这一项在老项目上往往能翻出惊人的量。它支持 Java、JavaScript、Apex、C#、Kotlin、Swift 等十几种语言,规则可以用 XPath 自己写,接进 CI 之后每次提交自动跑一遍。
软件功能
多语言支持:Java、Kotlin、Swift、C#、JavaScript、Apex、PL/SQL、XML 等十几种语言共用一套引擎和报告格式。
CPD 重复代码检测:按 token 序列比对,能找出改过变量名、调过顺序的复制粘贴代码,跨文件跨语言都能查。
规则可自定义:内置几百条规则可以按项目挑选,也能用 XPath 表达式或 Java 类写自己团队的规范。
多种报告格式:文本、HTML、XML、SARIF、CSV 任选,能直接喂给 GitHub 代码扫描或 SonarQube。
接入构建流程:Maven、Gradle、Ant 插件齐全,也能在 CI 里当命令行工具跑,超过阈值就让流水线失败。


