1 //===--- PortabilityTidyModule.cpp - clang-tidy ---------------------------===//
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
7 //===----------------------------------------------------------------------===//
9 #include "../ClangTidy.h"
10 #include "../ClangTidyModule.h"
11 #include "../ClangTidyModuleRegistry.h"
12 #include "RestrictSystemIncludesCheck.h"
13 #include "SIMDIntrinsicsCheck.h"
14 #include "StdAllocatorConstCheck.h"
15 #include "TemplateVirtualMemberFunctionCheck.h"
17 namespace clang::tidy
{
18 namespace portability
{
20 class PortabilityModule
: public ClangTidyModule
{
22 void addCheckFactories(ClangTidyCheckFactories
&CheckFactories
) override
{
23 CheckFactories
.registerCheck
<RestrictSystemIncludesCheck
>(
24 "portability-restrict-system-includes");
25 CheckFactories
.registerCheck
<SIMDIntrinsicsCheck
>(
26 "portability-simd-intrinsics");
27 CheckFactories
.registerCheck
<StdAllocatorConstCheck
>(
28 "portability-std-allocator-const");
29 CheckFactories
.registerCheck
<TemplateVirtualMemberFunctionCheck
>(
30 "portability-template-virtual-member-function");
34 // Register the PortabilityModule using this statically initialized variable.
35 static ClangTidyModuleRegistry::Add
<PortabilityModule
>
36 X("portability-module", "Adds portability-related checks.");
38 } // namespace portability
40 // This anchor is used to force the linker to link in the generated object file
41 // and thus register the PortabilityModule.
42 volatile int PortabilityModuleAnchorSource
= 0;
44 } // namespace clang::tidy