2016-10-17 18 views
1

有一种简单的方法(idealy现有的帮助程序库)检测java bean的阴影属性,因为它具有多级层次结构?检测阴影的java bean属性

[C]扩展[B]扩展[A]。 然后定义属性[A] .firstName。

我想检测bean在通用jUnit测试中重新定义[C] .firstName(这可能是开发人员错误),因此构建过程会捕获这种“难以发现的错误”。

注意:在Eclispe IDE中,这相当于Java/Compiler/Errors/Name阴影和冲突下的“字段声明隐藏了另一个字段或变量”。

+0

避免这种情况的最佳方法是不继承。相反,您应该通过接口声明继承层次结构,并使用“较低”层次结构层的实例组合实现。 –

+1

检测此类问题不是UnitTest的任务。 UnitTests检查代码的行为。继承不是行为。正确的工具来检测这将是_findbugs_或_pmd_。 –

回答

2

通常情况下,你不会把它放在单元测试中,而是在你的集成构建过程中放置​​类似Checkstyle的东西,它将标记相同的问题。

+2

_checkstyle_可能不会得到这个,_findbugs_或_pmd_会更好。 –

+2

Checkstyle确实有'HiddenFieldCheck',它看起来应该可以工作,但我同意findbugs也是一件很棒的事情:) – adamreeve