[llvm-dev] RFC tidy-llvm.py

Chris Sears via llvm-dev llvm-dev at lists.llvm.org
Wed Dec 15 22:45:52 PST 2021


Using clang-tidy on LLVM itself (the proverbial eating your own dogfood) is
a little different from using a clang-tidy installation on another source
tree. clang-tidy needs to know where to find include files within the LLVM
source tree itself.

This is a Python script, tidy-llvm, which finds the root of the llvm tree,
verifies LLVM build requirements
(LLVM_ENABLE_PROJECTS:STRING=clang;clang-tools-extra and
CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=On), constructs llvm and
current directory include paths, concatenates up an argument list and then
runs clang-tidy on the .h and .cpp files on the command line.

tidy-llvm XXAsmPrinter.cpp generates a clang-tidy command line that looks
like:

  clang-tidy -checks="llvm-*" -p .../build XXAsmPrinter.cpp -- -I.
    -IAsmParser -IGISel -IDisassembler -ITargetInfo -IXX -IMCTargetDesc
    -I.../libcxx/include -I.../build/include -I.../llvm/include

I'm pretty sure that the llvm include directories (-I.../libcxx/include
-I.../build/include -I.../llvm/include others?) have to be enumerated
rather than simply inheriting where clang-tidy thinks they are in the
installation. Unless I manually specified them, clang-tidy wasn't finding
them.

I think someone more expert in the build machinery could improve it
greatly. For example, it currently gets a strange error about __config_site
(which doesn't prevent the rest of the clang-tidy checking):

  Error while processing path to XXAsmPrinter.cpp.
  path/libcxx/include/__config:13:10: error: '__config_site' file not found
[clang-diagnostic-error]
  #include <__config_site>

__config_site is indeed not in my build tree. There is a file
libcxx/include/__config_site.in but that's it. Again, someone more
knowledgable in the build machinery might understand why this is the case.

clang-tidy still interprets its .clang_tidy file wherever it finds it. It's
better to leave most of the -checks there. The tidy-llvm Python script
itself is currently set to -checks=\"llvm-*\". I set modernize in the
.clang_tidy file for my backend. I can imagine having a .clang-tidy file at
the root of the llvm tree.

Adding support for run-clang-tidy would be nice but for tidying individual
files it really won't matter.

https://reviews.llvm.org/D115848
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211215/bbbefa65/attachment.html>


More information about the llvm-dev mailing list