1512767ebSKim Viggedal //===--- AvoidNonConstGlobalVariablesCheck.h - clang-tidy -------*- C++ -*-===//
2512767ebSKim Viggedal //
3512767ebSKim Viggedal // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4512767ebSKim Viggedal // See https://llvm.org/LICENSE.txt for license information.
5512767ebSKim Viggedal // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6512767ebSKim Viggedal //
7512767ebSKim Viggedal //===----------------------------------------------------------------------===//
8512767ebSKim Viggedal 
9512767ebSKim Viggedal #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_AVOIDNONCONSTGLOBALVARIABLESCHECK_H
10512767ebSKim Viggedal #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_AVOIDNONCONSTGLOBALVARIABLESCHECK_H
11512767ebSKim Viggedal 
12512767ebSKim Viggedal #include "../ClangTidyCheck.h"
13512767ebSKim Viggedal 
144718da50SCarlos Galvez namespace clang::tidy::cppcoreguidelines {
15512767ebSKim Viggedal 
16512767ebSKim Viggedal /// Non-const global variables hide dependencies and make the dependencies
17512767ebSKim Viggedal /// subject to unpredictable changes.
18512767ebSKim Viggedal ///
19512767ebSKim Viggedal /// For the user-facing documentation see:
206e566bc5SRichard /// http://clang.llvm.org/extra/clang-tidy/checks/cppcoreguidelines/avoid-non-const-global-variables.html
21512767ebSKim Viggedal class AvoidNonConstGlobalVariablesCheck : public ClangTidyCheck {
22512767ebSKim Viggedal public:
23*7c50187bSPascal Jungblut   AvoidNonConstGlobalVariablesCheck(StringRef Name, ClangTidyContext *Context);
24512767ebSKim Viggedal   void registerMatchers(ast_matchers::MatchFinder *Finder) override;
25512767ebSKim Viggedal   void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
26*7c50187bSPascal Jungblut   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
27*7c50187bSPascal Jungblut 
28*7c50187bSPascal Jungblut private:
29*7c50187bSPascal Jungblut   const bool AllowInternalLinkage;
30512767ebSKim Viggedal };
31512767ebSKim Viggedal 
324718da50SCarlos Galvez } // namespace clang::tidy::cppcoreguidelines
33512767ebSKim Viggedal 
34512767ebSKim Viggedal #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CPPCOREGUIDELINES_AVOIDNONCONSTGLOBALVARIABLESCHECK_H
35