2015-04-14 3 views
4

При составлении следующего класса, который использует Ломбки для автоматических генерирующих добытчиков и сеттеров, Checkstyle вызывает ошибку компиляции:Checkstyle ошибка при использовании Ломбок

Utility classes should not have a public or default constructor

@Getter 
@Setter 
public class foo { 
    private String type; 
    private int value; 
} 

Почему Checkstyle классифицирование выше класса как служебный класс, когда он не соответствует определению класса полезности, указанному в checkstyle's documentation? то есть классы, содержащие только статические методы или поля. Является ли checkstyle синтаксическим анализом исходного текстового файла по умолчанию или созданного исходного файла lombok?

+0

Checkstyle просто разобрать Java файл, пожалуйста, сообщите нам о проблеме на https://github.com/checkstyle/checkstyle/issues, пожалуйста, предоставьте компилируемый исходный файл (вы можете подделать аннотации в том же файле) и воспроизвести проблему с помощью cli - http://checkstyle.sourceforge.net/cmdline.html#Download_and_Run –

ответ

4

Checkstyle работает с исходным кодом, он не видит, что lombok будет генерировать байт-код, поэтому он видит класс, который имеет только два частных поля, он предполагает, что у вас есть класс утилиты. В этом случае класс утилиты должен иметь конструктор private, но вы, вероятно, этого не хотите (вы не сможете создать экземпляр этого класса), поэтому вам нужно либо удалить HideUtilityClassConstructor из списка checkstyle правила, или добавить (см http://checkstyle.sourceforge.net/config_annotation.html#SuppressWarnings#SuppressWarningsHolder) @SuppressWarnings("checkstyle:HideUtilityClassConstructor"):

@Getter 
@Setter 
@SuppressWarnings("checkstyle:HideUtilityClassConstructor") 
public class foo { 
    private String type; 
    private int value; 
}