1dbdbabf2SAaron Ballman //===------- HICPPTidyModule.cpp - clang-tidy -----------------------------===// 2dbdbabf2SAaron Ballman // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6dbdbabf2SAaron Ballman // 7dbdbabf2SAaron Ballman //===----------------------------------------------------------------------===// 8dbdbabf2SAaron Ballman 9dbdbabf2SAaron Ballman #include "../ClangTidy.h" 10dbdbabf2SAaron Ballman #include "../ClangTidyModule.h" 11dbdbabf2SAaron Ballman #include "../ClangTidyModuleRegistry.h" 121f228e57SNathan James #include "../bugprone/UndelegatedConstructorCheck.h" 13d4ac4afdSAlexander Kornienko #include "../bugprone/UseAfterMoveCheck.h" 14f22f3489SJonas Toth #include "../cppcoreguidelines/AvoidGotoCheck.h" 15a7358038SJonas Toth #include "../cppcoreguidelines/NoMallocCheck.h" 16a7358038SJonas Toth #include "../cppcoreguidelines/ProBoundsArrayToPointerDecayCheck.h" 1788232264SJonathan Coe #include "../cppcoreguidelines/ProTypeMemberInitCheck.h" 18a7358038SJonas Toth #include "../cppcoreguidelines/ProTypeVarargCheck.h" 1988232264SJonathan Coe #include "../cppcoreguidelines/SpecialMemberFunctionsCheck.h" 2088232264SJonathan Coe #include "../google/DefaultArgumentsCheck.h" 2188232264SJonathan Coe #include "../google/ExplicitConstructorCheck.h" 2288232264SJonathan Coe #include "../misc/NewDeleteOverloadsCheck.h" 23a7358038SJonas Toth #include "../misc/StaticAssertCheck.h" 242634bd59SRoman Lebedev #include "../modernize/AvoidCArraysCheck.h" 25a7358038SJonas Toth #include "../modernize/DeprecatedHeadersCheck.h" 26a7358038SJonas Toth #include "../modernize/UseAutoCheck.h" 27a7358038SJonas Toth #include "../modernize/UseEmplaceCheck.h" 2888232264SJonathan Coe #include "../modernize/UseEqualsDefaultCheck.h" 2988232264SJonathan Coe #include "../modernize/UseEqualsDeleteCheck.h" 30a7358038SJonas Toth #include "../modernize/UseNoexceptCheck.h" 31a7358038SJonas Toth #include "../modernize/UseNullptrCheck.h" 3288232264SJonathan Coe #include "../modernize/UseOverrideCheck.h" 331bfcba8cSAlexander Kornienko #include "../performance/MoveConstArgCheck.h" 341bfcba8cSAlexander Kornienko #include "../performance/NoexceptMoveConstructorCheck.h" 356c2920a3SAaron Ballman #include "../readability/BracesAroundStatementsCheck.h" 3688232264SJonathan Coe #include "../readability/FunctionSizeCheck.h" 371f228e57SNathan James #include "../readability/NamedParameterCheck.h" 3808701ec7SRoman Lebedev #include "../readability/UppercaseLiteralSuffixCheck.h" 39a3274e54SAaron Ballman #include "ExceptionBaseclassCheck.h" 40*3ed940acSBjörn Svensson #include "IgnoredRemoveResultCheck.h" 41bf50a7f8SJonas Toth #include "MultiwayPathsCoveredCheck.h" 42dbdbabf2SAaron Ballman #include "NoAssemblerCheck.h" 43a8c34530SJonas Toth #include "SignedBitwiseCheck.h" 44dbdbabf2SAaron Ballman 457d2ea6c4SCarlos Galvez namespace clang::tidy { 46dbdbabf2SAaron Ballman namespace hicpp { 47dbdbabf2SAaron Ballman 48dbdbabf2SAaron Ballman class HICPPModule : public ClangTidyModule { 49dbdbabf2SAaron Ballman public: addCheckFactories(ClangTidyCheckFactories & CheckFactories)50dbdbabf2SAaron Ballman void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override { 512634bd59SRoman Lebedev CheckFactories.registerCheck<modernize::AvoidCArraysCheck>( 522634bd59SRoman Lebedev "hicpp-avoid-c-arrays"); 53f22f3489SJonas Toth CheckFactories.registerCheck<cppcoreguidelines::AvoidGotoCheck>( 54f22f3489SJonas Toth "hicpp-avoid-goto"); 556c2920a3SAaron Ballman CheckFactories.registerCheck<readability::BracesAroundStatementsCheck>( 566c2920a3SAaron Ballman "hicpp-braces-around-statements"); 57a7358038SJonas Toth CheckFactories.registerCheck<modernize::DeprecatedHeadersCheck>( 58a7358038SJonas Toth "hicpp-deprecated-headers"); 59a3274e54SAaron Ballman CheckFactories.registerCheck<ExceptionBaseclassCheck>( 60a3274e54SAaron Ballman "hicpp-exception-baseclass"); 61*3ed940acSBjörn Svensson CheckFactories.registerCheck<IgnoredRemoveResultCheck>( 62*3ed940acSBjörn Svensson "hicpp-ignored-remove-result"); 63bf50a7f8SJonas Toth CheckFactories.registerCheck<MultiwayPathsCoveredCheck>( 64bf50a7f8SJonas Toth "hicpp-multiway-paths-covered"); 65fe7ef82cSJonas Toth CheckFactories.registerCheck<SignedBitwiseCheck>("hicpp-signed-bitwise"); 6688232264SJonathan Coe CheckFactories.registerCheck<google::ExplicitConstructorCheck>( 6788232264SJonathan Coe "hicpp-explicit-conversions"); 6888232264SJonathan Coe CheckFactories.registerCheck<readability::FunctionSizeCheck>( 6988232264SJonathan Coe "hicpp-function-size"); 701f228e57SNathan James CheckFactories.registerCheck<readability::NamedParameterCheck>( 7188232264SJonathan Coe "hicpp-named-parameter"); 72d4ac4afdSAlexander Kornienko CheckFactories.registerCheck<bugprone::UseAfterMoveCheck>( 7388232264SJonathan Coe "hicpp-invalid-access-moved"); 7488232264SJonathan Coe CheckFactories.registerCheck<cppcoreguidelines::ProTypeMemberInitCheck>( 7588232264SJonathan Coe "hicpp-member-init"); 761bfcba8cSAlexander Kornienko CheckFactories.registerCheck<performance::MoveConstArgCheck>( 77a7358038SJonas Toth "hicpp-move-const-arg"); 7888232264SJonathan Coe CheckFactories.registerCheck<misc::NewDeleteOverloadsCheck>( 7988232264SJonathan Coe "hicpp-new-delete-operators"); 801bfcba8cSAlexander Kornienko CheckFactories.registerCheck<performance::NoexceptMoveConstructorCheck>( 8188232264SJonathan Coe "hicpp-noexcept-move"); 82a7358038SJonas Toth CheckFactories 83a7358038SJonas Toth .registerCheck<cppcoreguidelines::ProBoundsArrayToPointerDecayCheck>( 84a7358038SJonas Toth "hicpp-no-array-decay"); 8588232264SJonathan Coe CheckFactories.registerCheck<NoAssemblerCheck>("hicpp-no-assembler"); 86a7358038SJonas Toth CheckFactories.registerCheck<cppcoreguidelines::NoMallocCheck>( 87a7358038SJonas Toth "hicpp-no-malloc"); 8888232264SJonathan Coe CheckFactories 8988232264SJonathan Coe .registerCheck<cppcoreguidelines::SpecialMemberFunctionsCheck>( 9088232264SJonathan Coe "hicpp-special-member-functions"); 91a7358038SJonas Toth CheckFactories.registerCheck<misc::StaticAssertCheck>( 92a7358038SJonas Toth "hicpp-static-assert"); 93a7358038SJonas Toth CheckFactories.registerCheck<modernize::UseAutoCheck>("hicpp-use-auto"); 94eb9d9444SAlexander Kornienko CheckFactories.registerCheck<bugprone::UndelegatedConstructorCheck>( 9588232264SJonathan Coe "hicpp-undelegated-constructor"); 96a7358038SJonas Toth CheckFactories.registerCheck<modernize::UseEmplaceCheck>( 97a7358038SJonas Toth "hicpp-use-emplace"); 9888232264SJonathan Coe CheckFactories.registerCheck<modernize::UseEqualsDefaultCheck>( 9988232264SJonathan Coe "hicpp-use-equals-default"); 10088232264SJonathan Coe CheckFactories.registerCheck<modernize::UseEqualsDeleteCheck>( 10188232264SJonathan Coe "hicpp-use-equals-delete"); 102a7358038SJonas Toth CheckFactories.registerCheck<modernize::UseNoexceptCheck>( 103a7358038SJonas Toth "hicpp-use-noexcept"); 104a7358038SJonas Toth CheckFactories.registerCheck<modernize::UseNullptrCheck>( 105a7358038SJonas Toth "hicpp-use-nullptr"); 10688232264SJonathan Coe CheckFactories.registerCheck<modernize::UseOverrideCheck>( 10788232264SJonathan Coe "hicpp-use-override"); 10808701ec7SRoman Lebedev CheckFactories.registerCheck<readability::UppercaseLiteralSuffixCheck>( 10908701ec7SRoman Lebedev "hicpp-uppercase-literal-suffix"); 110a7358038SJonas Toth CheckFactories.registerCheck<cppcoreguidelines::ProTypeVarargCheck>( 111a7358038SJonas Toth "hicpp-vararg"); 112dbdbabf2SAaron Ballman } 113dbdbabf2SAaron Ballman }; 114dbdbabf2SAaron Ballman 115dbdbabf2SAaron Ballman // Register the HICPPModule using this statically initialized variable. 116dbdbabf2SAaron Ballman static ClangTidyModuleRegistry::Add<HICPPModule> 117dbdbabf2SAaron Ballman X("hicpp-module", "Adds High-Integrity C++ checks."); 118dbdbabf2SAaron Ballman 119dbdbabf2SAaron Ballman } // namespace hicpp 120dbdbabf2SAaron Ballman 121dbdbabf2SAaron Ballman // This anchor is used to force the linker to link in the generated object file 122dbdbabf2SAaron Ballman // and thus register the HICPPModule. 123dbdbabf2SAaron Ballman volatile int HICPPModuleAnchorSource = 0; 124dbdbabf2SAaron Ballman 1257d2ea6c4SCarlos Galvez } // namespace clang::tidy 126