【问题标题】:Detect shadowed java bean property检测阴影的java bean属性
【发布时间】:2017-02-27 00:11:54
【问题描述】:

是否有一种简单的方法(最好是现有的帮助程序库)来检测具有多层次层次结构的 java bean 的阴影属性?

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

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

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

【问题讨论】:

  • 避免这种情况的最佳方法是不继承。相反,您应该通过接口声明继承层次结构,并使用“较低”层次结构的实例来组合实现。
  • 检测此类问题不是 UnitTest 的任务。 UnitTests 检查代码的行为。继承不是行为。检测这种情况的正确工具是 findbugspmd

标签: java inheritance recursion javabeans introspection


【解决方案1】:

通常,您不会将其放入单元测试中,而是将 Checkstyle 之类的内容放入您的集成构建过程中,这将标记相同的问题。

【讨论】:

  • checkstyle 可能没有这个,findbugspmd 会更好。
  • Checkstyle 确实有 HiddenFieldCheck 看起来应该可以工作,但我同意 findbugs 也可以运行 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 2019-07-12
  • 1970-01-01
  • 2018-08-26
  • 2014-01-14
  • 1970-01-01
  • 2012-01-24
相关资源
最近更新 更多