Class CommonCallGraphSettings

java.lang.Object
sootup.callgraph.config.CommonCallGraphSettings

public final class CommonCallGraphSettings extends Object
Immutable snapshot of the properties CallGraphConfigBuilder collects before a caller transitions to a family-specific stage (see CallGraphConfigBuilder.cha(), CallGraphConfigBuilder.rta(), CallGraphConfigBuilder.into(java.util.function.Function<sootup.callgraph.config.CommonCallGraphSettings, B>)). Public (unlike the builder's internal state) because family-specific builders living in other modules (e.g. sootup.spark.SparkCallGraphConfig, qilin.callgraph.QilinCallGraphConfig) need to read it.
  • Method Details

    • getView

      public @NonNull View getView()
    • getEntryPoints

      public @NonNull List<MethodSignature> getEntryPoints()
    • getCallResolver

      public @NonNull CallResolver getCallResolver()
      Controls which statements' calls are resolved and expanded at all (pre-dispatch).
    • getVirtualCallResolver

      public @NonNull VirtualCallResolver getVirtualCallResolver()
      Controls which resolved dynamic-dispatch candidates - including discovered <clinit> calls - are admitted/expanded (post-dispatch).
    • getSeedEntryPointClinits

      public @NonNull Boolean getSeedEntryPointClinits(boolean defaultValue)
      Whether each entry point's declaring-class <clinit> is eagerly seeded as a root before traversal starts, or null if the caller never explicitly set it - each family stage should fall back to its own natural default in that case (see CallGraphConfigBuilder#seedEntryPointClinits for why there's no single common default).
    • getReflectionModel

      public @NonNull ReflectionModel getReflectionModel()
      Reflection model to apply; ReflectionModel.none() if never set.
    • isReflectionModelSet

      public boolean isReflectionModelSet()
      Whether the caller explicitly set a reflection model - lets families with their own reflection config (Qilin's reflectionLogPath) keep it unless overridden.
    • getDynamicInvokeResolver

      public @NonNull DynamicInvokeResolver getDynamicInvokeResolver()
      Invokedynamic resolver to apply; DynamicInvokeResolver.bootstrapMethodHandles() if never set.
    • isDynamicInvokeResolverSet

      public boolean isDynamicInvokeResolverSet()
      Whether the caller explicitly set an invokedynamic resolver - lets families with their own invokedynamic config (Qilin's resolveDynamicInvoke) keep it unless overridden.