1 //===--- ModernizeTidyModule.cpp - clang-tidy -----------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "../ClangTidy.h" 11 #include "../ClangTidyModule.h" 12 #include "../ClangTidyModuleRegistry.h" 13 #include "AvoidBindCheck.h" 14 #include "DeprecatedHeadersCheck.h" 15 #include "LoopConvertCheck.h" 16 #include "MakeSharedCheck.h" 17 #include "MakeUniqueCheck.h" 18 #include "PassByValueCheck.h" 19 #include "RawStringLiteralCheck.h" 20 #include "RedundantVoidArgCheck.h" 21 #include "ReplaceAutoPtrCheck.h" 22 #include "ShrinkToFitCheck.h" 23 #include "UseAutoCheck.h" 24 #include "UseBoolLiteralsCheck.h" 25 #include "UseDefaultCheck.h" 26 #include "UseNullptrCheck.h" 27 #include "UseOverrideCheck.h" 28 29 using namespace clang::ast_matchers; 30 31 namespace clang { 32 namespace tidy { 33 namespace modernize { 34 35 class ModernizeModule : public ClangTidyModule { 36 public: 37 void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override { 38 CheckFactories.registerCheck<AvoidBindCheck>( 39 "modernize-avoid-bind"); 40 CheckFactories.registerCheck<DeprecatedHeadersCheck>( 41 "modernize-deprecated-headers"); 42 CheckFactories.registerCheck<LoopConvertCheck>("modernize-loop-convert"); 43 CheckFactories.registerCheck<MakeSharedCheck>("modernize-make-shared"); 44 CheckFactories.registerCheck<MakeUniqueCheck>("modernize-make-unique"); 45 CheckFactories.registerCheck<PassByValueCheck>("modernize-pass-by-value"); 46 CheckFactories.registerCheck<RawStringLiteralCheck>( 47 "modernize-raw-string-literal"); 48 CheckFactories.registerCheck<RedundantVoidArgCheck>( 49 "modernize-redundant-void-arg"); 50 CheckFactories.registerCheck<ReplaceAutoPtrCheck>( 51 "modernize-replace-auto-ptr"); 52 CheckFactories.registerCheck<ShrinkToFitCheck>("modernize-shrink-to-fit"); 53 CheckFactories.registerCheck<UseAutoCheck>("modernize-use-auto"); 54 CheckFactories.registerCheck<UseBoolLiteralsCheck>( 55 "modernize-use-bool-literals"); 56 CheckFactories.registerCheck<UseDefaultCheck>("modernize-use-default"); 57 CheckFactories.registerCheck<UseNullptrCheck>("modernize-use-nullptr"); 58 CheckFactories.registerCheck<UseOverrideCheck>("modernize-use-override"); 59 } 60 61 ClangTidyOptions getModuleOptions() override { 62 ClangTidyOptions Options; 63 auto &Opts = Options.CheckOptions; 64 // For types whose size in bytes is above this threshold, we prefer taking a 65 // const-reference than making a copy. 66 Opts["modernize-loop-convert.MaxCopySize"] = "16"; 67 68 Opts["modernize-loop-convert.MinConfidence"] = "reasonable"; 69 Opts["modernize-loop-convert.NamingStyle"] = "CamelCase"; 70 Opts["modernize-pass-by-value.IncludeStyle"] = "llvm"; // Also: "google". 71 Opts["modernize-replace-auto-ptr.IncludeStyle"] = "llvm"; // Also: "google". 72 73 // Comma-separated list of macros that behave like NULL. 74 Opts["modernize-use-nullptr.NullMacros"] = "NULL"; 75 return Options; 76 } 77 }; 78 79 // Register the ModernizeTidyModule using this statically initialized variable. 80 static ClangTidyModuleRegistry::Add<ModernizeModule> X("modernize-module", 81 "Add modernize checks."); 82 83 } // namespace modernize 84 85 // This anchor is used to force the linker to link in the generated object file 86 // and thus register the ModernizeModule. 87 volatile int ModernizeModuleAnchorSource = 0; 88 89 } // namespace tidy 90 } // namespace clang 91