Java检测无用代码之UCDetector

如果你的项目代码量很大,或者维护了好多年,就必然会存在很多无用代码,维护这些代码会带来很大的成本开支,有时候需要清理这些无用代码,可以通过代码覆盖率工具来检测,但是这样也会很费事。UCDetector : Unnecessary Code Detector,一个检测无用的public代码(类、方法,属性等)的eclipse插件。

http://www.ucdetector.org/

Eclipse update site:
http://ucdetector.sourceforge.net/update

(1)eclipse已经提示了一些无用代码
编译器提示:
Preferences > Java > Compiler > Errors/Warning :Unnecessary code
  • Value of local variable is not used
  • Value of parameter is not used(默认Ignore)
  • Unused type parameter(默认Ignore)
  • Unused import
  • Unused private member
  • Unnecessary 'else' statement(默认Ignore)
  • Unnecessary cast or 'instanceof' operation(默认Ignore)
  • Unnecessary declaration of thrown exception(默认Ignore)
  • Unused 'break' or 'continue' label
  • Redundant super interface(默认Ignore)

代码辅助提示:
Preferences > Java > Code Style > Clean Up  :Unnecessary Code
  • Unused code
  •   Remove unused imports
  •   Remove unused private memebers(默认未选中)
  •   Remove unused local variables(默认未选中)
  • Unnecessary Code
  •   Remove unnecessary casts
  •   Remove unnecessary '$NON-NLS$' tags


看开源代码的时候经常会看到类似//$NON-NLS-1$、//$NON-NLS-2$......//$NON-NLS-n$等这样的注释。意思当前行的第n个字符串不需要外置做国际化,其中NLS代表"National Language Support"。eclipse有一个resources creator tool,能够将代码中的字符串,自动提取到.properties中去。在java代码中点击右键,Source > Externalize Strings。

(2)使用UCDetector
使用方法很简单,无论是整个项目,或者某个Java文件都可以右键选择“UCDetector/detect unnecessary code”来检测,检测后的结果显示在Problems视图里(选Group By Type)。
Java检测无用代码之UCDetector

Java检测无用代码之UCDetector

Java检测无用代码之UCDetector

Java检测无用代码之UCDetector

工具再智能也只是帮助你检测出来那些没有被引用的代码,但是是否真的这些代码无用,还需要按照实际情况确认。比如,虽然没有直接调用的但却只用于反射的、类似于Spring的外部依赖注入的、提供给第三方的API、其他Jar中调用的,.....等等。

如果想让UCDetector忽略某写代码的无用提示的话,可以在行尾添加// NO_UCD,或者使用@SuppressWarnings("ucd")。

你可能感兴趣的:(java)