Author: alexfh Date: Mon Jul 17 07:43:06 2017 New Revision: 308181 URL: http://llvm.org/viewvc/llvm-project?rev=308181&view=rev Log: [clang-tidy] Add modernize-use-bool-literals.IgnoreMacros option
Added: clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals-ignore-macros.cpp - copied, changed from r308085, clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals.cpp Modified: clang-tools-extra/trunk/clang-tidy/modernize/UseBoolLiteralsCheck.cpp clang-tools-extra/trunk/clang-tidy/modernize/UseBoolLiteralsCheck.h clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals.cpp Modified: clang-tools-extra/trunk/clang-tidy/modernize/UseBoolLiteralsCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseBoolLiteralsCheck.cpp?rev=308181&r1=308180&r2=308181&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/UseBoolLiteralsCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/UseBoolLiteralsCheck.cpp Mon Jul 17 07:43:06 2017 @@ -18,6 +18,11 @@ namespace clang { namespace tidy { namespace modernize { +UseBoolLiteralsCheck::UseBoolLiteralsCheck(StringRef Name, + ClangTidyContext *Context) + : ClangTidyCheck(Name, Context), + IgnoreMacros(Options.getLocalOrGlobal("IgnoreMacros", true)) {} + void UseBoolLiteralsCheck::registerMatchers(MatchFinder *Finder) { if (!getLangOpts().CPlusPlus) return; @@ -52,11 +57,16 @@ void UseBoolLiteralsCheck::check(const M const Expr *Expression = Cast ? Cast : Literal; + bool InMacro = Expression->getLocStart().isMacroID(); + + if (InMacro && IgnoreMacros) + return; + auto Diag = diag(Expression->getExprLoc(), "converting integer literal to bool, use bool literal instead"); - if (!Expression->getLocStart().isMacroID()) + if (!InMacro) Diag << FixItHint::CreateReplacement( Expression->getSourceRange(), LiteralBooleanValue ? "true" : "false"); } Modified: clang-tools-extra/trunk/clang-tidy/modernize/UseBoolLiteralsCheck.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseBoolLiteralsCheck.h?rev=308181&r1=308180&r2=308181&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/UseBoolLiteralsCheck.h (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/UseBoolLiteralsCheck.h Mon Jul 17 07:43:06 2017 @@ -22,10 +22,12 @@ namespace modernize { /// http://clang.llvm.org/extra/clang-tidy/checks/modernize-use-bool-literals.html class UseBoolLiteralsCheck : public ClangTidyCheck { public: - UseBoolLiteralsCheck(StringRef Name, ClangTidyContext *Context) - : ClangTidyCheck(Name, Context) {} + UseBoolLiteralsCheck(StringRef Name, ClangTidyContext *Context); void registerMatchers(ast_matchers::MatchFinder *Finder) override; void check(const ast_matchers::MatchFinder::MatchResult &Result) override; + +private: + const bool IgnoreMacros; }; } // namespace modernize Copied: clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals-ignore-macros.cpp (from r308085, clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals.cpp) URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals-ignore-macros.cpp?p2=clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals-ignore-macros.cpp&p1=clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals.cpp&r1=308085&r2=308181&rev=308181&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals-ignore-macros.cpp Mon Jul 17 07:43:06 2017 @@ -1,4 +1,8 @@ -// RUN: %check_clang_tidy %s modernize-use-bool-literals %t +// RUN: %check_clang_tidy %s modernize-use-bool-literals %t -- \ +// RUN: -config="{CheckOptions: \ +// RUN: [{key: modernize-use-bool-literals.IgnoreMacros, \ +// RUN: value: 1}]}" \ +// RUN: -- -std=c++11 bool IntToTrue = 1; // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: converting integer literal to bool, use bool literal instead [modernize-use-bool-literals] @@ -28,7 +32,6 @@ bool ExplicitStaticIntToFalse = static_c // CHECK-FIXES: {{^}}#define TRUE_MACRO 1{{$}} bool MacroIntToTrue = TRUE_MACRO; -// CHECK-MESSAGES: :[[@LINE-1]]:23: warning: converting integer literal to bool // CHECK-FIXES: {{^}}bool MacroIntToTrue = TRUE_MACRO;{{$}} #define FALSE_MACRO bool(0) @@ -37,7 +40,6 @@ bool MacroIntToTrue = TRUE_MACRO; bool TrueBool = true; // OK bool FalseBool = bool(FALSE_MACRO); -// CHECK-MESSAGES: :[[@LINE-1]]:23: warning: converting integer literal to bool // CHECK-FIXES: {{^}}bool FalseBool = bool(FALSE_MACRO);{{$}} void boolFunction(bool bar) { @@ -52,11 +54,9 @@ unsigned long long LongInteger = 1; // O // CHECK-FIXES: {{^}}#define MACRO_DEPENDENT_CAST(x) static_cast<bool>(x){{$}} bool MacroDependentBool = MACRO_DEPENDENT_CAST(0); -// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: converting integer literal to bool // CHECK-FIXES: {{^}}bool MacroDependentBool = MACRO_DEPENDENT_CAST(0);{{$}} bool ManyMacrosDependent = MACRO_DEPENDENT_CAST(FALSE_MACRO); -// CHECK-MESSAGES: :[[@LINE-1]]:49: warning: converting integer literal to bool // CHECK-FIXES: {{^}}bool ManyMacrosDependent = MACRO_DEPENDENT_CAST(FALSE_MACRO);{{$}} class FooClass { Modified: clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals.cpp?rev=308181&r1=308180&r2=308181&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-bool-literals.cpp Mon Jul 17 07:43:06 2017 @@ -1,4 +1,8 @@ -// RUN: %check_clang_tidy %s modernize-use-bool-literals %t +// RUN: %check_clang_tidy %s modernize-use-bool-literals %t -- \ +// RUN: -config="{CheckOptions: \ +// RUN: [{key: modernize-use-bool-literals.IgnoreMacros, \ +// RUN: value: 0}]}" \ +// RUN: -- -std=c++11 bool IntToTrue = 1; // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: converting integer literal to bool, use bool literal instead [modernize-use-bool-literals] _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits