确定面向对象类中的方法依赖性

时间:2011-07-10 11:22:00

标签: java oop code-analysis static-analysis

是否有人知道任何方法可以尝试确定面向对象类中单个方法的方法和实例变量依赖关系?例如,如果我有以下代码:

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. 系统依赖图
  4. 1对我来说并不是很有用,因为它与控制流程有关。图2涉及在单个方法内或跨方法边界的控制和数据依赖性。我已经研究了这个,它并不是我想要的,因为它太精细了。 3是从2开始的后续,并且再次过于细化我的需要。

2 个答案:

答案 0 :(得分:1)

我只知道一个工具JDepend:http://www.clarkware.com/software/JDepend.html

但我怀疑它是否适用于一种基本方法。如果它没有帮助你,你需要使用字节码操作(工程)库来实现自己的逻辑。

答案 1 :(得分:1)

出于这种特殊目的,很难找到任何现成的软件供您使用。

它可以通过静态分析java字节码来完成,我不知道你为什么需要这样的功能,分析它真正有什么好处。如果它只是你的特殊目的,我认为你需要自己编写这样的工具。