18da7efbbSVasily Kulikov //===--- ConcurrencyTidyModule.cpp - clang-tidy ---------------------------===// 28da7efbbSVasily Kulikov // 38da7efbbSVasily Kulikov // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 48da7efbbSVasily Kulikov // See https://llvm.org/LICENSE.txt for license information. 58da7efbbSVasily Kulikov // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 68da7efbbSVasily Kulikov // 78da7efbbSVasily Kulikov //===----------------------------------------------------------------------===// 88da7efbbSVasily Kulikov 98da7efbbSVasily Kulikov #include "../ClangTidy.h" 108da7efbbSVasily Kulikov #include "../ClangTidyModule.h" 118da7efbbSVasily Kulikov #include "../ClangTidyModuleRegistry.h" 12cac5be49SVasily Kulikov #include "MtUnsafeCheck.h" 137dc7f0c2SBalázs Kéri #include "ThreadCanceltypeAsynchronousCheck.h" 148da7efbbSVasily Kulikov 15*7d2ea6c4SCarlos Galvez namespace clang::tidy { 168da7efbbSVasily Kulikov namespace concurrency { 178da7efbbSVasily Kulikov 188da7efbbSVasily Kulikov class ConcurrencyModule : public ClangTidyModule { 198da7efbbSVasily Kulikov public: addCheckFactories(ClangTidyCheckFactories & CheckFactories)20cac5be49SVasily Kulikov void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override { 21cac5be49SVasily Kulikov CheckFactories.registerCheck<concurrency::MtUnsafeCheck>( 22cac5be49SVasily Kulikov "concurrency-mt-unsafe"); 237dc7f0c2SBalázs Kéri CheckFactories.registerCheck<ThreadCanceltypeAsynchronousCheck>( 247dc7f0c2SBalázs Kéri "concurrency-thread-canceltype-asynchronous"); 25cac5be49SVasily Kulikov } 268da7efbbSVasily Kulikov }; 278da7efbbSVasily Kulikov 288da7efbbSVasily Kulikov } // namespace concurrency 298da7efbbSVasily Kulikov 308da7efbbSVasily Kulikov // Register the ConcurrencyTidyModule using this statically initialized variable. 318da7efbbSVasily Kulikov static ClangTidyModuleRegistry::Add<concurrency::ConcurrencyModule> 328da7efbbSVasily Kulikov X("concurrency-module", "Adds concurrency checks."); 338da7efbbSVasily Kulikov 348da7efbbSVasily Kulikov // This anchor is used to force the linker to link in the generated object file 358da7efbbSVasily Kulikov // and thus register the ConcurrencyModule. 368da7efbbSVasily Kulikov volatile int ConcurrencyModuleAnchorSource = 0; 378da7efbbSVasily Kulikov 38*7d2ea6c4SCarlos Galvez } // namespace clang::tidy 39