xref: /llvm-project/clang-tools-extra/clang-tidy/hicpp/HICPPTidyModule.cpp (revision f03f1fee695a9d1ed9a7cd5d272cdfd2224fa30c)
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