diff options
author | Samuel Benzaquen <sbenza@google.com> | 2016-04-14 21:15:57 +0000 |
---|---|---|
committer | Samuel Benzaquen <sbenza@google.com> | 2016-04-14 21:15:57 +0000 |
commit | 4fa2d57c6db8c7c5e017761643606697c050787c (patch) | |
tree | b5d64e06f0870cbd790306e8334bec61808321c8 /clang-tools-extra/clang-tidy/misc/MultipleStatementMacroCheck.h | |
parent | 1ca263c8903b765349d48490de1bfa7def0dc48d (diff) | |
download | bcm5719-llvm-4fa2d57c6db8c7c5e017761643606697c050787c.tar.gz bcm5719-llvm-4fa2d57c6db8c7c5e017761643606697c050787c.zip |
[clang-tidy] Add check misc-multiple-statement-macro
Summary:
The check detects multi-statement macros that are used in unbraced conditionals.
Only the first statement will be part of the conditionals and the rest will fall
outside of it and executed unconditionally.
Reviewers: alexfh
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D18766
llvm-svn: 266369
Diffstat (limited to 'clang-tools-extra/clang-tidy/misc/MultipleStatementMacroCheck.h')
-rw-r--r-- | clang-tools-extra/clang-tidy/misc/MultipleStatementMacroCheck.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/MultipleStatementMacroCheck.h b/clang-tools-extra/clang-tidy/misc/MultipleStatementMacroCheck.h new file mode 100644 index 00000000000..77a6b27dcde --- /dev/null +++ b/clang-tools-extra/clang-tidy/misc/MultipleStatementMacroCheck.h @@ -0,0 +1,37 @@ +//===--- MultipleStatementMacroCheck.h - clang-tidy--------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MULTIPLE_STATEMENT_MACRO_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MULTIPLE_STATEMENT_MACRO_H + +#include "../ClangTidy.h" + +namespace clang { +namespace tidy { +namespace misc { + +/// Detect multiple statement macros that are used in unbraced conditionals. +/// Only the first statement of the macro will be inside the conditional and the +/// other ones will be executed unconditionally. +/// +/// For the user-facing documentation see: +/// http://clang.llvm.org/extra/clang-tidy/checks/misc-multiple-statement-macro.html +class MultipleStatementMacroCheck : public ClangTidyCheck { +public: + MultipleStatementMacroCheck(StringRef Name, ClangTidyContext *Context) + : ClangTidyCheck(Name, Context) {} + void registerMatchers(ast_matchers::MatchFinder *Finder) override; + void check(const ast_matchers::MatchFinder::MatchResult &Result) override; +}; + +} // namespace misc +} // namespace tidy +} // namespace clang + +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_MULTIPLE_STATEMENT_MACRO_H |