xref: /freebsd/contrib/libxo/doc/xolint.rst (revision 0957b409a90fd597c1e9124cbaf3edd2b488f4ac)
1
2xolint
3======
4
5`xolint` is a tool for reporting common mistakes in format strings
6in source code that invokes `xo_emit`.  It allows these errors
7to be diagnosed at build time, rather than waiting until runtime.
8
9`xolint` takes the one or more C files as arguments, and reports
10and errors, warning, or informational messages as needed:
11
12============ ===================================================
13 Option       Meaning
14============ ===================================================
15 -c           Invoke 'cpp' against the input file
16 -C <flags>   Flags that are passed to 'cpp
17 -d           Enable debug output
18 -D           Generate documentation for all xolint messages
19 -I           Generate info table code
20 -p           Print the offending lines after the message
21 -V           Print vocabulary of all field names
22 -X           Extract samples from xolint, suitable for testing
23============ ===================================================
24
25The output message will contain the source filename and line number, the
26class of the message, the message, and, if -p is given, the
27line that contains the error::
28
29    % xolint.pl -t xolint.c
30    xolint.c: 16: error: anchor format should be "%d"
31    16         xo_emit("{[:/%s}");
32
33The "-I" option will generate a table of `xo_info_t`_ structures,
34suitable for inclusion in source code.
35
36.. _xo_info_t: :ref:`field-information`
37
38The "-V" option does not report errors, but prints a complete list of
39all field names, sorted alphabetically.  The output can help spot
40inconsistencies and spelling errors.
41