Checkstyle: unexpected char 0xFFFF
Погоняв недавно Checkstyle на коде рабочих проектов, обнаружил в логах большое количество ошибок вида:
Got an exception - unexpected char: 0xFFFF
Как выяснилось, Checkstyle выдает такую ошибку на любом Java-файле, оканчивающемся однострочным комментарием без перевода строки в конце. Пример:
class Bug {
} // no line feed here, just EOF
Checkstyle последний, версии 5.3. Подходящего бага в официальном багтрекере не нашел, поэтому завел новый.
Все чудесно, но как быть, пока баг не исправят? Ведь видеть эту ругань в отчетах Checkstyle совсем не хочется.
Решение очевидно: добавить перевод строки во все "плохие" файлы. Учитывая количество таких файлов, решил автоматизировать процесс и за пять минут написал скриптик на Groovy:
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"
}
}