D90110 modified the behavior of run-clang-tidy to always pass the
--use-color option to clang-tidy, which enabled colored diagnostics
output regardless of TTY status or .clang-tidy settings. This left the
user with no option to disable the colored output.
This presents an issue when trying to parse the output of run-clang-tidy
programmaticall, as the output is polluted with ANSI escape characters.
This PR fixes this issue in two ways:
- It restores the default behavior of run-clang-tidy to let clang-tidy decide whether to color output. This allows the user to configure color via the UseColor option in a .clang-tidy file.
- It adds mutually exclusive, optional -use-color and -no-use-color argument flags that let the user explicitly set the color option via the invocation.
After this change the default behavior of run-clang-tidy when no
.clang-tidy file is available is now to show no color, presumably
because clang-tidy detects that the output is being piped and defaults
to not showing colored output. This seems like an acceptable tradeoff
to respect .clang-tidy configurations, as users can still use the
-use-color option to explicitly enable color.
Fixes #49441 (50097 in Bugzilla)
Didn't even realise an empty string was acceptable in LLVM CLI. Learn something new everyday.