1# Reporting 2 3This is implemented in `reporting.{h,cc}`. 4 5STG difference reporting is built on [comparison](comparison.md) and 6[naming](naming.md). All that remains is to serialise the difference graph into 7a readable or usable format. 8 9Just as ABI graphs may contain cycles, so can difference graphs. STG currently 10supports the following reporting options. 11 12| **format** | **description** | 13| ---------- | --------------------------------------------------------------- | 14| plain | simple recursion, avoiding repeated node visits - unreadable | 15: : for deep graphs : 16| flat | graph is split into fragments each rooted at a node that "owns" | 17: : differences : 18| small | like flat, but empty sub graphs are omitted | 19| short | like small, but with lossy compression of repetitive | 20: : differences : 21| viz | Graphviz - infeasible for rendering once the graphs become | 22: : large : 23 24The most useful option is `small`. Use `flat` if you need to see the impact on 25the interface symbols and types. Use `short` if large reports should be 26condensed. 27 28The `flat` reporting and its derivatives will misbehave (go into an infinite 29loop) in the current implementation, if the difference graph contains a cycle 30where none of the nodes refers to a named type. 31