[PATCH] D41648: [clang-tidy] implement cppcoreguidelines macro rules

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 12 06:10:58 PDT 2018


aaron.ballman added a comment.

In https://reviews.llvm.org/D41648#1253647, @JonasToth wrote:

> @aaron.ballman What do you think of the current version of this check?
>  As migration strategy the option for `CAPS_ONLY` is provided, otherwise the filtering is provided to silence necessary macros (which kind of enforces a common prefix for macros). This does implement both the cppcoreguidelines and allows migration.


I think that's a reasonable approach.



================
Comment at: clang-tidy/cppcoreguidelines/MacroUsageCheck.cpp:78
+        "function-like macro used; consider a 'constexpr' template function";
+  if (Info->isVariadic())
+    DiagnosticMessage = "variadic macro used; consider using a 'constexpr' "
----------------
Aren't all vararg macros also function-like macros, so this will trigger two diagnostics for all variadic macro definitions?


================
Comment at: docs/clang-tidy/checks/cppcoreguidelines-macro-usage.rst:26
+
+    Boolean flag to warn all macros except those with CAPS_ONLY names.
+    This option is intended to ease introduction of this check into older
----------------
warn all macros -> warn on all macros


================
Comment at: test/clang-tidy/cppcoreguidelines-macro-usage-custom.cpp:14
+
+#define PROBLEMATIC_VARIADIC(...) (__VA_ARGS__)
+// CHECK-MESSAGES: [[@LINE-1]]:9: warning: variadic macro used; consider using a 'constexpr' variadic template function
----------------
Please add a test like:
```
#define PROBLEMATIC_VARIADIC_TWO(x, ...) (__VA_ARGS__)
```
To ensure that you don't get two diagnostics (one for function-like and one for variadic).


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D41648





More information about the cfe-commits mailing list