Package qilin.core.config
Class PointerAnalysisConfig
java.lang.Object
qilin.core.config.PointerAnalysisConfig
Immutable, type-safe replacement for the old
CoreConfig/PTAConfig singletons. An
instance is threaded explicitly through PTAScene (and from there reachable via
PTA#getConfig()) so that multiple independent analysis runs - each with their own config - can
coexist in the same JVM.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classstatic enumstatic enumstatic enum -
Method Summary
Modifier and TypeMethodDescriptionbuilder()Human-readable analysis name used for report/output directory naming.Governs admission of<clinit>calls discovered on the fly as the points-to analysis grows (seeisSeedEntryPointClinits()for how the two combine into the four classic modes).Path to a Tamiflex reflection log, ornullif reflection resolution is disabled.booleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanWhether to resolve invokedynamic call sites bootstrapped byLambdaMetafactory(lambdas and method references) to their target method.booleanWhether each entry point's declaring-class<clinit>is eagerly seeded as a root before traversal starts, independently of whether the fake-main body actually triggers it.booleanboolean
-
Method Details
-
builder
-
getContextSensitivity
-
getHeapAbstractionPolicy
-
isSingleEntry
public boolean isSingleEntry() -
isSeedEntryPointClinits
public boolean isSeedEntryPointClinits()Whether each entry point's declaring-class<clinit>is eagerly seeded as a root before traversal starts, independently of whether the fake-main body actually triggers it. SeeAbstractCallGraphAlgorithm(sootup.core.views.View, sootup.callgraph.scope.CallResolver, VirtualCallResolver, boolean)for the four classic static-initializer handling modes this, combined withgetClinitVirtualCallResolver(), reproduces:FULL=true+new SuppressClinitCallResolver(view);ON_THE_FLY(default) =false+VirtualCallResolver.all();APP=false+new AppOnlyClinitCallResolver(view);NONE=false+new SuppressClinitCallResolver(view). -
getClinitVirtualCallResolver
Governs admission of<clinit>calls discovered on the fly as the points-to analysis grows (seeisSeedEntryPointClinits()for how the two combine into the four classic modes). Qilin does not track the statement that triggered a given<clinit>, so resolvers consulted here receive a synthetic invoke statement standing in for it - resolvers that only inspect the callee (asSuppressClinitCallResolver/AppOnlyClinitCallResolverdo) are unaffected by this. -
isPreciseArrayElement
public boolean isPreciseArrayElement() -
isStringConstants
public boolean isStringConstants() -
isPreciseExceptions
public boolean isPreciseExceptions() -
isEnforceEmptyContextForIgnoreTypes
public boolean isEnforceEmptyContextForIgnoreTypes() -
getReflectionLogPath
Path to a Tamiflex reflection log, ornullif reflection resolution is disabled. -
isResolveDynamicInvoke
public boolean isResolveDynamicInvoke()Whether to resolve invokedynamic call sites bootstrapped byLambdaMetafactory(lambdas and method references) to their target method. Unlike reflection resolution this needs no external log - the target is a constant in the bootstrap args - so it defaults to enabled. -
isPreAnalysisOnly
public boolean isPreAnalysisOnly() -
isContextDebloating
public boolean isContextDebloating() -
getDebloatApproach
-
getTurnerConfig
-
getAnalysisName
Human-readable analysis name used for report/output directory naming. -
getOutputDirectory
-
isDumpJimple
public boolean isDumpJimple() -
isDumpPointsToSet
public boolean isDumpPointsToSet() -
isDumpLibraryPointsToSet
public boolean isDumpLibraryPointsToSet() -
isDumpStats
public boolean isDumpStats()
-