136206206SYan Wang //===--- AndroidTidyModule.cpp - clang-tidy--------------------------------===// 236206206SYan Wang // 336206206SYan Wang // The LLVM Compiler Infrastructure 436206206SYan Wang // 536206206SYan Wang // This file is distributed under the University of Illinois Open Source 636206206SYan Wang // License. See LICENSE.TXT for details. 736206206SYan Wang // 836206206SYan Wang //===----------------------------------------------------------------------===// 936206206SYan Wang 1036206206SYan Wang #include "../ClangTidy.h" 1136206206SYan Wang #include "../ClangTidyModule.h" 1236206206SYan Wang #include "../ClangTidyModuleRegistry.h" 130b974147SYan Wang #include "CloexecCreatCheck.h" 1456650e7fSChih-Hung Hsieh #include "CloexecDupCheck.h" 1524340252SYan Wang #include "CloexecFopenCheck.h" 16*2e6f9a16SChih-Hung Hsieh #include "CloexecInotifyInitCheck.h" 17b21739f9SYan Wang #include "CloexecMemfdCreateCheck.h" 18600a6133SYan Wang #include "CloexecOpenCheck.h" 19b38045d0SYan Wang #include "CloexecSocketCheck.h" 2036206206SYan Wang 2136206206SYan Wang using namespace clang::ast_matchers; 2236206206SYan Wang 2336206206SYan Wang namespace clang { 2436206206SYan Wang namespace tidy { 2536206206SYan Wang namespace android { 2636206206SYan Wang 2736206206SYan Wang /// This module is for Android specific checks. 2836206206SYan Wang class AndroidModule : public ClangTidyModule { 2936206206SYan Wang public: 3036206206SYan Wang void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override { 310b974147SYan Wang CheckFactories.registerCheck<CloexecCreatCheck>("android-cloexec-creat"); 3256650e7fSChih-Hung Hsieh CheckFactories.registerCheck<CloexecDupCheck>("android-cloexec-dup"); 3324340252SYan Wang CheckFactories.registerCheck<CloexecFopenCheck>("android-cloexec-fopen"); 34*2e6f9a16SChih-Hung Hsieh CheckFactories.registerCheck<CloexecInotifyInitCheck>( 35*2e6f9a16SChih-Hung Hsieh "android-cloexec-inotify-init"); 36b21739f9SYan Wang CheckFactories.registerCheck<CloexecMemfdCreateCheck>( 37b21739f9SYan Wang "android-cloexec-memfd-create"); 38600a6133SYan Wang CheckFactories.registerCheck<CloexecOpenCheck>("android-cloexec-open"); 39b38045d0SYan Wang CheckFactories.registerCheck<CloexecSocketCheck>("android-cloexec-socket"); 4036206206SYan Wang } 4136206206SYan Wang }; 4236206206SYan Wang 4336206206SYan Wang // Register the AndroidTidyModule using this statically initialized variable. 4436206206SYan Wang static ClangTidyModuleRegistry::Add<AndroidModule> 4536206206SYan Wang X("android-module", "Adds Android platform checks."); 4636206206SYan Wang 4736206206SYan Wang } // namespace android 4836206206SYan Wang 4936206206SYan Wang // This anchor is used to force the linker to link in the generated object file 5036206206SYan Wang // and thus register the AndroidModule. 5136206206SYan Wang volatile int AndroidModuleAnchorSource = 0; 5236206206SYan Wang 5336206206SYan Wang } // namespace tidy 5436206206SYan Wang } // namespace clang 55