Reporting

This is implemented in reporting.{h,cc}.

STG difference reporting is built on comparison and naming. All that remains is to serialise the difference graph into a readable or usable format.

Just as ABI graphs may contain cycles, so can difference graphs. STG currently supports the following reporting options.

formatdescription
plainsimple recursion, avoiding repeated node visits - unreadable
: : for deep graphs :
flatgraph is split into fragments each rooted at a node that “owns”
: : differences :
smalllike flat, but empty sub graphs are omitted
shortlike small, but with lossy compression of repetitive
: : differences :
vizGraphviz - infeasible for rendering once the graphs become
: : large :

The most useful option is small. Use flat if you need to see the impact on the interface symbols and types. Use short if large reports should be condensed.

The flat reporting and its derivatives will misbehave (go into an infinite loop) in the current implementation, if the difference graph contains a cycle where none of the nodes refers to a named type.