Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions development-tools/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ Development tools
gdb
clang
coverity
warnings
53 changes: 53 additions & 0 deletions development-tools/warnings.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
.. warnings:

Tools for tracking compiler warnings
====================================

.. highlight:: bash

The compiler warning tracking tooling is intended to alert developers about new
compiler warnings introduced by their contributions. The tooling consists of
a Python script which is ran by the following GitHub workflows:

* Ubuntu/build and test (:cpy-file:`.github/workflows/reusable-ubuntu.yml`)
* macOS/build and test (:cpy-file:`.github/workflows/reusable-macos.yml`)

You can check the documentation for the :cpy-file:`Tools/build/check_warnings.py` tool
by running::
python Tools/build/check_warnings.py --help

The script can be run locally by providing the compiler output and the
compiler output type to see a list of unique warnings.

::

$ python Tools/build/check_warnings.py -c <compiler_output_file> -t <compiler_output_type>

..

Note: `-fdiagnostics-format=json` flag is required when compiling with GCC
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Note: `-fdiagnostics-format=json` flag is required when compiling with GCC
Note: ``-fdiagnostics-format=json`` flag is required when compiling with GCC

for the script to properly parse the compiler output.

.. _warning-check-failure:

What to do if a warning check fails GitHub CI
---------------------------------------------

The :cpy-file:`Tools/build/check_warnings.py` tool will fail if the compiler generates
more or less warnings than expected for a given source file as defined in the
platform-specific warning ignore file. The warning ignore file is either
:cpy-file:`Tools/build/.warningignore_ubuntu` or
:cpy-file:`Tools/build/.warningignore_macos` depending on the platform.

If a warning check fails with:

* Unexpected warnings
* Attempt to refactor the code to avoid the warning.
* If it is not possible to avoid the warning document in the PR why it is
reasonable to ignore and add the warning to the platform-specific
warning ignore file. If the file exists in the warning ignore file
increment the count by the number of newly introduced warnings.
* Unexpected improvements (less warnings)
* Document in the PR that the change reduces the number of compiler
warnings. Decrement the count in the platform-specific warning
ignore file or remove the file if the count is now zero.