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