Analyzer: Add data flow events
The analyzer now provides more detailed data flow events to help users understand warnings related to problematic values.
Analyzer warnings related to problematic values (e.g., division by zero) are often hard to understand. This commit adds data flow events to track value origins to precisely show where problematic values originate. diagnostic_manager::annotate_exploded_path now walks backwards from the final enode and builds state transitions, and highlights them in diagnostics, leading to improved user understanding of detected issues.
In Details
This commit enhances the GCC analyzer's diagnostic capabilities by adding detailed data flow events. The analyzer now walks backwards from the final exploded node, building a chain of state_transition instances and associating them with checker events. This allows the analyzer to track the origin of problematic values more accurately. Toolchain developers should note the new state_transition class hierarchy and the modifications to diagnostic_manager::annotate_exploded_path.
For Context
The GCC static analyzer helps developers find bugs by simulating program execution. When a warning is triggered (e.g. division by zero), it can be difficult to understand how the problematic value arose. This commit adds additional information to the analyzer's output, tracking the flow of data and highlighting the steps that led to the error. This makes it easier for developers to understand and fix the root cause of the problem.