1 | //===--- BugproneTidyModule.cpp - clang-tidy ------------------------------===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #include "../ClangTidy.h" |
10 | #include "../ClangTidyModule.h" |
11 | #include "../ClangTidyModuleRegistry.h" |
12 | #include "ArgumentCommentCheck.h" |
13 | #include "AssertSideEffectCheck.h" |
14 | #include "AssignmentInIfConditionCheck.h" |
15 | #include "BadSignalToKillThreadCheck.h" |
16 | #include "BitwisePointerCastCheck.h" |
17 | #include "BoolPointerImplicitConversionCheck.h" |
18 | #include "BranchCloneCheck.h" |
19 | #include "CapturingThisInMemberVariableCheck.h" |
20 | #include "CastingThroughVoidCheck.h" |
21 | #include "ChainedComparisonCheck.h" |
22 | #include "ComparePointerToMemberVirtualFunctionCheck.h" |
23 | #include "CopyConstructorInitCheck.h" |
24 | #include "CrtpConstructorAccessibilityCheck.h" |
25 | #include "DanglingHandleCheck.h" |
26 | #include "DynamicStaticInitializersCheck.h" |
27 | #include "EasilySwappableParametersCheck.h" |
28 | #include "EmptyCatchCheck.h" |
29 | #include "ExceptionEscapeCheck.h" |
30 | #include "FoldInitTypeCheck.h" |
31 | #include "ForwardDeclarationNamespaceCheck.h" |
32 | #include "ForwardingReferenceOverloadCheck.h" |
33 | #include "ImplicitWideningOfMultiplicationResultCheck.h" |
34 | #include "InaccurateEraseCheck.h" |
35 | #include "IncDecInConditionsCheck.h" |
36 | #include "IncorrectEnableIfCheck.h" |
37 | #include "IncorrectEnableSharedFromThisCheck.h" |
38 | #include "IncorrectRoundingsCheck.h" |
39 | #include "InfiniteLoopCheck.h" |
40 | #include "IntegerDivisionCheck.h" |
41 | #include "LambdaFunctionNameCheck.h" |
42 | #include "MacroParenthesesCheck.h" |
43 | #include "MacroRepeatedSideEffectsCheck.h" |
44 | #include "MisleadingSetterOfReferenceCheck.h" |
45 | #include "MisplacedOperatorInStrlenInAllocCheck.h" |
46 | #include "MisplacedPointerArithmeticInAllocCheck.h" |
47 | #include "MisplacedWideningCastCheck.h" |
48 | #include "MoveForwardingReferenceCheck.h" |
49 | #include "MultiLevelImplicitPointerConversionCheck.h" |
50 | #include "MultipleNewInOneExpressionCheck.h" |
51 | #include "MultipleStatementMacroCheck.h" |
52 | #include "NarrowingConversionsCheck.h" |
53 | #include "NoEscapeCheck.h" |
54 | #include "NonZeroEnumToBoolConversionCheck.h" |
55 | #include "NondeterministicPointerIterationOrderCheck.h" |
56 | #include "NotNullTerminatedResultCheck.h" |
57 | #include "OptionalValueConversionCheck.h" |
58 | #include "ParentVirtualCallCheck.h" |
59 | #include "PointerArithmeticOnPolymorphicObjectCheck.h" |
60 | #include "PosixReturnCheck.h" |
61 | #include "RedundantBranchConditionCheck.h" |
62 | #include "ReservedIdentifierCheck.h" |
63 | #include "ReturnConstRefFromParameterCheck.h" |
64 | #include "SharedPtrArrayMismatchCheck.h" |
65 | #include "SignalHandlerCheck.h" |
66 | #include "SignedCharMisuseCheck.h" |
67 | #include "SizeofContainerCheck.h" |
68 | #include "SizeofExpressionCheck.h" |
69 | #include "SpuriouslyWakeUpFunctionsCheck.h" |
70 | #include "StandaloneEmptyCheck.h" |
71 | #include "StringConstructorCheck.h" |
72 | #include "StringIntegerAssignmentCheck.h" |
73 | #include "StringLiteralWithEmbeddedNulCheck.h" |
74 | #include "StringviewNullptrCheck.h" |
75 | #include "SuspiciousEnumUsageCheck.h" |
76 | #include "SuspiciousIncludeCheck.h" |
77 | #include "SuspiciousMemoryComparisonCheck.h" |
78 | #include "SuspiciousMemsetUsageCheck.h" |
79 | #include "SuspiciousMissingCommaCheck.h" |
80 | #include "SuspiciousReallocUsageCheck.h" |
81 | #include "SuspiciousSemicolonCheck.h" |
82 | #include "SuspiciousStringCompareCheck.h" |
83 | #include "SuspiciousStringviewDataUsageCheck.h" |
84 | #include "SwappedArgumentsCheck.h" |
85 | #include "SwitchMissingDefaultCaseCheck.h" |
86 | #include "TaggedUnionMemberCountCheck.h" |
87 | #include "TerminatingContinueCheck.h" |
88 | #include "ThrowKeywordMissingCheck.h" |
89 | #include "TooSmallLoopVariableCheck.h" |
90 | #include "UncheckedOptionalAccessCheck.h" |
91 | #include "UndefinedMemoryManipulationCheck.h" |
92 | #include "UndelegatedConstructorCheck.h" |
93 | #include "UnhandledExceptionAtNewCheck.h" |
94 | #include "UnhandledSelfAssignmentCheck.h" |
95 | #include "UnintendedCharOstreamOutputCheck.h" |
96 | #include "UniquePtrArrayMismatchCheck.h" |
97 | #include "UnsafeFunctionsCheck.h" |
98 | #include "UnusedLocalNonTrivialVariableCheck.h" |
99 | #include "UnusedRaiiCheck.h" |
100 | #include "UnusedReturnValueCheck.h" |
101 | #include "UseAfterMoveCheck.h" |
102 | #include "VirtualNearMissCheck.h" |
103 | |
104 | namespace clang::tidy { |
105 | namespace bugprone { |
106 | |
107 | class BugproneModule : public ClangTidyModule { |
108 | public: |
109 | void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override { |
110 | CheckFactories.registerCheck<ArgumentCommentCheck>( |
111 | CheckName: "bugprone-argument-comment" ); |
112 | CheckFactories.registerCheck<AssertSideEffectCheck>( |
113 | CheckName: "bugprone-assert-side-effect" ); |
114 | CheckFactories.registerCheck<AssignmentInIfConditionCheck>( |
115 | CheckName: "bugprone-assignment-in-if-condition" ); |
116 | CheckFactories.registerCheck<BadSignalToKillThreadCheck>( |
117 | CheckName: "bugprone-bad-signal-to-kill-thread" ); |
118 | CheckFactories.registerCheck<BitwisePointerCastCheck>( |
119 | CheckName: "bugprone-bitwise-pointer-cast" ); |
120 | CheckFactories.registerCheck<BoolPointerImplicitConversionCheck>( |
121 | CheckName: "bugprone-bool-pointer-implicit-conversion" ); |
122 | CheckFactories.registerCheck<BranchCloneCheck>(CheckName: "bugprone-branch-clone" ); |
123 | CheckFactories.registerCheck<CapturingThisInMemberVariableCheck>( |
124 | CheckName: "bugprone-capturing-this-in-member-variable" ); |
125 | CheckFactories.registerCheck<CastingThroughVoidCheck>( |
126 | CheckName: "bugprone-casting-through-void" ); |
127 | CheckFactories.registerCheck<ChainedComparisonCheck>( |
128 | CheckName: "bugprone-chained-comparison" ); |
129 | CheckFactories.registerCheck<ComparePointerToMemberVirtualFunctionCheck>( |
130 | CheckName: "bugprone-compare-pointer-to-member-virtual-function" ); |
131 | CheckFactories.registerCheck<CopyConstructorInitCheck>( |
132 | CheckName: "bugprone-copy-constructor-init" ); |
133 | CheckFactories.registerCheck<DanglingHandleCheck>( |
134 | CheckName: "bugprone-dangling-handle" ); |
135 | CheckFactories.registerCheck<DynamicStaticInitializersCheck>( |
136 | CheckName: "bugprone-dynamic-static-initializers" ); |
137 | CheckFactories.registerCheck<EasilySwappableParametersCheck>( |
138 | CheckName: "bugprone-easily-swappable-parameters" ); |
139 | CheckFactories.registerCheck<EmptyCatchCheck>(CheckName: "bugprone-empty-catch" ); |
140 | CheckFactories.registerCheck<ExceptionEscapeCheck>( |
141 | CheckName: "bugprone-exception-escape" ); |
142 | CheckFactories.registerCheck<FoldInitTypeCheck>(CheckName: "bugprone-fold-init-type" ); |
143 | CheckFactories.registerCheck<ForwardDeclarationNamespaceCheck>( |
144 | CheckName: "bugprone-forward-declaration-namespace" ); |
145 | CheckFactories.registerCheck<ForwardingReferenceOverloadCheck>( |
146 | CheckName: "bugprone-forwarding-reference-overload" ); |
147 | CheckFactories.registerCheck<ImplicitWideningOfMultiplicationResultCheck>( |
148 | CheckName: "bugprone-implicit-widening-of-multiplication-result" ); |
149 | CheckFactories.registerCheck<InaccurateEraseCheck>( |
150 | CheckName: "bugprone-inaccurate-erase" ); |
151 | CheckFactories.registerCheck<IncorrectEnableIfCheck>( |
152 | CheckName: "bugprone-incorrect-enable-if" ); |
153 | CheckFactories.registerCheck<IncorrectEnableSharedFromThisCheck>( |
154 | CheckName: "bugprone-incorrect-enable-shared-from-this" ); |
155 | CheckFactories.registerCheck<UnintendedCharOstreamOutputCheck>( |
156 | CheckName: "bugprone-unintended-char-ostream-output" ); |
157 | CheckFactories.registerCheck<ReturnConstRefFromParameterCheck>( |
158 | CheckName: "bugprone-return-const-ref-from-parameter" ); |
159 | CheckFactories.registerCheck<SwitchMissingDefaultCaseCheck>( |
160 | CheckName: "bugprone-switch-missing-default-case" ); |
161 | CheckFactories.registerCheck<IncDecInConditionsCheck>( |
162 | CheckName: "bugprone-inc-dec-in-conditions" ); |
163 | CheckFactories.registerCheck<IncorrectRoundingsCheck>( |
164 | CheckName: "bugprone-incorrect-roundings" ); |
165 | CheckFactories.registerCheck<InfiniteLoopCheck>(CheckName: "bugprone-infinite-loop" ); |
166 | CheckFactories.registerCheck<IntegerDivisionCheck>( |
167 | CheckName: "bugprone-integer-division" ); |
168 | CheckFactories.registerCheck<LambdaFunctionNameCheck>( |
169 | CheckName: "bugprone-lambda-function-name" ); |
170 | CheckFactories.registerCheck<MacroParenthesesCheck>( |
171 | CheckName: "bugprone-macro-parentheses" ); |
172 | CheckFactories.registerCheck<MacroRepeatedSideEffectsCheck>( |
173 | CheckName: "bugprone-macro-repeated-side-effects" ); |
174 | CheckFactories.registerCheck<MisleadingSetterOfReferenceCheck>( |
175 | CheckName: "bugprone-misleading-setter-of-reference" ); |
176 | CheckFactories.registerCheck<MisplacedOperatorInStrlenInAllocCheck>( |
177 | CheckName: "bugprone-misplaced-operator-in-strlen-in-alloc" ); |
178 | CheckFactories.registerCheck<MisplacedPointerArithmeticInAllocCheck>( |
179 | CheckName: "bugprone-misplaced-pointer-arithmetic-in-alloc" ); |
180 | CheckFactories.registerCheck<MisplacedWideningCastCheck>( |
181 | CheckName: "bugprone-misplaced-widening-cast" ); |
182 | CheckFactories.registerCheck<MoveForwardingReferenceCheck>( |
183 | CheckName: "bugprone-move-forwarding-reference" ); |
184 | CheckFactories.registerCheck<MultiLevelImplicitPointerConversionCheck>( |
185 | CheckName: "bugprone-multi-level-implicit-pointer-conversion" ); |
186 | CheckFactories.registerCheck<MultipleNewInOneExpressionCheck>( |
187 | CheckName: "bugprone-multiple-new-in-one-expression" ); |
188 | CheckFactories.registerCheck<MultipleStatementMacroCheck>( |
189 | CheckName: "bugprone-multiple-statement-macro" ); |
190 | CheckFactories.registerCheck<NondeterministicPointerIterationOrderCheck>( |
191 | CheckName: "bugprone-nondeterministic-pointer-iteration-order" ); |
192 | CheckFactories.registerCheck<OptionalValueConversionCheck>( |
193 | CheckName: "bugprone-optional-value-conversion" ); |
194 | CheckFactories.registerCheck<PointerArithmeticOnPolymorphicObjectCheck>( |
195 | CheckName: "bugprone-pointer-arithmetic-on-polymorphic-object" ); |
196 | CheckFactories.registerCheck<RedundantBranchConditionCheck>( |
197 | CheckName: "bugprone-redundant-branch-condition" ); |
198 | CheckFactories.registerCheck<NarrowingConversionsCheck>( |
199 | CheckName: "bugprone-narrowing-conversions" ); |
200 | CheckFactories.registerCheck<NoEscapeCheck>(CheckName: "bugprone-no-escape" ); |
201 | CheckFactories.registerCheck<NonZeroEnumToBoolConversionCheck>( |
202 | CheckName: "bugprone-non-zero-enum-to-bool-conversion" ); |
203 | CheckFactories.registerCheck<NotNullTerminatedResultCheck>( |
204 | CheckName: "bugprone-not-null-terminated-result" ); |
205 | CheckFactories.registerCheck<ParentVirtualCallCheck>( |
206 | CheckName: "bugprone-parent-virtual-call" ); |
207 | CheckFactories.registerCheck<PosixReturnCheck>(CheckName: "bugprone-posix-return" ); |
208 | CheckFactories.registerCheck<ReservedIdentifierCheck>( |
209 | CheckName: "bugprone-reserved-identifier" ); |
210 | CheckFactories.registerCheck<SharedPtrArrayMismatchCheck>( |
211 | CheckName: "bugprone-shared-ptr-array-mismatch" ); |
212 | CheckFactories.registerCheck<SignalHandlerCheck>(CheckName: "bugprone-signal-handler" ); |
213 | CheckFactories.registerCheck<SignedCharMisuseCheck>( |
214 | CheckName: "bugprone-signed-char-misuse" ); |
215 | CheckFactories.registerCheck<SizeofContainerCheck>( |
216 | CheckName: "bugprone-sizeof-container" ); |
217 | CheckFactories.registerCheck<SizeofExpressionCheck>( |
218 | CheckName: "bugprone-sizeof-expression" ); |
219 | CheckFactories.registerCheck<SpuriouslyWakeUpFunctionsCheck>( |
220 | CheckName: "bugprone-spuriously-wake-up-functions" ); |
221 | CheckFactories.registerCheck<StandaloneEmptyCheck>( |
222 | CheckName: "bugprone-standalone-empty" ); |
223 | CheckFactories.registerCheck<StringConstructorCheck>( |
224 | CheckName: "bugprone-string-constructor" ); |
225 | CheckFactories.registerCheck<StringIntegerAssignmentCheck>( |
226 | CheckName: "bugprone-string-integer-assignment" ); |
227 | CheckFactories.registerCheck<StringLiteralWithEmbeddedNulCheck>( |
228 | CheckName: "bugprone-string-literal-with-embedded-nul" ); |
229 | CheckFactories.registerCheck<StringviewNullptrCheck>( |
230 | CheckName: "bugprone-stringview-nullptr" ); |
231 | CheckFactories.registerCheck<SuspiciousEnumUsageCheck>( |
232 | CheckName: "bugprone-suspicious-enum-usage" ); |
233 | CheckFactories.registerCheck<SuspiciousIncludeCheck>( |
234 | CheckName: "bugprone-suspicious-include" ); |
235 | CheckFactories.registerCheck<SuspiciousMemoryComparisonCheck>( |
236 | CheckName: "bugprone-suspicious-memory-comparison" ); |
237 | CheckFactories.registerCheck<SuspiciousMemsetUsageCheck>( |
238 | CheckName: "bugprone-suspicious-memset-usage" ); |
239 | CheckFactories.registerCheck<SuspiciousMissingCommaCheck>( |
240 | CheckName: "bugprone-suspicious-missing-comma" ); |
241 | CheckFactories.registerCheck<SuspiciousReallocUsageCheck>( |
242 | CheckName: "bugprone-suspicious-realloc-usage" ); |
243 | CheckFactories.registerCheck<SuspiciousSemicolonCheck>( |
244 | CheckName: "bugprone-suspicious-semicolon" ); |
245 | CheckFactories.registerCheck<SuspiciousStringCompareCheck>( |
246 | CheckName: "bugprone-suspicious-string-compare" ); |
247 | CheckFactories.registerCheck<SuspiciousStringviewDataUsageCheck>( |
248 | CheckName: "bugprone-suspicious-stringview-data-usage" ); |
249 | CheckFactories.registerCheck<SwappedArgumentsCheck>( |
250 | CheckName: "bugprone-swapped-arguments" ); |
251 | CheckFactories.registerCheck<TaggedUnionMemberCountCheck>( |
252 | CheckName: "bugprone-tagged-union-member-count" ); |
253 | CheckFactories.registerCheck<TerminatingContinueCheck>( |
254 | CheckName: "bugprone-terminating-continue" ); |
255 | CheckFactories.registerCheck<ThrowKeywordMissingCheck>( |
256 | CheckName: "bugprone-throw-keyword-missing" ); |
257 | CheckFactories.registerCheck<TooSmallLoopVariableCheck>( |
258 | CheckName: "bugprone-too-small-loop-variable" ); |
259 | CheckFactories.registerCheck<UncheckedOptionalAccessCheck>( |
260 | CheckName: "bugprone-unchecked-optional-access" ); |
261 | CheckFactories.registerCheck<UndefinedMemoryManipulationCheck>( |
262 | CheckName: "bugprone-undefined-memory-manipulation" ); |
263 | CheckFactories.registerCheck<UndelegatedConstructorCheck>( |
264 | CheckName: "bugprone-undelegated-constructor" ); |
265 | CheckFactories.registerCheck<UnhandledSelfAssignmentCheck>( |
266 | CheckName: "bugprone-unhandled-self-assignment" ); |
267 | CheckFactories.registerCheck<UnhandledExceptionAtNewCheck>( |
268 | CheckName: "bugprone-unhandled-exception-at-new" ); |
269 | CheckFactories.registerCheck<UniquePtrArrayMismatchCheck>( |
270 | CheckName: "bugprone-unique-ptr-array-mismatch" ); |
271 | CheckFactories.registerCheck<CrtpConstructorAccessibilityCheck>( |
272 | CheckName: "bugprone-crtp-constructor-accessibility" ); |
273 | CheckFactories.registerCheck<UnsafeFunctionsCheck>( |
274 | CheckName: "bugprone-unsafe-functions" ); |
275 | CheckFactories.registerCheck<UnusedLocalNonTrivialVariableCheck>( |
276 | CheckName: "bugprone-unused-local-non-trivial-variable" ); |
277 | CheckFactories.registerCheck<UnusedRaiiCheck>(CheckName: "bugprone-unused-raii" ); |
278 | CheckFactories.registerCheck<UnusedReturnValueCheck>( |
279 | CheckName: "bugprone-unused-return-value" ); |
280 | CheckFactories.registerCheck<UseAfterMoveCheck>(CheckName: "bugprone-use-after-move" ); |
281 | CheckFactories.registerCheck<VirtualNearMissCheck>( |
282 | CheckName: "bugprone-virtual-near-miss" ); |
283 | } |
284 | }; |
285 | |
286 | } // namespace bugprone |
287 | |
288 | // Register the BugproneTidyModule using this statically initialized variable. |
289 | static ClangTidyModuleRegistry::Add<bugprone::BugproneModule> |
290 | X("bugprone-module" , "Adds checks for bugprone code constructs." ); |
291 | |
292 | // This anchor is used to force the linker to link in the generated object file |
293 | // and thus register the BugproneModule. |
294 | // NOLINTNEXTLINE(misc-use-internal-linkage) |
295 | volatile int BugproneModuleAnchorSource = 0; |
296 | |
297 | } // namespace clang::tidy |
298 | |