Skip to content

Commit

Permalink
[diagtool] Add diagtool to install target.
Browse files Browse the repository at this point in the history
Although not very well known, diagtool is an incredibly convenient
utility for dealing with diagnostics.
Particularly useful are the "tree" and "show-enabled" commands:

 - The former prints the hierarchy of diagnostic (warning) flags and
   which of them are enabled by default.
 - The latter can be used to replace an invocation to clang and will
   print which diagnostics are disabled, warnings or errors.
   For instance: `diagtool show-enabled -Wall -Werror /tmp/test.c` will
   print that -Wunused-variable (warn_unused_variable) will be treated as
   an error.

This patch adds them to the install target so it gets shipped with the
LLVM release. It also adds a very basic man page and mentions this
change in the release notes.

Differential revision: https://reviews.llvm.org/D46694

llvm-svn: 332448
  • Loading branch information
JDevlieghere committed May 16, 2018
1 parent 45ccdd1 commit b48447a
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 0 deletions.
52 changes: 52 additions & 0 deletions clang/docs/CommandGuide/diagtool.rst
@@ -0,0 +1,52 @@
diagtool - clang diagnostics tool
=================================

SYNOPSIS
--------

:program:`diagtool` *command* [*args*]

DESCRIPTION
-----------

:program:`diagtool` is a combination of four tool for dealing with diagnostics in :program:`clang`.

SUBCOMMANDS
-----------

:program:`diagtool` is separated into several subcommands each tailored to a
different purpose. A brief summary of each command follows, with more detail in
the sections that follow.

* :ref:`find_diagnostic_id` - Print the id of the given diagnostic.
* :ref:`list_warnings` - List warnings and their corresponding flags.
* :ref:`show_enabled` - Show which warnings are enabled for a given command line.
* :ref:`tree` - Show warning flags in a tree view.

.. _find_diagnostic_id:

find-diagnostic-id
~~~~~~~~~~~~~~~~~~

:program:`diagtool` find-diagnostic-id *diagnostic-name*

.. _list_warnings:

list-warnings
~~~~~~~~~~~~~

:program:`diagtool` list-warnings

.. _show_enabled:

show-enabled
~~~~~~~~~~~~

:program:`diagtool` show-enabled [*options*] *filename ...*

.. _tree:

tree
~~~~

:program:`diagtool` tree [*diagnostic-group*]
1 change: 1 addition & 0 deletions clang/docs/CommandGuide/index.rst
Expand Up @@ -15,3 +15,4 @@ Basic Commands
:maxdepth: 1

clang
diagtool
5 changes: 5 additions & 0 deletions clang/docs/ReleaseNotes.rst
Expand Up @@ -93,6 +93,11 @@ Non-comprehensive list of changes in this release
behavior can be restored by setting ``-fclang-abi-compat`` to ``6`` or
lower.

- An existing tool named ``diagtool`` has been added to the release. As the
name suggests, it helps with dealing with diagnostics in ``clang``, such as
finding out the warning hierarchy, and which of them are enabled by default
or for a particular compiler invocation.

- ...

New Compiler Flags
Expand Down
12 changes: 12 additions & 0 deletions clang/tools/diagtool/CMakeLists.txt
Expand Up @@ -17,3 +17,15 @@ target_link_libraries(diagtool
clangBasic
clangFrontend
)

if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(TARGETS diagtool
COMPONENT diagtool
RUNTIME DESTINATION bin)

if (NOT CMAKE_CONFIGURATION_TYPES)
add_llvm_install_targets(install-diagtool
DEPENDS diagtool
COMPONENT diagtool)
endif()
endif()

0 comments on commit b48447a

Please sign in to comment.