Я пишу приложение Java, которое удаляет комментарии из файлов Java.
Я написал этот код:
static void removeComments(Node node) {
for (Comment child : node.getAllContainedComments()) {
child.remove();
}
}
CompilationUnit cu = JavaParser.parse(projectDir); // projectDir is received from parameter
removeComments(cu);
Это вроде работает. Однако если перед объявлением пакета есть комментарии блока, код не удалит эти комментарии.
Например, этот код:
/*
* Block comment
*/
// Line comment
package test;
/*
* Block comment
*/
// comment
/**
*
* @author Me
*/
public class Test {
public static void main(String[] args) {
// TODO code application logic here
System.out.println("print 1"); // comment in code line
// comment 2
System.out.println("print 2");
/*
block comment
*/
}
}
Становится так:
/*
* Block comment
*/
package test;
public class Test {
public static void main(String[] args) {
System.out.println("print 1");
System.out.println("print 2");
}
}
Это ошибка в JavaParser или я что-то упустил?
Edit:
Если я добавлю комментарий строки в начало файла, будет удален первый комментарий блока (предшествующий объявлению пакета), но не этот комментарий строки. Я думаю, что JavaParser не считает, что первая строка файла может быть комментарием.