1abcd64ccSHaojian Wu //===--- ObjCTidyModule.cpp - clang-tidy --------------------------------===// 2abcd64ccSHaojian 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 6abcd64ccSHaojian Wu // 7abcd64ccSHaojian Wu //===----------------------------------------------------------------------===// 8abcd64ccSHaojian Wu 9abcd64ccSHaojian Wu #include "../ClangTidy.h" 10abcd64ccSHaojian Wu #include "../ClangTidyModule.h" 11abcd64ccSHaojian Wu #include "../ClangTidyModuleRegistry.h" 12aba8f320SVy Nguyen #include "AssertEquals.h" 138c348b33SYan Zhang #include "AvoidNSErrorInitCheck.h" 140151ddc2SMichael Wyman #include "DeallocInCategoryCheck.h" 15e010406eSHaojian Wu #include "ForbiddenSubclassingCheck.h" 162f6a5281SStephane Moore #include "MissingHashCheck.h" 1795a92995SRashmi Mudduluru #include "NSDateFormatterCheck.h" 1889f1321fSMichael Wyman #include "NSInvocationArgumentLifetimeCheck.h" 1952161a5aSBen Hamilton #include "PropertyDeclarationCheck.h" 20b0c1f8c0SStephane Moore #include "SuperSelfCheck.h" 21abcd64ccSHaojian Wu 22abcd64ccSHaojian Wu using namespace clang::ast_matchers; 23abcd64ccSHaojian Wu 24*7d2ea6c4SCarlos Galvez namespace clang::tidy { 25abcd64ccSHaojian Wu namespace objc { 26abcd64ccSHaojian Wu 27abcd64ccSHaojian Wu class ObjCModule : public ClangTidyModule { 28abcd64ccSHaojian Wu public: addCheckFactories(ClangTidyCheckFactories & CheckFactories)29abcd64ccSHaojian Wu void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override { 308c348b33SYan Zhang CheckFactories.registerCheck<AvoidNSErrorInitCheck>( 318c348b33SYan Zhang "objc-avoid-nserror-init"); 32aba8f320SVy Nguyen CheckFactories.registerCheck<AssertEquals>("objc-assert-equals"); 33aba8f320SVy Nguyen 340151ddc2SMichael Wyman CheckFactories.registerCheck<DeallocInCategoryCheck>( 350151ddc2SMichael Wyman "objc-dealloc-in-category"); 36e010406eSHaojian Wu CheckFactories.registerCheck<ForbiddenSubclassingCheck>( 37e010406eSHaojian Wu "objc-forbidden-subclassing"); 382f6a5281SStephane Moore CheckFactories.registerCheck<MissingHashCheck>( 392f6a5281SStephane Moore "objc-missing-hash"); 4095a92995SRashmi Mudduluru CheckFactories.registerCheck<NSDateFormatterCheck>("objc-nsdate-formatter"); 4189f1321fSMichael Wyman CheckFactories.registerCheck<NSInvocationArgumentLifetimeCheck>( 4289f1321fSMichael Wyman "objc-nsinvocation-argument-lifetime"); 4352161a5aSBen Hamilton CheckFactories.registerCheck<PropertyDeclarationCheck>( 4452161a5aSBen Hamilton "objc-property-declaration"); 45b0c1f8c0SStephane Moore CheckFactories.registerCheck<SuperSelfCheck>( 46b0c1f8c0SStephane Moore "objc-super-self"); 47abcd64ccSHaojian Wu } 48abcd64ccSHaojian Wu }; 49abcd64ccSHaojian Wu 50abcd64ccSHaojian Wu // Register the ObjCTidyModule using this statically initialized variable. 51abcd64ccSHaojian Wu static ClangTidyModuleRegistry::Add<ObjCModule> X( 52abcd64ccSHaojian Wu "objc-module", 53abcd64ccSHaojian Wu "Adds Objective-C lint checks."); 54abcd64ccSHaojian Wu 55abcd64ccSHaojian Wu } // namespace objc 56abcd64ccSHaojian Wu 57abcd64ccSHaojian Wu // This anchor is used to force the linker to link in the generated object file 58abcd64ccSHaojian Wu // and thus register the ObjCModule. 59abcd64ccSHaojian Wu volatile int ObjCModuleAnchorSource = 0; 60abcd64ccSHaojian Wu 61*7d2ea6c4SCarlos Galvez } // namespace clang::tidy 62