Class OnTheFlyJimpleBasedICFG

  • All Implemented Interfaces:
    heros.InterproceduralCFG<Unit,​SootMethod>, BiDiInterproceduralCFG<Unit,​SootMethod>

    public class OnTheFlyJimpleBasedICFG
    extends AbstractJimpleBasedICFG
    This is an implementation of AbstractJimpleBasedICFG that computes the ICFG on-the-fly. In other words, it can be used without pre-computing a call graph. Instead this implementation resolves calls through Class Hierarchy Analysis (CHA), as implemented through FastHierarchy. The CHA is supported by LocalMustNotAliasAnalysis, which is used to determine cases where the concrete type of an object at an InvokeVirtual or InvokeInterface callsite is known. In these cases the call can be resolved concretely, i.e., to a single target. To be sound, for InvokeInterface calls that cannot be resolved concretely, OnTheFlyJimpleBasedICFG requires that all classes on the classpath be loaded at least to signatures. This must be done before the FastHierarchy is computed such that the hierarchy is intact. Clients should call loadAllClassesOnClassPathToSignatures() to load all required classes to this level.
    See Also:
    FastHierarchy.resolveConcreteDispatch(SootClass, SootMethod), FastHierarchy.resolveAbstractDispatch(SootClass, SootMethod)
    • Constructor Detail

      • OnTheFlyJimpleBasedICFG

        public OnTheFlyJimpleBasedICFG​(SootMethod... entryPoints)
    • Method Detail

      • loadAllClassesOnClassPathToSignatures

        public static void loadAllClassesOnClassPathToSignatures()
      • main

        public static void main​(String[] args)