diff options
author | Jonas Toth <jonas.toth@gmail.com> | 2018-10-22 19:20:01 +0000 |
---|---|---|
committer | Jonas Toth <jonas.toth@gmail.com> | 2018-10-22 19:20:01 +0000 |
commit | 552b62ed1f24dfbed4b5ee733415572ead5b228e (patch) | |
tree | f389feaa5b77a8c10caef76cc0c923be21a00d6e /clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage-caps-only.cpp | |
parent | c2e58e726525943ffa6eef3392de42dc0a769470 (diff) | |
download | bcm5719-llvm-552b62ed1f24dfbed4b5ee733415572ead5b228e.tar.gz bcm5719-llvm-552b62ed1f24dfbed4b5ee733415572ead5b228e.zip |
[clang-tidy] implement cppcoreguidelines macro rules
Summary:
In short macros are discouraged by multiple rules (and sometimes reference randomly). [Enum.1], [ES.30], [ES.31]
This check allows only headerguards and empty macros for annotation.
Reviewers: aaron.ballman, hokein
Reviewed By: aaron.ballman
Subscribers: jbcoe, Eugene.Zelenko, klimek, nemanjai, mgorny, xazax.hun, kbarton, cfe-commits
Differential Revision: https://reviews.llvm.org/D41648
llvm-svn: 344940
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage-caps-only.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage-caps-only.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage-caps-only.cpp b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage-caps-only.cpp new file mode 100644 index 00000000000..db9a41a3581 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/cppcoreguidelines-macro-usage-caps-only.cpp @@ -0,0 +1,24 @@ +// RUN: %check_clang_tidy %s cppcoreguidelines-macro-usage %t \ +// RUN: -config='{CheckOptions: \ +// RUN: [{key: cppcoreguidelines-macro-usage.CheckCapsOnly, value: 1}]}' -- + +#ifndef INCLUDE_GUARD +#define INCLUDE_GUARD + +#define problematic_constant 0 +// CHECK-MESSAGES: [[@LINE-1]]:9: warning: macro definition does not define the macro name using all uppercase characters + +#define problematic_function(x, y) ((a) > (b) ? (a) : (b)) +// CHECK-MESSAGES: [[@LINE-1]]:9: warning: macro definition does not define the macro name using all uppercase characters + +#define problematic_variadic(...) (__VA_ARGS__) +// CHECK-MESSAGES: [[@LINE-1]]:9: warning: macro definition does not define the macro name using all uppercase characters +// +#define problematic_variadic2(x, ...) (__VA_ARGS__) +// CHECK-MESSAGES: [[@LINE-1]]:9: warning: macro definition does not define the macro name using all uppercase characters + +#define OKISH_CONSTANT 42 +#define OKISH_FUNCTION(x, y) ((a) > (b) ? (a) : (b)) +#define OKISH_VARIADIC(...) (__VA_ARGS__) + +#endif |