==================
Summary Extraction
==================

.. WARNING:: The framework is rapidly evolving.
  The documentation might be out-of-sync with the implementation.
  The purpose of this documentation is to give context for upcoming reviews.

Command-line interface
**********************

Two flags control summary extraction:

- ``--ssaf-extract-summaries=<name1>,<name2>,...``: Comma-separated list of summary extractor names to enable.
- ``--ssaf-tu-summary-file=<path>.<format>``: Output file for the extracted summaries. The file extension selects the serialization format (e.g. ``.json``).
- ``--ssaf-list-extractors``: List the available summary extractors.
- ``--ssaf-list-formats``: List the available serialization formats.

Example invocation:

.. code-block:: bash

  clang --ssaf-extract-summaries=MyAwesomeAnalysis \
        --ssaf-tu-summary-file=my-tu-summary.json \
        -c input.cpp -o input.o

  clang --ssaf-list-extractors --ssaf-list-formats

Diagnostics
***********

In case the ``--ssaf-*`` flags are used incorrectly, or some extractor fails to implement the desired serialization format
or just happens to have an error, then the error is forwarded as a ``scalable-static-analysis-framework`` error.
These errors can be downgraded into warnings using ``-Wno-error=scalable-static-analysis-framework``.
These errors can be completely suppressed using ``-Wno-scalable-static-analysis-framework``.

See the `diagnostic flags <https://clang.llvm.org/docs/DiagnosticsReference.html#wscalable-static-analysis-framework>`_ for the full list of diagnostics controlled by ``-Wscalable-static-analysis-framework``.
