静态分析从java中的根查找所有引用的类

时间:2012-12-20 05:41:55

标签: java static-analysis object-graph

用Java语言编写。给定一个根类,我想找出根引用的所有类(整个对象图)。 Java Reflect是不够的。因为:

Class A{
   List list = new ArrayList();

   public void add(Object obj){
      list.add(obj);
   }

   public void add2(){
      Ent ent = new Ent();
      add(ent);
   }
}

使用Reflect,我可以轻松获得" A类包含(对象)" 。 但实际上我想要的是“A类包含(Ent)”

我想分析java src代码或.class文件,以静态地找出整个对象图,而不是运行时。

有没有人可以帮助我?谢谢!

1 个答案:

答案 0 :(得分:1)

depfind工具有助于跟踪依赖关系并采取一些措施。它可以找到出站依赖项。

  

仅显示出站依赖关系

     

出站依赖项显示给定编程元素所依赖的对象   根据。它们在分割编程元素时非常有用   弄清楚给定类需要运行的其他类。   依赖关系查找器使用文本符号来显示它们:

programming element
    --> dependable 1
    --> dependable 2
        ...
     

当存在大量依赖关系时,要么因为图形非常大   大或元素高度连接,过滤掉它是有用的   其他依赖关系,以便出站的突出,更容易   读取。

http://depfind.sourceforge.net/Manual.html#ShowingOnlyOutboundDependencies