WALA:“无法创建入口点呼叫站点:”问题

时间:2019-05-06 10:55:22

标签: java slicers

我正在使用WALA进行静态分析,但是遇到了一些问题。在构建调用图时,某些罐子存在以下问题:

  

线程“主”中的异常java.lang.IllegalStateException:无法   创建一个入口点呼叫站点:

     
      
  1. [中等]类   com.ibm.wala.ipa.cha.ClassHierarchy $ ClassExclusion:    找不到超类    超类名称   Lorg / eclipse / swt / dnd / ByteArrayTransfer

  2.   
  3. [中等]类   com.ibm.wala.ipa.cha.ClassHierarchy $ ClassExclusion:    找不到超类    超类名称   Lorg / eclipse / swt / widgets / Canvas

  4.   
  5. [SEVERE]类   com.ibm.wala.classLoader.BytecodeClass $ ClassNotFoundWarning:   Lorg / eclipse / swt / dnd / DragSourceListener

  6.   
  7. [SEVERE]类   com.ibm.wala.classLoader.BytecodeClass $ ClassNotFoundWarning:   Lorg / eclipse / swt / dnd / DropTargetListener

  8.   
     

com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder.makeCallGraph(PropagationCallGraphBuilder.java:263)

wala似乎无法获得eclipse.swt包的.class文件,因此我无法构建要切片的“调用图”。 你遇到这样的问题了吗?这个问题兄弟我很久了。 问题罐子是这样的:http://mirror.bit.edu.cn/apache/commons/io/binaries/

WALA版本是1.4.3。 我的代码是:

AnalysisScope scope = AnalysisScopeReader.makeJavaBinaryAnalysisScope(jarPath, exFile);
ClassHierarchy cha = ClassHierarchyFactory.make(scope);

Iterable entrypoints = Util.makeMainEntrypoints(scope, cha);
AnalysisOptions options = new AnalysisOptions(scope, entrypoints);// the problem line
options.setReflectionOptions(ReflectionOptions.NONE);

那么,我该如何处理这个问题。非常感谢。

1 个答案:

答案 0 :(得分:0)

我想知道jarPath包含哪些代码。因为我发现您的入口点是由makeMainEntrypoints方法构成的,所以此方法要求您要分析的二进制文件的源代码必须包含main方法。

如果它不包含main方法,则可以使用AllApplicationEntrypoints类来构建入口点,如下所示:

Iterable<Entrypoint> entrypoints = new AllApplicationEntrypoints(scope, cha);