xref: /llvm-project/clang-tools-extra/clang-tidy/concurrency/ConcurrencyTidyModule.cpp (revision 7d2ea6c422d3f5712b7253407005e1a465a76946)
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