This includes refactorings and minor changes to clean up the algorithms. See commits for more detailed list.
The most significant changes for the analysis are:
NewSummaryGraph creates a new summary that contains (almost) all the nodes. The resulting summary is not constructed, but it can be constructed (i.e. the intraprocedural analysis can be run) by calling dataflow.RunIntraProcedural(state, summary). summary stores the intra-procedural analysis parameters that are required, so it maintains its identity w.r.t to how it was built.
In the taint analysis, summaries are created for every reachable function by default, even for the standard library. Summaries are then built only for the functions that satisfy ShouldBuildSummary. This allows us to build the inter-procedural graph using all the nodes without having to build the intra-procedural edges. Running the intra-procedural analysis on demand should therefore be a function-local process, and should not require updating the inter-procedural graph, with the exception of aliases bound to closures.
This includes refactorings and minor changes to clean up the algorithms. See commits for more detailed list. The most significant changes for the analysis are:
NewSummaryGraph
creates a newsummary
that contains (almost) all the nodes. The resulting summary is not constructed, but it can be constructed (i.e. the intraprocedural analysis can be run) by callingdataflow.RunIntraProcedural(state, summary)
.summary
stores the intra-procedural analysis parameters that are required, so it maintains its identity w.r.t to how it was built.ShouldBuildSummary
. This allows us to build the inter-procedural graph using all the nodes without having to build the intra-procedural edges. Running the intra-procedural analysis on demand should therefore be a function-local process, and should not require updating the inter-procedural graph, with the exception of aliases bound to closures.