1 //===------- HICPPTidyModule.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 "../cppcoreguidelines/NoMallocCheck.h" 14 #include "../cppcoreguidelines/ProBoundsArrayToPointerDecayCheck.h" 15 #include "../cppcoreguidelines/ProTypeMemberInitCheck.h" 16 #include "../cppcoreguidelines/ProTypeVarargCheck.h" 17 #include "../cppcoreguidelines/SpecialMemberFunctionsCheck.h" 18 #include "../google/DefaultArgumentsCheck.h" 19 #include "../google/ExplicitConstructorCheck.h" 20 #include "../misc/MoveConstantArgumentCheck.h" 21 #include "../misc/NewDeleteOverloadsCheck.h" 22 #include "../misc/NoexceptMoveConstructorCheck.h" 23 #include "../misc/StaticAssertCheck.h" 24 #include "../misc/UndelegatedConstructor.h" 25 #include "../misc/UseAfterMoveCheck.h" 26 #include "../modernize/DeprecatedHeadersCheck.h" 27 #include "../modernize/UseAutoCheck.h" 28 #include "../modernize/UseEmplaceCheck.h" 29 #include "../modernize/UseEqualsDefaultCheck.h" 30 #include "../modernize/UseEqualsDeleteCheck.h" 31 #include "../modernize/UseNoexceptCheck.h" 32 #include "../modernize/UseNullptrCheck.h" 33 #include "../modernize/UseOverrideCheck.h" 34 #include "../readability/BracesAroundStatementsCheck.h" 35 #include "../readability/FunctionSizeCheck.h" 36 #include "../readability/IdentifierNamingCheck.h" 37 #include "ExceptionBaseclassCheck.h" 38 #include "NoAssemblerCheck.h" 39 #include "SignedBitwiseCheck.h" 40 41 namespace clang { 42 namespace tidy { 43 namespace hicpp { 44 45 class HICPPModule : public ClangTidyModule { 46 public: 47 void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override { 48 CheckFactories.registerCheck<readability::BracesAroundStatementsCheck>( 49 "hicpp-braces-around-statements"); 50 CheckFactories.registerCheck<modernize::DeprecatedHeadersCheck>( 51 "hicpp-deprecated-headers"); 52 CheckFactories.registerCheck<ExceptionBaseclassCheck>( 53 "hicpp-exception-baseclass"); 54 CheckFactories.registerCheck<SignedBitwiseCheck>( 55 "hicpp-signed-bitwise"); 56 CheckFactories.registerCheck<google::ExplicitConstructorCheck>( 57 "hicpp-explicit-conversions"); 58 CheckFactories.registerCheck<readability::FunctionSizeCheck>( 59 "hicpp-function-size"); 60 CheckFactories.registerCheck<readability::IdentifierNamingCheck>( 61 "hicpp-named-parameter"); 62 CheckFactories.registerCheck<misc::UseAfterMoveCheck>( 63 "hicpp-invalid-access-moved"); 64 CheckFactories.registerCheck<cppcoreguidelines::ProTypeMemberInitCheck>( 65 "hicpp-member-init"); 66 CheckFactories.registerCheck<misc::MoveConstantArgumentCheck>( 67 "hicpp-move-const-arg"); 68 CheckFactories.registerCheck<misc::NewDeleteOverloadsCheck>( 69 "hicpp-new-delete-operators"); 70 CheckFactories.registerCheck<misc::NoexceptMoveConstructorCheck>( 71 "hicpp-noexcept-move"); 72 CheckFactories 73 .registerCheck<cppcoreguidelines::ProBoundsArrayToPointerDecayCheck>( 74 "hicpp-no-array-decay"); 75 CheckFactories.registerCheck<NoAssemblerCheck>("hicpp-no-assembler"); 76 CheckFactories.registerCheck<cppcoreguidelines::NoMallocCheck>( 77 "hicpp-no-malloc"); 78 CheckFactories 79 .registerCheck<cppcoreguidelines::SpecialMemberFunctionsCheck>( 80 "hicpp-special-member-functions"); 81 CheckFactories.registerCheck<misc::StaticAssertCheck>( 82 "hicpp-static-assert"); 83 CheckFactories.registerCheck<modernize::UseAutoCheck>("hicpp-use-auto"); 84 CheckFactories.registerCheck<misc::UndelegatedConstructorCheck>( 85 "hicpp-undelegated-constructor"); 86 CheckFactories.registerCheck<modernize::UseEmplaceCheck>( 87 "hicpp-use-emplace"); 88 CheckFactories.registerCheck<modernize::UseEqualsDefaultCheck>( 89 "hicpp-use-equals-default"); 90 CheckFactories.registerCheck<modernize::UseEqualsDeleteCheck>( 91 "hicpp-use-equals-delete"); 92 CheckFactories.registerCheck<modernize::UseNoexceptCheck>( 93 "hicpp-use-noexcept"); 94 CheckFactories.registerCheck<modernize::UseNullptrCheck>( 95 "hicpp-use-nullptr"); 96 CheckFactories.registerCheck<modernize::UseOverrideCheck>( 97 "hicpp-use-override"); 98 CheckFactories.registerCheck<cppcoreguidelines::ProTypeVarargCheck>( 99 "hicpp-vararg"); 100 } 101 }; 102 103 // Register the HICPPModule using this statically initialized variable. 104 static ClangTidyModuleRegistry::Add<HICPPModule> 105 X("hicpp-module", "Adds High-Integrity C++ checks."); 106 107 } // namespace hicpp 108 109 // This anchor is used to force the linker to link in the generated object file 110 // and thus register the HICPPModule. 111 volatile int HICPPModuleAnchorSource = 0; 112 113 } // namespace tidy 114 } // namespace clang 115