給定一個在Eclipse中的ASTNode,有沒有什麼辦法可以得到相應的源代碼行號?eclipse ASTNode源代碼行號
4
A
回答
1
ASTNode具有處理字符偏移量的getStartPosition()和getLength()方法。要將字符偏移量轉換爲行號,應使用CompilationUnit的getLineNumber()方法。 CompilationUnit是AST樹的根。
15
您可以使用下面的代碼
int lineNumber = compilationUnit.getLineNumber(node.getStartPosition()) - 1;
編譯單元可以使用下面的代碼
ASTParser parser = ASTParser.newParser(AST.JLS3);
// Parse the class as a compilation unit.
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(source); // give your java source here as char array
parser.setResolveBindings(true);
// Return the compiled class as a compilation unit
CompilationUnit compilationUnit = parser.createAST(null);
您可以訪問節點獲得(說MethodDeclaration節點得到ASTNode的行號)使用下面的代碼:
compilationUnit.accept(new ASTVisitor() {
public boolean visit(MethodDeclaration node) {
int lineNumber = compilationUnit.getLineNumber(node.getStartPosition()) - 1;
return true;
}
});
1
除了一般解決方案已經讀取如果您需要ASTNode的行號,包括在ASTNode前面寫入的空白空間或潛在註釋,則可以使用另一個。然後你可以使用:
int lineNumber = compilationUnit.getLineNumber(compilationUnit.getExtendedStartPosition(astNode))
見API:
返回給定節點的擴展起始位置。與ASTNode.getStartPosition()和ASTNode.getLength()不同,擴展源範圍可以在節點正常源範圍之前或之後包含註釋和空白。
相關問題
- 1. Groovy的源代碼ASTNode
- 2. Eclipse PDT:獲取ASTNode背後的源代碼
- 3. 將ASTNode轉換爲代碼
- 4. 從Eclipse運行Tika源代碼
- 5. Eclipse(Aptana插件)源代碼行邊界
- 6. 從源代碼運行Eclipse JDT
- 7. 去除行號複製代碼在Eclipse
- 8. JUnit Eclipse插件源代碼?
- 9. 下載Eclipse的源代碼
- 10. 下載Eclipse的源代碼
- 11. 調試eclipse e4源代碼
- 12. 添加行號的源代碼在vim
- 13. Stacktrace中的未知源代碼Eclipse Eclipse
- 14. 使用Github的源代碼到Eclipse Eclipse
- 15. 調試器如何知道源代碼中的行號?
- 16. 有沒有辦法在運行時用C代碼獲取源代碼行號?
- 17. 未找到源代碼:添加源代碼附件查看源代碼
- 18. android eclipse的相機源代碼
- 19. Edx的Eclipse和Pydev集成源代碼
- 20. 瀏覽Eclipse中的Nginx源代碼CDT
- 21. Eclipse無法找到JDK源代碼
- 22. 從源代碼構建Android Eclipse ADT
- 23. eclipse CDT源代碼解析器錯誤?
- 24. 在Eclipse中附加源代碼問題
- 25. Eclipse調試器不遵循源代碼
- 26. 帶有源代碼的Eclipse PDE構建
- 27. Eclipse部署webapp時忽略源代碼
- 28. 將Spark源代碼導入Eclipse IDE
- 29. android導入系統源代碼到Eclipse
- 30. 的Python:導入源代碼到Eclipse