遍历AST节点

时间:2010-02-02 11:10:42

标签: java eclipse-plugin

我想找出在包中使用AST api引用调用的行号。 我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

CompilationUnit.getLineNumber(int position)

位置相对于CompilationUnit对象

文档:

  

返回对应的行号   到给定的源角色位置   在原始源字符串中。该   编译单元的初始行   编号为1,每行延伸   通过最后一个角色   行尾分隔符。最后一次   线延伸到了尽头   源字符串,没有行   分隔符。例如,来源   字符串类A \ n {n}有3行   对应于包容性角色   范围[0,7],[8,9]和[10,10]。   返回-1表示字符位置   这与任何来源都不对应   行,如果没有行号,则为-2   信息可用于此   编译单位。

答案 1 :(得分:2)

您可以在此papercut article中了解如何在CompilationUnit的方法中进行搜索:

for (ICompilationUnit unit : mypackage.getCompilationUnits()) {
IType[] types = unit.getTypes();
for (int i = 0; i < types.length; i++) {
  IType type = types[i];
  IMethod[] methods = type.getMethods();
  • 如果方法是ASTNode,则可以使用ASTNode.getStartPosition()函数。
  • 如果该IMember的编译单元是CompilationUnit,您可以在CompilationUnit.getLineNumber(position)
  • 中使用它