Files
2026Technology-Competition/data/demo-pmd/reports/PackageCaseDemo-review.md
T

41 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 代码审查报告
**文件:** `data\demo-pmd\src\com\demo\BadCase\PackageCaseDemo.java`
**语言:** java
**耗时:** 109.8s
**分析工具:** pmd
---
总计: 7 | 错误: 1 | 警告: 5 | 建议: 1
静态分析 · 4 个问题
- 🔴 `pmd:SystemPrintln` L8
使用了 System.out/err 进行输出
建议: 不要直接使用 `System.out.println`,应改用日志框架(如 `java.util.logging.Logger` 或 SLF4J)输出。例如:`Logger.getLogger(PackageCaseDemo.class).info("bad package case");`,并添加相应导入和 Logger 字段。
- 🟡 `pmd:PackageCase` L4
包名包含大写字母
建议: 包名应全部小写,以符合 Java 命名规范。建议将 `BadCase` 改为 `badcase`,即 `package com.demo.badcase;`
- 🟡 `pmd:AtLeastOneConstructor` L6
每个类应至少声明一个构造器
建议: 为类 `PackageCaseDemo` 添加显式构造器。若类设计为不可实例化,应添加私有构造器;否则添加默认可见性的构造器。例如:`PackageCaseDemo() { }`
- 🟡 `pmd:CommentDefaultAccessModifier` L7
方法 'm()' 缺少默认访问修饰符的注释
建议: 该方法使用默认(包私有)访问权限,请添加注释说明,例如 `/* default */``// default`。建议:`/* default */ void m() {`
AI 审查 · 3 条建议
- 🟡 [AI] [design] `explicit-access-modifier` L6
**类和方法使用隐式包私有访问权限**
`PackageCaseDemo` 类和 `m()` 方法均未声明访问修饰符,使用包私有默认权限。这会降低可维护性,外部包无法访问,且意图不明确。若允许外部使用,应显式声明 `public`;若仅限包内使用,至少按 PMD 要求添加注释,但自定义访问修饰符更清晰。
建议: 根据设计意图显式添加修饰符。若计划作为公开 API,写为 `public class PackageCaseDemo { public void m() { ... } }`;若希望保持包私有,可保留现状但补充注释。
- 🟡 [AI] [design] `method-could-be-static` L7
**方法 m() 可以声明为 static**
方法 `m()` 没有访问任何实例字段或实例方法,因此不需要实例上下文。将其声明为 `static` 可以避免强制创建无状态实例,并明确表达该方法属于类级别。
建议: 将 `void m()` 改为 `static void m()`;如果只是打印固定文本,建议同时将方法重命名为描述性名称,如 `printBadPackageMessage`
- 🔵 [AI] [design] `missing-javadoc` L6
**类和方法缺少 Javadoc 文档注释**
`PackageCaseDemo` 类和 `m()` 方法没有 Javadoc 注释,无法说明类目的、方法和预期行为。虽然这是演示代码,但良好的公共 API 应提供文档注释。
建议: 为类添加 Javadoc`/** ... */`,为方法添加 `/** 输出包名错误提示 */`