JavaParser 不会在包声明之前删除注释
JavaParser doesn't remove comments before package declaration
我正在编写一个 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 不认为文件的第一行可能是注释。
我是 JavaParser 的维护者。
- 请为此 GitHub 打开一个问题
删除所有注释的最简单方法是配置 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);
}
}
我正在编写一个 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 不认为文件的第一行可能是注释。
我是 JavaParser 的维护者。
- 请为此 GitHub 打开一个问题
删除所有注释的最简单方法是配置 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); } }