Package sootup.callgraph.scope
package sootup.callgraph.scope
-
ClassDescriptionA
VirtualCallResolverthat drops<clinit>candidates declared on a library class (seeSootClass.isLibraryClass()) and delegates every other candidate - including<clinit>s of application classes - to a wrappedVirtualCallResolver(default:VirtualCallResolver.all()).The calls of a method that aCallResolverlets the call graph algorithm resolve:CallFilter.all(),CallFilter.none()or those of the statements accepted by a predicate (CallFilter.of(java.util.function.Predicate<sootup.core.jimple.common.stmt.InvokableStmt>)).Controls which calls (edges) are expanded during call graph construction, at the pre-dispatch checkpoint: invoked once per method that is expanded, before its body is loaded and before dynamic dispatch is resolved for its statements.The defaultCallResolver: excludes calls originating from library classes.ACallResolverthat applies the same filtering asDefaultCallResolver(excluding calls originating from library classes), while additionally recording the signature of every method whose calls were excluded, so callers can inspect what was pruned after the call graph has been constructed, e.g. to diagnose why an expected method is missing from the call graph.The verdict returned byVirtualCallResolver.tryAdvanceCall(sootup.core.model.SootMethod, sootup.core.signatures.MethodSignature, sootup.core.jimple.common.stmt.InvokableStmt)to control call graph expansion:ExplorationVerdict.EXPLORE_METHODadmits the edge and expands the callee,ExplorationVerdict.STOP_AFTER_CALLadmits the edge but does not expand the callee via this edge, andExplorationVerdict.STOPdrops the edge entirely.AVirtualCallResolverthat drops every<clinit>candidate and delegates every other candidate to a wrappedVirtualCallResolver(default:VirtualCallResolver.all()).Controls which calls (edges) are expanded during call graph construction, at the post-dispatch checkpoint: invoked once per dynamic-dispatch candidate afterresolveCallhas resolved it for a statement that passed theCallResolvercheckpoint.