Предупреждение PMD "Потенциальное нарушение закона Деметры: объект не создан локально", даже при вызове методов для локальных объектов.
Что я понял о законе Деметры:
Ваш метод может вызывать другие методы в своем классе напрямую
Ваш метод может вызывать методы непосредственно в своих полях (но не в полях полей)
Когда ваш метод принимает параметры, он может напрямую вызывать методы для этих параметров.
Когда ваш метод создает локальные объекты, этот метод может вызывать методы для локальных объектов.
но
Не следует вызывать методы для глобального объекта (но это можно передать в качестве параметра?)
Не следует иметь цепочку сообщений a.getB(). GetC(). DoSomething() в каком-либо другом классе, кроме класса a.
Что я делаю в одном из моих методов это:final ServiceStatusBean serviceStatusBean = new ServiceStatusBean();
serviceStatusBean.setName("someName");
serviceStatusBean.setApiVersion("someVersion");
Мой экземпляр serviceStatusBean создается локально в методе, и я вызываю сеттеры для него. Насколько я понимаю, это хорошо с законом Деметры. Но согласно PMD, это нарушает закон деметры на линиях, вызывающих сеттеров.
Предупреждение- "Потенциальное нарушение закона Деметры (объект не создан локально)"
Я не могу понять причину этих предупреждений PMD. Какие-либо объяснения??
Детали PMD:
Версия плагина - 4.0.5.v20141105-1906
Версия PMD - 5.2.1