我正在编写一个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的错误,还是我错过了什么?
修改
如果我在文件的开头添加一行注释,将删除第一个块注释(包声明之前的注释),但不删除此行注释。我认为JavaParser并不认为文件的第一行可能是注释。
答案 0 :(得分:1)
我是JavaParser的维护者。
删除所有注释的最简单方法是将JavaParser配置为根本不处理注释:
import com.github.javaparser.ast.CompilationUnit;
public class RemoveComments {
public static void main(String[] args) {
JavaParser.getStaticConfiguration().setAttributeComments(false);
CompilationUnit cu = JavaParser.parse("/**a*/package a.b.c; //\nclass X{}");
System.out.println(cu);
}
}