41 lines
2.7 KiB
Markdown
41 lines
2.7 KiB
Markdown
# 代码审查报告
|
||
|
||
**文件:** `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:`/** ... */`,为方法添加 `/** 输出包名错误提示 */`。
|