在Java 5和Java 6之间,关于源自接口(而不是超类)的方法的@Override
注释的规则已被更改 - 在不允许之前,但在它们之后。但是,javac并不是必需。
某些IDE(如eclipse)可能会为此类缺失覆盖生成错误或警告。我正在寻找可以检测缺失覆盖的任何静态分析工具,因此我可以通过编程方式报告/阻止它们。
它似乎不像我所知道的任何大型的像findbugs等人可以做到 - 可能是因为@Override
只有源保留级别,因此不存在于.class文件中这些工具运行的是什么,像checkstyle这样的源代码级工具不了解完整的类层次结构。
答案 0 :(得分:3)
您可以在Eclipse中启用保存操作以自动添加缺少的@Override注释 - 请参阅Window>偏好> Java>编辑>保存操作>遗漏代码>添加缺失的注释。
答案 1 :(得分:1)
您显然需要处理Java源代码的东西,并且可以访问代码结构和属性。
我理解Eclipse在JDT中有一些解析机制,你也许可以使用它。
我们的DMS软件重组工具包具有完整的Java源解析器(包括属性捕获),全名和类型解析,以及一次读取多个源文件的能力。 DMS旨在让您构建自己的自定义分析工具,因此您可以定义坚持属性存在与否的条件。
由于DMS还提供程序转换功能,因此您甚至可以定义自定义规则,这些规则将修改源代码,清楚显示应该存在哪些属性。
DMS和Java语言规则并不容易学习;这需要一些配置。但如果你真的有成千上万的开发人员,那么这个成本就会被无法控制他们正在做的事情所淹没,所以投资才有意义。
答案 2 :(得分:0)
JArchitect可以使用CQLinq和这样的优惠请求来解决您的问题
来自t in Types其中!t.HasAnnotation(“Override”)选择t
当然,您可以根据自己的喜好添加其他条件来自定义查询。