2014-02-10 2 views
0

Мне нужно вычислить Эфферентную связь (соединение между объектами) программы Java из исходного файла.Расчет эфферентной связи в Java

Я уже извлекаю абстрактное дерево синтаксиса с помощью jdt в Eclipse, но я не уверен, что можно напрямую извлекать зависимости класса из другого класса.

Я не могу использовать какой-либо метрический pluggin.

Благодарим за помощь.

ответ

1

Вы можете использовать ASTVisitor для проверки соответствующих узлов в вашем АСТ. Затем вы можете использовать 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()]); 
} 
Смежные вопросы