Мы пытались использовать базовый синтаксический анализатор Eclipse JDT в нашем проекте для анализа исходных файлов Java, но одна из проблем, с которыми мы столкнулись, заключается в том, что мы не можем получить список комментариев из файла. Мы попытались вызвать метод getComments
для CompilationUnit
, но он показывает нам список пустых комментариев.
Это из тестового проекта, источник Test1.java
которого находится здесь:
public class Test1 {
public static void main(String[] args) throws IOException {
File file = new File("src/main/java/DummyFile.java");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuilder source = new StringBuilder();
String line = "";
while ((line = bufferedReader.readLine()) != null) {
source.append(line + System.getProperty("line.separator"));
}
bufferedReader.close();
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(source.toString().toCharArray());
parser.setResolveBindings(true);
Hashtable<String, String> options = JavaCore.getOptions();
options.put(JavaCore.COMPILER_DOC_COMMENT_SUPPORT, JavaCore.ENABLED);
parser.setCompilerOptions(options);
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
List comments = cu.getCommentList();
System.out.println(cu); // breakpoint is here.
for (Object comment : comments) {
System.out.println(comment.toString());
}
}
DummyFile.java выглядит следующим образом:
public class DummyFile {
// 1
private String str;
public static int number;
public DummyFile() { // 2
// 3
str = "something";
number = 2; // 4
// 5
}
// 6
}
Это результат:
public class DummyFile {
private String str;
public static int number;
public DummyFile(){
str="something";
number=2;
}
}
//
//
//
//
//
//
Вот что мы видим в отладчике, когда заглядываем внутрь compileUnit и смотрим на список комментариев:
[//
, //
, //
, //
, //
, //
]
Поэтому нам было интересно, нормально ли это, и если да, то что делать, чтобы получить содержание комментариев или что мы делаем неправильно?
Если это не нормальное поведение, то, возможно, у кого-то есть какие-либо предложения относительно того, что происходит не так и что искать.