我需要从源文件计算Java程序的传出耦合(对象之间的耦合)。
我已经在Eclipse中使用jdt提取了抽象语法树,但是不确定是否可以直接从另一个类提取类依赖。
我不能使用任何公制插件。
谢谢你的帮助。
最佳答案
您可以使用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()]);
}
关于java - 用Java计算传出耦合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21669244/