xref: /aosp_15_r20/external/stg/doc/reporting.md (revision 9e3b08ae94a55201065475453d799e8b1378bea6)
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