2016-11-02 3 views
4

Я думаю, что нашел ложное положительное значение, используя аннотацию @Getter от Project Lombok.SonarQube ложный положительный кальмар: S1450 для аннотированных полей @Getter (lombok)

В следующем примере класс получил предупреждение «Частные поля, используемые только в качестве локальных переменных в методах, должны стать локальными переменными» (squid:S1450).

public class Example { 

    @Getter 
    private String exampleField; // <-- squid:S1450 

    public Example(final String value) { 
     setExampleField(value); 
    } 

    private void setExampleField(final String exampleField) { 
     this.exampleField = exampleField; 
    } 

} 

Может кто-нибудь подтвердить это? Является ли это ошибкой в ​​правиле SonarQube или что-то не так с моим классом или с моим пониманием этого правила или аннотацией @Getter?

Просто для полноты картины:

  • проекта Ломбок аннотаций или сгенерированные методы правильно распознан в других правилах SonarQube. Поэтому я думаю, что моя настройка в порядке.
  • Я также попытался поставить аннотацию @Getter на уровне класса, и я получил то же предупреждение.
  • Предупреждение отображается в SonarLint (в IntelliJ IDEA) и в веб-интерфейсе SonarQube. Поэтому я думаю, что это не ошибка при выполнении анализатора.
  • Я связал SonarLint pluign в IntelliJ IDEA с нашим сервером SonarQube, и это удаленное соединение работает.

Я протестирована со следующими версиями:

  • SonarQube 6,0
  • SonarQube Java Plugin 4.2
  • SonarLint (для IntelliJ IDEA) 2.3.2
  • IntelliJ IDEA 2016.2.5
  • Java 8

ответ