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

47 lines
2.5 KiB
Markdown

# 代码审查报告
**文件:** `data\demo-pmd\src\com\demo\errorprone\extra\CallSuperDemo.java`
**语言:** java
**耗时:** 104.2s
**分析工具:** pmd
---
总计: 10 | 错误: 3 | 警告: 7 | 建议: 0
静态分析 · 7 个问题
- 🔴 `pmd:SystemPrintln` L34
使用了System.out/err
建议: 在Android中应使用日志框架,例如用 android.util.Log.d("CallSuperMain", "demo call super") 替代 System.out.println,并确保导入 Log 类。
- 🟡 `pmd:AtLeastOneConstructor` L11
每个类应至少声明一个构造函数
建议: 为类添加一个无参构造函数,并调用 super()。例如:public MissingSuperFirst() { super(); }
- 🟡 `pmd:CallSuperFirst` L13
应在方法开头调用super
建议: 在onCreate方法的第一行调用 super.onCreate(bundle),然后再执行其他操作。
- 🟡 `pmd:CommentDefaultAccessModifier` L17
方法'foo()'缺少默认访问修饰符的注释
建议: 为默认包私有访问权限添加注释,例如:/* default */ void foo();或者如果方法仅在类内部使用,可以显式声明为 private。
- 🟡 `pmd:AtLeastOneConstructor` L22
每个类应至少声明一个构造函数
建议: 为类添加一个无参构造函数,并调用 super()。例如:public MissingSuperLast() { super(); }
- 🟡 `pmd:CallSuperLast` L24
应在方法末尾调用super
建议: 在onPause方法的最后一行调用 super.onPause(),确保父类生命周期逻辑正确执行。
- 🟡 `pmd:CommentDefaultAccessModifier` L28
方法'foo()'缺少默认访问修饰符的注释
建议: 为默认包私有访问权限添加注释,例如:/* default */ void foo();或者如果方法仅在类内部使用,可以显式声明为 private。
AI 审查 · 3 条建议
- 🔴 [AI] [bug] `activity-class-not-public` L11
**Activity子类未声明为public**
在Android中,Activity类必须声明为public,否则系统可能无法通过反射实例化并启动。MissingSuperFirst类当前为包私有,应在类声明中添加public修饰符。
- 🔴 [AI] [bug] `activity-class-not-public` L22
**Activity子类未声明为public**
MissingSuperLast类同样应声明为public,确保系统能够实例化。
- 🟡 [AI] [design] `no-useless-main` L33
**包含无用的main方法**
CallSuperMain类中的main方法在Android应用中不会作为入口执行,Android应用由Activity生命周期驱动。此方法可能是遗留代码或用于本地测试,建议删除或将其抽取到独立的测试类中使用JUnit进行测试。