xref: /llvm-project/clang-tools-extra/clang-tidy/abseil/AbseilTidyModule.cpp (revision 7d2ea6c422d3f5712b7253407005e1a465a76946)
140571b7cSHaojian Wu //===------- AbseilTidyModule.cpp - clang-tidy ----------------------------===//
240571b7cSHaojian Wu //
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
640571b7cSHaojian Wu //
740571b7cSHaojian Wu //===----------------------------------------------------------------------===//
840571b7cSHaojian Wu 
940571b7cSHaojian Wu #include "../ClangTidy.h"
1040571b7cSHaojian Wu #include "../ClangTidyModule.h"
1140571b7cSHaojian Wu #include "../ClangTidyModuleRegistry.h"
1216b07c86SCJ Johnson #include "CleanupCtadCheck.h"
13722191beSHyrum Wright #include "DurationAdditionCheck.h"
1400f1d767SJonas Toth #include "DurationComparisonCheck.h"
15b60de17bSHyrum Wright #include "DurationConversionCastCheck.h"
165cd630d3SHaojian Wu #include "DurationDivisionCheck.h"
17618c0bc3SJonas Toth #include "DurationFactoryFloatCheck.h"
18639c87efSAaron Ballman #include "DurationFactoryScaleCheck.h"
1935cb7e9fSHyrum Wright #include "DurationSubtractionCheck.h"
201c250bf2SHyrum Wright #include "DurationUnnecessaryConversionCheck.h"
21279d72d3SHaojian Wu #include "FasterStrsplitDelimiterCheck.h"
2251aadb46SJonas Toth #include "NoInternalDependenciesCheck.h"
23d2f7b04dSHaojian Wu #include "NoNamespaceCheck.h"
24ca5f775dSAaron Ballman #include "RedundantStrcatCallsCheck.h"
25a22d24a3SAaron Ballman #include "StrCatAppendCheck.h"
267cfdff7bSTom Lokovic #include "StringFindStartswithCheck.h"
277cfdff7bSTom Lokovic #include "StringFindStrContainsCheck.h"
281603447bSHyrum Wright #include "TimeComparisonCheck.h"
29c526e026SHyrum Wright #include "TimeSubtractionCheck.h"
302bbbd8beSEric Fiselier #include "UpgradeDurationConversionsCheck.h"
3140571b7cSHaojian Wu 
32*7d2ea6c4SCarlos Galvez namespace clang::tidy {
3340571b7cSHaojian Wu namespace abseil {
3440571b7cSHaojian Wu 
3540571b7cSHaojian Wu class AbseilModule : public ClangTidyModule {
3640571b7cSHaojian Wu public:
addCheckFactories(ClangTidyCheckFactories & CheckFactories)3740571b7cSHaojian Wu   void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
3816b07c86SCJ Johnson     CheckFactories.registerCheck<CleanupCtadCheck>("abseil-cleanup-ctad");
39722191beSHyrum Wright     CheckFactories.registerCheck<DurationAdditionCheck>(
40722191beSHyrum Wright         "abseil-duration-addition");
4100f1d767SJonas Toth     CheckFactories.registerCheck<DurationComparisonCheck>(
4200f1d767SJonas Toth         "abseil-duration-comparison");
43b60de17bSHyrum Wright     CheckFactories.registerCheck<DurationConversionCastCheck>(
44b60de17bSHyrum Wright         "abseil-duration-conversion-cast");
455cd630d3SHaojian Wu     CheckFactories.registerCheck<DurationDivisionCheck>(
465cd630d3SHaojian Wu         "abseil-duration-division");
47618c0bc3SJonas Toth     CheckFactories.registerCheck<DurationFactoryFloatCheck>(
48618c0bc3SJonas Toth         "abseil-duration-factory-float");
49639c87efSAaron Ballman     CheckFactories.registerCheck<DurationFactoryScaleCheck>(
50639c87efSAaron Ballman         "abseil-duration-factory-scale");
5135cb7e9fSHyrum Wright     CheckFactories.registerCheck<DurationSubtractionCheck>(
5235cb7e9fSHyrum Wright         "abseil-duration-subtraction");
531c250bf2SHyrum Wright     CheckFactories.registerCheck<DurationUnnecessaryConversionCheck>(
541c250bf2SHyrum Wright         "abseil-duration-unnecessary-conversion");
55279d72d3SHaojian Wu     CheckFactories.registerCheck<FasterStrsplitDelimiterCheck>(
56279d72d3SHaojian Wu         "abseil-faster-strsplit-delimiter");
5751aadb46SJonas Toth     CheckFactories.registerCheck<NoInternalDependenciesCheck>(
5851aadb46SJonas Toth         "abseil-no-internal-dependencies");
59d2f7b04dSHaojian Wu     CheckFactories.registerCheck<NoNamespaceCheck>("abseil-no-namespace");
60ca5f775dSAaron Ballman     CheckFactories.registerCheck<RedundantStrcatCallsCheck>(
61ca5f775dSAaron Ballman         "abseil-redundant-strcat-calls");
62a22d24a3SAaron Ballman     CheckFactories.registerCheck<StrCatAppendCheck>(
63a22d24a3SAaron Ballman         "abseil-str-cat-append");
6404d38c5fSEugene Zelenko     CheckFactories.registerCheck<StringFindStartswithCheck>(
6504d38c5fSEugene Zelenko         "abseil-string-find-startswith");
667cfdff7bSTom Lokovic     CheckFactories.registerCheck<StringFindStrContainsCheck>(
677cfdff7bSTom Lokovic         "abseil-string-find-str-contains");
681603447bSHyrum Wright     CheckFactories.registerCheck<TimeComparisonCheck>(
691603447bSHyrum Wright         "abseil-time-comparison");
70c526e026SHyrum Wright     CheckFactories.registerCheck<TimeSubtractionCheck>(
71c526e026SHyrum Wright         "abseil-time-subtraction");
722bbbd8beSEric Fiselier     CheckFactories.registerCheck<UpgradeDurationConversionsCheck>(
732bbbd8beSEric Fiselier         "abseil-upgrade-duration-conversions");
7440571b7cSHaojian Wu   }
7540571b7cSHaojian Wu };
7640571b7cSHaojian Wu 
7740571b7cSHaojian Wu // Register the AbseilModule using this statically initialized variable.
7840571b7cSHaojian Wu static ClangTidyModuleRegistry::Add<AbseilModule> X("abseil-module",
7940571b7cSHaojian Wu                                                     "Add Abseil checks.");
8040571b7cSHaojian Wu 
8140571b7cSHaojian Wu } // namespace abseil
8240571b7cSHaojian Wu 
8340571b7cSHaojian Wu // This anchor is used to force the linker to link in the generated object file
8440571b7cSHaojian Wu // and thus register the AbseilModule.
8540571b7cSHaojian Wu volatile int AbseilModuleAnchorSource = 0;
8640571b7cSHaojian Wu 
87*7d2ea6c4SCarlos Galvez } // namespace clang::tidy
88