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

2.5 KiB

代码审查报告

文件: 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进行测试。