[clang-tools-extra] [clang-tidy] add option to avoid "no checks enabled" error (PR #96122)
Congcong Cai via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 19 16:20:42 PDT 2024
https://github.com/HerrCai0907 created https://github.com/llvm/llvm-project/pull/96122
When clang-tidy get an empty checks, it will throw "no checks enabled" error and exit with non-zero return value.
It make clang-tidy's wrapper program confused when in big project some files don't want to be checked and use `-checks=-*` to disable all checks.
>From 41993ea6903668c41eef8a4477f5914c894f7109 Mon Sep 17 00:00:00 2001
From: Congcong Cai <congcongcai0907 at 163.com>
Date: Wed, 19 Jun 2024 23:20:09 +0000
Subject: [PATCH] [clang-tidy] add option to avoid "no checks enabled" error
When clang-tidy get an empty checks, it will throw "no checks enabled" error and exit with non-zero return value.
It make clang-tidy's wrapper program confused when in big project some files don't want to be checked and use `-checks=-*` to disable all checks.
---
clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp | 12 ++++++++++--
clang-tools-extra/docs/ReleaseNotes.rst | 3 +++
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
index 7388f20ef288e..b579aff4394c9 100644
--- a/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
+++ b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
@@ -325,6 +325,14 @@ option is recognized.
)"),
cl::init(false), cl::cat(ClangTidyCategory));
+static cl::opt<bool> AllowEmptyCheckList("allow-empty-checks", desc(R"(
+Allow empty enabled checks. This suppresses
+the "no checks enabled" error when disabling
+all of the checks.
+)"),
+ cl::init(false),
+ cl::cat(ClangTidyCategory));
+
namespace clang::tidy {
static void printStats(const ClangTidyStats &Stats) {
@@ -598,7 +606,7 @@ int clangTidyMain(int argc, const char **argv) {
}
if (ListChecks) {
- if (EnabledChecks.empty()) {
+ if (EnabledChecks.empty() && !AllowEmptyCheckList) {
llvm::errs() << "No checks enabled.\n";
return 1;
}
@@ -651,7 +659,7 @@ int clangTidyMain(int argc, const char **argv) {
return 0;
}
- if (EnabledChecks.empty()) {
+ if (EnabledChecks.empty() && !AllowEmptyCheckList) {
llvm::errs() << "Error: no checks enabled.\n";
llvm::cl::PrintHelpMessage(/*Hidden=*/false, /*Categorized=*/true);
return 1;
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index 3bdd735f7dcf7..54cfcafd121b6 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -125,6 +125,9 @@ Improvements to clang-tidy
- Added argument `--exclude-header-filter` and config option `ExcludeHeaderFilterRegex`
to exclude headers from analysis via a RegEx.
+- Added argument `--allow-empty-checks` and config option `AllowEmptyCheckList`
+ to suppress "no checks enabled" error when disabling all of the checks.
+
New checks
^^^^^^^^^^
More information about the cfe-commits
mailing list