2016-10-17 11 views
1

Есть ли простой способ (идеализированная существующая вспомогательная библиотека) для обнаружения затененных атрибутов java bean, учитывая, что он имеет несколько уровней иерархии?Обнаружение скрытой java bean-функции

[C] удлиняет [B] удлиняет [A]. Затем определяется атрибут [A] .firstName.

Я хочу обнаружить bean-компоненты, где [C] .firstName переопределено (что, вероятно, ошибка разработчика) внутри общего теста jUnit, так что этот «трудный поиск ошибки» улавливается процессом сборки.

Примечание: в Eclispe IDE это эквивалентно «Объявление поля скрывает другое поле или переменную» в рамках теневого копирования и конфликтов Java/Compiler/Errors/Name.

+0

Лучший способ избежать этого - не наследовать. Скорее вы должны объявить иерархию наследования через интерфейсы и составить реализацию с экземплярами «нижних» уровней иерархии. –

+1

Определение таких проблем не является задачей для UnitTest. UnitTests проверяет поведение кода. Наследование - это не поведение. Правильный инструмент для обнаружения этого будет _findbugs_ или _pmd_. –

ответ

2

Обычно вы не ставили это в единичном тесте, скорее, вы бы поставили что-то вроде Checkstyle в процесс интеграции, который будет отмечать ту же проблему.

+2

_checkstyle_ может не получить этого, _findbugs_ или _pmd_ будет лучше. –

+2

Checkstyle имеет 'HiddenFieldCheck', который выглядит так, как будто он должен работать, но я согласен, что findbugs - отличная вещь для запуска тоже :) – adamreeve

 Смежные вопросы

  • Нет связанных вопросов^_^