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()).Controls which calls (edges) are expanded during call graph construction, at the pre-dispatch checkpoint: invoked once per invokable statement of a method that is expanded, before dynamic dispatch is resolved for that statement.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 byCallResolver.tryAdvance(sootup.core.model.SootMethod, sootup.core.jimple.common.stmt.InvokableStmt)andVirtualCallResolver.tryAdvanceCall(sootup.core.model.SootMethod, sootup.core.signatures.MethodSignature, sootup.core.jimple.common.stmt.InvokableStmt)to control call graph expansion.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.