public class InfoflowConfiguration extends Object
| 限定符和类型 | 类和说明 |
|---|---|
static class |
InfoflowConfiguration.AccessPathConfiguration
Class containing the configuration options for dealing with access paths
(maximum length, reduction options, etc.)
|
static class |
InfoflowConfiguration.AliasingAlgorithm
Enumeration containing the aliasing algorithms supported by FlowDroid
|
static class |
InfoflowConfiguration.CallbackSourceMode
Methods for deciding whether a parameter of a system callback is to be
treated as a source or not
|
static class |
InfoflowConfiguration.CallgraphAlgorithm
Enumeration containing the callgraph algorithms supported for the use with
the data flow tracker
|
static class |
InfoflowConfiguration.CategoryMode
The modes (included or excludes) that a category can have for the data flow
analysis
|
static class |
InfoflowConfiguration.CodeEliminationMode
Enumeration containing all possible modes of dead and irrelevant code
elimination
|
static class |
InfoflowConfiguration.DataFlowSolver
Enumeration containing the supported data flow solvers
|
static class |
InfoflowConfiguration.ImplicitFlowMode
Enumeration containing the supported modes how the data flow analyzer shall
handle implicit flows
|
static class |
InfoflowConfiguration.LayoutMatchingMode
Possible modes for matching layout components as data flow sources
|
static class |
InfoflowConfiguration.OutputConfiguration
Class that defines settings for writing out the FlowDroid results
|
static class |
InfoflowConfiguration.PathBuildingAlgorithm
Enumeration containing the supported path builders
|
static class |
InfoflowConfiguration.PathConfiguration
The configuration that defines how FlowDroid shall handle between sources and
sinks
|
static class |
InfoflowConfiguration.PathReconstructionMode
Supported modes for reconstructing paths between sources and sinks.
|
static class |
InfoflowConfiguration.SolverConfiguration
Class containing the configuration options for the IFDS data flow solver
|
static class |
InfoflowConfiguration.SootIntegrationMode
Enumeration containing the different ways in which Soot can be used
|
static class |
InfoflowConfiguration.SourceSinkConfiguration
The configuration for the source and sink manager
|
static class |
InfoflowConfiguration.SourceSinkFilterMode
The default mode how the filter shall treat source or sink categories that
have not been configured explicitly
|
static class |
InfoflowConfiguration.StaticFieldTrackingMode
Enumeration containing the supported techniques for handling taints on static
fields
|
| 限定符和类型 | 字段和说明 |
|---|---|
protected static org.slf4j.Logger |
logger |
| 构造器和说明 |
|---|
InfoflowConfiguration() |
| 限定符和类型 | 方法和说明 |
|---|---|
boolean |
equals(Object obj) |
InfoflowConfiguration.AccessPathConfiguration |
getAccessPathConfiguration()
Gets the access path configuration that defines, e.g. low long access paths
may be before being truncated
|
InfoflowConfiguration.AliasingAlgorithm |
getAliasingAlgorithm()
Gets the aliasing algorithm to be used by the data flow tracker
|
static String |
getBaseDirectory()
Gets the base directory used e.g. for SourcesSinks.xsd
|
InfoflowConfiguration.CallgraphAlgorithm |
getCallgraphAlgorithm()
Gets the callgraph algorithm to be used by the data flow tracker
|
InfoflowConfiguration.CodeEliminationMode |
getCodeEliminationMode()
Gets whether and how FlowDroid shall eliminate irrelevant code before running
the taint propagation
|
long |
getDataFlowTimeout()
Gets the timeout in seconds after which the taint analysis shall be aborted.
|
boolean |
getEnableArraySizeTainting() |
boolean |
getEnableArrayTracking()
Gets whether the solver shall track taints of arrays and array elements
|
boolean |
getEnableExceptionTracking()
Gets whether the solver shall track taints of thrown exception objects
|
boolean |
getEnableLineNumbers()
Gets whether line numbers associated with sources and sinks should be output
in XML results
|
boolean |
getEnableOriginalNames()
Gets whether the usage of original variablenames (if available) is enabled
|
boolean |
getEnableReflection()
Gets whether reflective method calls shall be supported
|
boolean |
getEnableTypeChecking()
Gets whether type checking shall be done on casts and method calls
|
boolean |
getExcludeSootLibraryClasses()
Gets whether classes that are declared library classes in Soot shall be
excluded from the data flow analysis, i.e., no flows shall be tracked through
them
|
boolean |
getFlowSensitiveAliasing()
Gets whether a flow sensitive aliasing algorithm shall be used
|
boolean |
getIgnoreFlowsInSystemPackages()
Gets whether flows starting or ending in system packages such as Android's
support library shall be ignored.
|
InfoflowConfiguration.ImplicitFlowMode |
getImplicitFlowMode()
Gets the mode that defines whether and how the solver shall handle implicit
flows
|
boolean |
getIncrementalResultReporting()
Gets whether the data flow results shall be reported incrementally instead of
being only available after the full data flow analysis has been completed.
|
boolean |
getInspectSinks()
Sets whether the implementations of sink methods shall be analyzed as well
|
boolean |
getInspectSources()
Gets whether the implementations of source methods shall be analyzed as well
|
boolean |
getLogSourcesAndSinks()
Gets whether the discovered sources and sinks shall be logged
|
int |
getMaxThreadNum()
Gets the maximum number of threads to be used by the solver.
|
double |
getMemoryThreshold()
Gets the threshold at which the data flow analysis shall be terminated.
|
static boolean |
getMergeNeighbors()
Gets whether neighbors at the same statement shall be merged into a single
abstraction
|
static boolean |
getOneResultPerAccessPath()
Gets whether different results shall be reported if they only differ in the
access path the reached the sink or left the source
|
boolean |
getOneSourceAtATime()
Gets whether one source shall be analyzed at a time instead of all sources
together
|
InfoflowConfiguration.OutputConfiguration |
getOutputConfiguration()
Gets the configuration for writing the data flow results into files
|
static boolean |
getPathAgnosticResults()
Gets whether results (source-to-sink connections) that only differ in their
propagation paths shall be merged into a single result or not.
|
InfoflowConfiguration.PathConfiguration |
getPathConfiguration()
Gets the configuration for dealing with the paths between source and sinks
|
InfoflowConfiguration.SolverConfiguration |
getSolverConfiguration()
Gets the configuration for the core IFDS data flow solver
|
InfoflowConfiguration.SootIntegrationMode |
getSootIntegrationMode()
Gets how FloweDroid shall interact with the underlying Soot instance.
|
InfoflowConfiguration.SourceSinkConfiguration |
getSourceSinkConfig()
Gets the configuration of the source/sink manager
|
InfoflowConfiguration.StaticFieldTrackingMode |
getStaticFieldTrackingMode()
Gets how the data flow solver shall treat assignments to static fields
|
boolean |
getStopAfterFirstFlow()
Gets whether the information flow analysis shall stop after the first flow
has been found
|
int |
getStopAfterFirstKFlows()
Gets after how many flows the information flow analysis shall stop.
|
boolean |
getWriteOutputFiles()
Gets whether FlowDroid shall write the Jimple files to disk after the data
flow analysis
|
int |
hashCode() |
boolean |
isTaintAnalysisEnabled()
Gets whether the taint analysis is enabled.
|
void |
merge(InfoflowConfiguration config)
Merges the given configuration options into this configuration object
|
void |
printSummary()
Prints a summary of this data flow configuration
|
void |
setAliasingAlgorithm(InfoflowConfiguration.AliasingAlgorithm algorithm)
Sets the aliasing algorithm to be used by the data flow tracker
|
static void |
setBaseDirectory(String baseDirectory)
Sets the base directory used e.g. for SourcesSinks.xsd
|
void |
setCallgraphAlgorithm(InfoflowConfiguration.CallgraphAlgorithm algorithm)
Sets the callgraph algorithm to be used by the data flow tracker
|
void |
setCodeEliminationMode(InfoflowConfiguration.CodeEliminationMode mode)
Sets whether and how FlowDroid shall eliminate irrelevant code before running
the taint propagation
|
void |
setDataFlowTimeout(long timeout)
Sets the timeout in seconds after which the analysis shall be aborted.
|
void |
setEnableArraySizeTainting(boolean arrayLengthTainting) |
void |
setEnableArrayTracking(boolean enableArrays)
Sets whether the solver shall track tainted arrays and array elements
|
void |
setEnableExceptionTracking(boolean enableExceptions)
Sets whether the solver shall track taints of thrown exception objects
|
void |
setEnableLineNumbers(boolean enableLineNumbers)
Sets whether line numbers associated with sources and sinks should be output
in XML results
|
void |
setEnableOriginalNames(boolean enableOriginalNames)
Sets whether the usage of original variablenames (if available) is enabled
|
void |
setEnableReflection(boolean enableReflections)
Sets whether reflective method calls shall be supported
|
void |
setEnableTypeChecking(boolean enableTypeChecking)
Sets whether type checking shall be done on casts and method calls
|
void |
setExcludeSootLibraryClasses(boolean excludeSootLibraryClasses)
Sets whether classes that are declared library classes in Soot shall be
excluded from the data flow analysis, i.e., no flows shall be tracked through
them
|
void |
setFlowSensitiveAliasing(boolean flowSensitiveAliasing)
Sets whether a flow sensitive aliasing algorithm shall be used
|
void |
setIgnoreFlowsInSystemPackages(boolean ignoreFlowsInSystemPackages)
Sets whether flows starting or ending in system packages such as Android's
support library shall be ignored.
|
void |
setImplicitFlowMode(InfoflowConfiguration.ImplicitFlowMode implicitFlowMode)
Sets the mode that defines whether and how the solver shall handle implicit
flows
|
void |
setIncrementalResultReporting(boolean incrementalReporting)
Sets whether the data flow results shall be reported incrementally instead of
being only available after the full data flow analysis has been completed.
|
void |
setInspectSinks(boolean inspect)
Sets whether the implementations of sink methods shall be analyzed as well
|
void |
setInspectSources(boolean inspect)
Sets whether the implementations of source methods shall be analyzed as well
|
void |
setLogSourcesAndSinks(boolean logSourcesAndSinks)
Sets whether the discovered sources and sinks shall be logged
|
void |
setMaxThreadNum(int threadNum)
Sets the maximum number of threads to be used by the solver.
|
void |
setMemoryThreshold(double memoryThreshold)
Sets the threshold at which the data flow analysis shall be terminated.
|
static void |
setMergeNeighbors(boolean value)
Sets whether neighbors at the same statement shall be merged into a single
abstraction
|
static void |
setOneResultPerAccessPath(boolean oneResultPerAP)
Gets whether different results shall be reported if they only differ in the
access path the reached the sink or left the source
|
void |
setOneSourceAtATime(boolean oneSourceAtATime)
Sets whether one source shall be analyzed at a time instead of all sources
together
|
static void |
setPathAgnosticResults(boolean pathAgnosticResults)
Sets whether results (source-to-sink connections) that only differ in their
propagation paths shall be merged into a single result or not.
|
void |
setSootIntegrationMode(InfoflowConfiguration.SootIntegrationMode sootIntegrationMode)
Sets how FlowDroid shall interact with the underlying Soot instance.
|
void |
setStaticFieldTrackingMode(InfoflowConfiguration.StaticFieldTrackingMode staticFieldTrackingMode)
Sets how the data flow solver shall treat assignments to static fields
|
void |
setStopAfterFirstFlow(boolean stopAfterFirstFlow)
Sets whether the information flow analysis shall stop after the first flow
has been found
|
void |
setStopAfterFirstKFlows(int stopAfterFirstKFlows)
Sets after how many flows the information flow analysis shall stop.
|
void |
setTaintAnalysisEnabled(boolean taintAnalysisEnabled)
Sets whether the taint analysis is enabled.
|
void |
setWriteOutputFiles(boolean writeOutputFiles)
Gets whether FlowDroid shall write the Jimple files to disk after the data
flow analysis
|
public void merge(InfoflowConfiguration config)
config - The configuration data to merge inpublic static void setPathAgnosticResults(boolean pathAgnosticResults)
pathAgnosticResults - True if two results shall be regarded as equal if
they connect the same source and sink, even if
their propagation paths differ, otherwise falsepublic static boolean getPathAgnosticResults()
public static boolean getOneResultPerAccessPath()
public static void setOneResultPerAccessPath(boolean oneResultPerAP)
oneResultPerAP - True if results shall also be distinguished based on
access pathspublic static boolean getMergeNeighbors()
public static void setMergeNeighbors(boolean value)
value - True if equivalent neighbor shall be merged, otherwise falsepublic void setStopAfterFirstKFlows(int stopAfterFirstKFlows)
stopAfterFirstKFlows - number of flows after which to stoppublic int getStopAfterFirstKFlows()
public void setStopAfterFirstFlow(boolean stopAfterFirstFlow)
stopAfterFirstFlow - True if the analysis shall stop after the first
flow has been found, otherwise false.public boolean getStopAfterFirstFlow()
public void setInspectSources(boolean inspect)
inspect - True if the implementations of source methods shall be
analyzed as well, otherwise falsepublic boolean getInspectSources()
public void setInspectSinks(boolean inspect)
inspect - True if the implementations of sink methods shall be analyzed
as well, otherwise falsepublic boolean getInspectSinks()
public void setImplicitFlowMode(InfoflowConfiguration.ImplicitFlowMode implicitFlowMode)
implicitFlowMode - The mode that defines whether and how the solver
shall handle implicit flowspublic InfoflowConfiguration.ImplicitFlowMode getImplicitFlowMode()
public void setStaticFieldTrackingMode(InfoflowConfiguration.StaticFieldTrackingMode staticFieldTrackingMode)
staticFieldTrackingMode - The mode that specifies the precision with
which assignments to static fields shall be
handledpublic InfoflowConfiguration.StaticFieldTrackingMode getStaticFieldTrackingMode()
public void setSootIntegrationMode(InfoflowConfiguration.SootIntegrationMode sootIntegrationMode)
sootIntegrationMode - The integration mode that FlowDroid shall usepublic InfoflowConfiguration.SootIntegrationMode getSootIntegrationMode()
public void setFlowSensitiveAliasing(boolean flowSensitiveAliasing)
flowSensitiveAliasing - True if a flow sensitive aliasing algorithm
shall be used, otherwise falsepublic boolean getFlowSensitiveAliasing()
public void setEnableExceptionTracking(boolean enableExceptions)
enableExceptions - True if taints associated with exceptions shall be
tracked over try/catch construct, otherwise falsepublic boolean getEnableExceptionTracking()
public void setEnableArrayTracking(boolean enableArrays)
enableArrays - True if taints associated with arrays or array elements
shall be tracked over try/catch construct, otherwise
falsepublic boolean getEnableArrayTracking()
public void setEnableArraySizeTainting(boolean arrayLengthTainting)
public boolean getEnableArraySizeTainting()
public void setCallgraphAlgorithm(InfoflowConfiguration.CallgraphAlgorithm algorithm)
algorithm - The callgraph algorithm to be used by the data flow trackerpublic InfoflowConfiguration.CallgraphAlgorithm getCallgraphAlgorithm()
public void setAliasingAlgorithm(InfoflowConfiguration.AliasingAlgorithm algorithm)
algorithm - The aliasing algorithm to be used by the data flow trackerpublic InfoflowConfiguration.AliasingAlgorithm getAliasingAlgorithm()
public void setEnableTypeChecking(boolean enableTypeChecking)
enableTypeChecking - True if type checking shall be performed, otherwise
falsepublic boolean getEnableTypeChecking()
public void setIgnoreFlowsInSystemPackages(boolean ignoreFlowsInSystemPackages)
ignoreFlowsInSystemPackages - True if flows starting or ending in system
packages shall be ignored, otherwise
false.public boolean getIgnoreFlowsInSystemPackages()
public void setExcludeSootLibraryClasses(boolean excludeSootLibraryClasses)
excludeSootLibraryClasses - True to exclude Soot library classes from
the data flow analysis, otherwise falsepublic boolean getExcludeSootLibraryClasses()
public void setMaxThreadNum(int threadNum)
threadNum - The maximum number of threads to be used by the solver, or
-1 for an unlimited number of threads.public int getMaxThreadNum()
public boolean getWriteOutputFiles()
public void setWriteOutputFiles(boolean writeOutputFiles)
writeOutputFiles - True if the Jimple files shall be written to disk
after the data flow analysis, otherwise falsepublic void setCodeEliminationMode(InfoflowConfiguration.CodeEliminationMode mode)
Mode - the mode of dead and irrelevant code eliminiation to be usedpublic InfoflowConfiguration.CodeEliminationMode getCodeEliminationMode()
public boolean getLogSourcesAndSinks()
public void setLogSourcesAndSinks(boolean logSourcesAndSinks)
logSourcesAndSinks - True if the discovered sources and sinks shall be
logged, otherwise falsepublic boolean getEnableReflection()
public void setEnableReflection(boolean enableReflections)
enableReflections - True if reflective method calls shall be supported,
otherwise falsepublic boolean getEnableLineNumbers()
public void setEnableLineNumbers(boolean enableLineNumbers)
enableLineNumbers - True if line numbers associated with sources and
sinks should be output in XML results, otherwise
falsepublic boolean getEnableOriginalNames()
public void setEnableOriginalNames(boolean enableOriginalNames)
enableOriginalNames - True if the usage of original variablenames (if
available) is enabled, otherwise falsepublic boolean isTaintAnalysisEnabled()
public void setTaintAnalysisEnabled(boolean taintAnalysisEnabled)
taintAnalysisEnabled - True if data flow tracking shall be performed,
false otherwisepublic boolean getIncrementalResultReporting()
public void setIncrementalResultReporting(boolean incrementalReporting)
incrementalReporting - True if incremental data flow results shall be
available, otherwise falsepublic long getDataFlowTimeout()
public void setDataFlowTimeout(long timeout)
timeout - The timeout in seconds after which the analysis shall be
abortedpublic double getMemoryThreshold()
public void setMemoryThreshold(double memoryThreshold)
memoryThreshold - The threshold at which to abort the workerspublic boolean getOneSourceAtATime()
public void setOneSourceAtATime(boolean oneSourceAtATime)
oneSourceAtATime - True if the analysis shall be run with one analysis
at a time, false if the analysis shall be run with
all sources togetherpublic InfoflowConfiguration.PathConfiguration getPathConfiguration()
public InfoflowConfiguration.OutputConfiguration getOutputConfiguration()
public InfoflowConfiguration.SolverConfiguration getSolverConfiguration()
public InfoflowConfiguration.AccessPathConfiguration getAccessPathConfiguration()
public static String getBaseDirectory()
public static void setBaseDirectory(String baseDirectory)
baseDirectory - path to the base directory as stringpublic void printSummary()
public InfoflowConfiguration.SourceSinkConfiguration getSourceSinkConfig()
Copyright © 2022 Fraunhofer SIT. All rights reserved.