Алексей Владыкин


Checkstyle: unexpected char 0xFFFF

13 декабря 2010

Погоняв недавно Checkstyle на коде рабочих проектов, обнаружил в логах большое количество ошибок вида:

Got an exception - unexpected char: 0xFFFF

Как выяснилось, Checkstyle выдает такую ошибку на любом Java-файле, оканчивающемся однострочным комментарием без перевода строки в конце. Пример:

#[source,java] #---- #class Bug { #} // no line feed here, just EOF #----

Checkstyle последний, версии 5.3. Подходящего бага в официальном багтрекере не нашел, поэтому завел новый.

Все чудесно, но как быть, пока баг не исправят? Ведь видеть эту ругань в отчетах Checkstyle совсем не хочется.

Решение очевидно: добавить перевод строки во все "плохие" файлы. Учитывая количество таких файлов, решил автоматизировать процесс и за пять минут написал скриптик на Groovy:

#[source] #---- #import java.util.regex.Pattern #import groovy.io.FileType # #Pattern pattern = Pattern.compile('//.\\z') # #new File(args[0]).traverse( # type: FileType.FILES, # nameFilter: ~/.\.java/ #) { file → # String text = file.text # if (pattern.matcher(text).find()) { # println "Fixing ${file}" # file.text = text + "\r\n" # } #} #----

К оглавлению блога