Package qilin.callgraph
Class QilinCallGraphConfig
java.lang.Object
qilin.callgraph.QilinCallGraphConfig
- All Implemented Interfaces:
CallGraphConfig
Qilin-specific stage of the unified
CallGraphConfig builder chain. Obtained via
CallGraphConfigBuilder.into(QilinCallGraphConfig::from), since sootup.callgraph cannot
depend on sootup.qilin directly:
CallGraph cg = CallGraphConfig.builder()
.view(view).entryPoints(entryPoints)
.into(QilinCallGraphConfig::from)
.mainClass(mainClassType)
.pointerAnalysisConfig(PointerAnalysisConfig.builder().contextSensitivity(ContextSensitivity.callSite(2)))
.build()
.computeCallGraph();
Requires an explicit QilinCallGraphConfig.Builder.mainClass: PTAScene hard-requires exactly one
main class at construction time (a real architectural constraint, not just a config-surface
choice), so the common stage's entryPoints list - which may name several methods - is not
used to derive it. It still feeds the seed
flag/PointerAnalysisConfig.getClinitVirtualCallResolver() via CommonCallGraphSettings, which this stage overrides onto whatever PointerAnalysisConfig.Builder the caller supplies (or a fresh default one).
The common stage's CallResolver (pre-dispatch) is not consulted: qilin's own
dispatch resolution (qilin.core.VirtualCalls) doesn't integrate with
sootup.callgraph.scope.CallResolver.
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescription@NonNull CallGraphBuilds the call graph for the analysis described by this configuration object.static @NonNull QilinCallGraphConfig.Builderfrom(@NonNull CommonCallGraphSettings common) Entry point forCallGraphConfigBuilder.into(QilinCallGraphConfig::from).
-
Method Details
-
from
Entry point forCallGraphConfigBuilder.into(QilinCallGraphConfig::from). -
computeCallGraph
Description copied from interface:CallGraphConfigBuilds the call graph for the analysis described by this configuration object. All state needed (view, entry points, algorithm-specific options) is already captured by the concrete implementation, typically via its own builder.- Specified by:
computeCallGraphin interfaceCallGraphConfig
-