This splits the dataflow.AnalyzerState into different State structs that embed each other:
the config.State contains the config and logger.
the loadprogram.State additionally contains the information about a built SSA program.
the ptr.State additionally contains the information about the pointer analysis result.
the dataflow.State additionally contains information about dataflows.
Other analyzers (taint, backtrace, dependencies, syntactic, ...) can build only the state they need, and the type tells what analysis results are available.
This splits the
dataflow.AnalyzerState
into differentState
structs that embed each other:config.State
contains the config and logger.loadprogram.State
additionally contains the information about a built SSA program.ptr.State
additionally contains the information about the pointer analysis result.dataflow.State
additionally contains information about dataflows. Other analyzers (taint, backtrace, dependencies, syntactic, ...) can build only the state they need, and the type tells what analysis results are available.