2014-02-10 64 views
0

我需要從源文件計算Java程序的傳出耦合(對象之間的耦合)。在Java中計算傳出耦合

我已經在Eclipse中使用jdt抽取了抽象語法樹,但我不確定是否可以直接從另一個類中提取類依賴關係。

我無法使用任何公制插件。

感謝您的幫助。

回答

1

您可以使用ASTVisitor來檢查AST中的相關節點。然後您可以使用resolveBinding()resolveTypeBinding()來提取依賴關係。 (對於這個工作,你需要打開「resolveBindings」當您分析。)

我沒有測試過這一點,但這個例子應該給你一個想法:

public static IType[] findDependencies(ASTNode node) { 
    final Set<IType> result = new HashSet<IType>(); 
    node.accept(new ASTVisitor() { 
     @Override 
     public boolean visit(SimpleName node) { 
      ITypeBinding typeBinding = node.resolveTypeBinding(); 
      if (typeBinding == null) 
       return false; 
      IJavaElement element = typeBinding.getJavaElement(); 
      if (element != null && element instanceof IType) { 
       result.add((IType)element); 
      } 
      return false; 
     } 
    }); 
    return result.toArray(new IType[result.size()]); 
}