reyg created this revision.
reyg added a reviewer: cfe-commits.
Herald added subscribers: carlosgalvezp, xazax.hun.
reyg requested review of this revision.
Herald added a project: clang-tools-extra.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D116163
Files:
clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h
clang-tools-extra/clang-tidy/ClangTidyOptions.cpp
clang-tools-extra/clang-tidy/ClangTidyOptions.h
clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
clang-tools-extra/unittests/clang-tidy/ClangTidyDiagnosticConsumerTest.cpp
clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp
Index: clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp
===
--- clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp
+++ clang-tools-extra/unittests/clang-tidy/ClangTidyOptionsTest.cpp
@@ -76,12 +76,14 @@
TEST(ParseConfiguration, ValidConfiguration) {
llvm::ErrorOr Options =
parseConfiguration(llvm::MemoryBufferRef("Checks: \"-*,misc-*\"\n"
+ "SuppressedChecks: \"noisy-*\"\n"
"HeaderFilterRegex: \".*\"\n"
"AnalyzeTemporaryDtors: true\n"
"User: some.user",
"Options"));
EXPECT_TRUE(!!Options);
EXPECT_EQ("-*,misc-*", *Options->Checks);
+ EXPECT_EQ("noisy-*", *Options->SuppressedChecks);
EXPECT_EQ(".*", *Options->HeaderFilterRegex);
EXPECT_EQ("some.user", *Options->User);
}
@@ -90,6 +92,7 @@
llvm::ErrorOr Options1 =
parseConfiguration(llvm::MemoryBufferRef(R"(
Checks: "check1,check2"
+ SuppressedChecks: "noisycheck1,noisycheck2"
HeaderFilterRegex: "filter1"
AnalyzeTemporaryDtors: true
User: user1
@@ -102,6 +105,7 @@
llvm::ErrorOr Options2 =
parseConfiguration(llvm::MemoryBufferRef(R"(
Checks: "check3,check4"
+ SuppressedChecks: "noisycheck3,noisycheck4"
HeaderFilterRegex: "filter2"
AnalyzeTemporaryDtors: false
User: user2
@@ -113,6 +117,8 @@
ASSERT_TRUE(!!Options2);
ClangTidyOptions Options = Options1->merge(*Options2, 0);
EXPECT_EQ("check1,check2,check3,check4", *Options.Checks);
+ EXPECT_EQ("noisycheck1,noisycheck2,noisycheck3,noisycheck4",
+*Options.SuppressedChecks);
EXPECT_EQ("filter2", *Options.HeaderFilterRegex);
EXPECT_EQ("user2", *Options.User);
ASSERT_TRUE(Options.ExtraArgs.hasValue());
Index: clang-tools-extra/unittests/clang-tidy/ClangTidyDiagnosticConsumerTest.cpp
===
--- clang-tools-extra/unittests/clang-tidy/ClangTidyDiagnosticConsumerTest.cpp
+++ clang-tools-extra/unittests/clang-tidy/ClangTidyDiagnosticConsumerTest.cpp
@@ -24,6 +24,19 @@
}
};
+// Test that has name == "test-check-noisy" and outputs exactly one diagnostic.
+class NoisyCheck : public ClangTidyCheck {
+public:
+ NoisyCheck(StringRef Name, ClangTidyContext *Context)
+ : ClangTidyCheck("test-check-noisy", Context) {}
+ void registerMatchers(ast_matchers::MatchFinder *Finder) override {
+Finder->addMatcher(ast_matchers::varDecl().bind("var"), this);
+ }
+ void check(const ast_matchers::MatchFinder::MatchResult &Result) override {
+diag("Some diagnostic");
+ }
+};
+
class HighlightTestCheck : public ClangTidyCheck {
public:
HighlightTestCheck(StringRef Name, ClangTidyContext *Context)
@@ -75,6 +88,27 @@
EXPECT_EQ("variable", Errors[2].Message.Message);
}
+TEST(ClangTidyDiagnosticConsumer, SkipsSuppressedChecks) {
+ std::vector Errors;
+ ClangTidyOptions CustomOptions;
+ CustomOptions.SuppressedChecks = "*noisy*";
+ runCheckOnCode("int a;", &Errors, "input.cc", None,
+CustomOptions);
+ // 4 comming from TestCheck, 0 from NoisyCheck (since it's suppressed).
+ EXPECT_EQ(3ul, Errors.size());
+}
+
+TEST(ClangTidyDiagnosticConsumer, ChecksIfNotSuppressed) {
+ std::vector Errors;
+ ClangTidyOptions CustomOptions;
+ CustomOptions.SuppressedChecks = "*different_glob*";
+ runCheckOnCode("int a;", &Errors, "input.cc", None,
+CustomOptions);
+
+ // 4 comming from TestCheck, 1 from NoisyCheck.
+ EXPECT_EQ(4ul, Errors.size());
+}
+
TEST(ClangTidyDiagnosticConsumer, HandlesSourceRangeHighlight) {
std::vector Errors;
runCheckOnCode("int abc;", &Errors);
Index: clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
===
--- clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
+++ clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
@@ -298,6 +298,7 @@
ClangTidyOptions DefaultOptions;
DefaultOptions.Checks = DefaultChecks;
+ DefaultOptions.