From c367ba1923335a90e760923dd8b93164ff9af22f Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Tue, 30 Oct 2018 15:52:36 +0000 Subject: [clang-tidy] cppcoreguidelines-macro-usage: print macro names Summary: The macro may not have location (or more generally, the location may not exist), e.g. if it originates from compiler's command-line. The check complains on all the macros, even those without the location info. Which means, it only says it does not like it. What is 'it'? I have no idea. If we don't print the name, then there is no way to deal with that situation. And in general, not printing name here forces the user to try to understand, given, the macro definition location, what is the macro name? This isn't fun. Also, ignores-by-default the macros originating from command-line, with an option to not ignore those. I suspect some more issues may crop up later. Reviewers: JonasToth, aaron.ballman, hokein, xazax.hun, alexfh Reviewed By: JonasToth, aaron.ballman Subscribers: nemanjai, kbarton, rnkovacs, cfe-commits Tags: #clang-tools-extra Differential Revision: https://reviews.llvm.org/D53817 llvm-svn: 345610 --- .../cppcoreguidelines-macro-usage-command-line-macros.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage-command-line-macros.cpp (limited to 'clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage-command-line-macros.cpp') diff --git a/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage-command-line-macros.cpp b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage-command-line-macros.cpp new file mode 100644 index 00000000000..d4f9a0da876 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage-command-line-macros.cpp @@ -0,0 +1,8 @@ +// RUN: %check_clang_tidy -check-suffixes=NORMAL %s cppcoreguidelines-macro-usage %t -- -- -D_ZZZ_IM_A_MACRO +// RUN: %check_clang_tidy -check-suffixes=NORMAL %s cppcoreguidelines-macro-usage %t -- -config='{CheckOptions: [{key: cppcoreguidelines-macro-usage.IgnoreCommandLineMacros, value: 1}]}' -- -D_ZZZ_IM_A_MACRO +// RUN: %check_clang_tidy -check-suffixes=NORMAL,CL %s cppcoreguidelines-macro-usage %t -- -config='{CheckOptions: [{key: cppcoreguidelines-macro-usage.IgnoreCommandLineMacros, value: 0}]}' -- -D_ZZZ_IM_A_MACRO + +// CHECK-MESSAGES-CL: warning: macro '_ZZZ_IM_A_MACRO' used to declare a constant; consider using a 'constexpr' constant + +#define PROBLEMATIC_CONSTANT 0 +// CHECK-MESSAGES-NORMAL: [[@LINE-1]]:9: warning: macro 'PROBLEMATIC_CONSTANT' used to declare a constant; consider using a 'constexpr' constant -- cgit v1.2.3