1 | //===--- tools/extra/clang-tidy/ClangTidyModule.cpp - Clang tidy tool -----===// |
---|---|
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | /// |
9 | /// \file Implements classes required to build clang-tidy modules. |
10 | /// |
11 | //===----------------------------------------------------------------------===// |
12 | |
13 | #include "ClangTidyModule.h" |
14 | #include "ClangTidyCheck.h" |
15 | |
16 | namespace clang::tidy { |
17 | |
18 | void ClangTidyCheckFactories::registerCheckFactory(StringRef Name, |
19 | CheckFactory Factory) { |
20 | Factories.insert_or_assign(Key: Name, Val: std::move(Factory)); |
21 | } |
22 | |
23 | std::vector<std::unique_ptr<ClangTidyCheck>> |
24 | ClangTidyCheckFactories::createChecks(ClangTidyContext *Context) const { |
25 | std::vector<std::unique_ptr<ClangTidyCheck>> Checks; |
26 | for (const auto &Factory : Factories) { |
27 | if (Context->isCheckEnabled(CheckName: Factory.getKey())) |
28 | Checks.emplace_back(args: Factory.getValue()(Factory.getKey(), Context)); |
29 | } |
30 | return Checks; |
31 | } |
32 | |
33 | std::vector<std::unique_ptr<ClangTidyCheck>> |
34 | ClangTidyCheckFactories::createChecksForLanguage( |
35 | ClangTidyContext *Context) const { |
36 | std::vector<std::unique_ptr<ClangTidyCheck>> Checks; |
37 | const LangOptions &LO = Context->getLangOpts(); |
38 | for (const auto &Factory : Factories) { |
39 | if (!Context->isCheckEnabled(CheckName: Factory.getKey())) |
40 | continue; |
41 | std::unique_ptr<ClangTidyCheck> Check = |
42 | Factory.getValue()(Factory.getKey(), Context); |
43 | if (Check->isLanguageVersionSupported(LangOpts: LO)) |
44 | Checks.push_back(x: std::move(Check)); |
45 | } |
46 | return Checks; |
47 | } |
48 | |
49 | ClangTidyOptions ClangTidyModule::getModuleOptions() { return {}; } |
50 | |
51 | } // namespace clang::tidy |
52 |