Определение зависимости метода в объектно-ориентированном классе - PullRequest
0 голосов
/ 10 июля 2011

Кто-нибудь знает какую-либо методологию, чтобы попытаться определить зависимости переменных метода и экземпляра, которые соответствуют одному методу в объектно-ориентированном классе? Например, если у меня есть следующий код:

public class Foo {
   private int x;
   private int y;

   public Foo() {
      x = 1;
      y = 2;
   }

   public void doFoo() {
      doJaa(x);
      x++;      
   }

   private void doJaa(int xVar) {
      System.out.println("x is: " + xVar);
   }

   private void nop() {
      System.out.println("Nada!");
   }
}

Я хотел взять метод, сказать метод doFoo и определить все его переменные экземпляра и зависимости метода (я хотел бы определить эти зависимости на время сборки ). В этом случае этими зависимостями будут int x, Foo () и doJaa (int x). Однако между методами 'nop' и 'doJaa' нет никаких зависимостей. Есть ли название для этого типа анализа, просто чтобы я мог искать больше информации вокруг него? Мне известны следующие методы анализа

  1. График потока управления (мне не нужен)
  2. График зависимости программы
  3. График зависимости системы

1 мне не особо полезно, так как он связан с потоком управления. 2 касается управления и зависимостей данных либо внутри одного метода, либо за пределами метода. Я исследовал это, и это не совсем то, что я хочу, потому что это слишком детально. 3 является продолжением 2 и снова слишком гранулировано для того, что мне нужно.

Ответы [ 2 ]

1 голос
/ 10 июля 2011

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

это можно сделать статическим анализом Java-байтового кода, я не знаю, зачем вам такая функция, какая реальная выгода для ее анализа.если это просто особая цель для вас, я думаю, вам нужно написать такой инструмент самостоятельно.

1 голос
/ 10 июля 2011

Я знаю только один инструмент JDepend: http://www.clarkware.com/software/JDepend.html

Но я сомневаюсь, что это работает на основе одного метода. если это не помогает, вам необходимо реализовать собственную логику, возможно, с использованием библиотеки (инженерной) манипуляции с байт-кодом.

...