165d6d67fSCarlos Galvez //===--- UseAnonymousNamespaceCheck.h - clang-tidy --------------*- C++ -*-===// 265d6d67fSCarlos Galvez // 365d6d67fSCarlos Galvez // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 465d6d67fSCarlos Galvez // See https://llvm.org/LICENSE.txt for license information. 565d6d67fSCarlos Galvez // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 665d6d67fSCarlos Galvez // 765d6d67fSCarlos Galvez //===----------------------------------------------------------------------===// 865d6d67fSCarlos Galvez 965d6d67fSCarlos Galvez #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_USEANONYMOUSNAMESPACECHECK_H 1065d6d67fSCarlos Galvez #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_USEANONYMOUSNAMESPACECHECK_H 1165d6d67fSCarlos Galvez 1265d6d67fSCarlos Galvez #include "../ClangTidyCheck.h" 1335d9f873SCarlos Galvez #include "../utils/FileExtensionsUtils.h" 1465d6d67fSCarlos Galvez 154718da50SCarlos Galvez namespace clang::tidy::misc { 1665d6d67fSCarlos Galvez 1765d6d67fSCarlos Galvez /// Warns when using 'static' functions or variables at global scope, and 187fd83879SCarlos Galvez /// suggests moving them to an anonymous namespace. 1965d6d67fSCarlos Galvez /// 2065d6d67fSCarlos Galvez /// For the user-facing documentation see: 218d9828efSHaojian Wu /// http://clang.llvm.org/extra/clang-tidy/checks/misc/use-anonymous-namespace.html 2265d6d67fSCarlos Galvez class UseAnonymousNamespaceCheck : public ClangTidyCheck { 2365d6d67fSCarlos Galvez public: 2435d9f873SCarlos Galvez UseAnonymousNamespaceCheck(StringRef Name, ClangTidyContext *Context); isLanguageVersionSupported(const LangOptions & LangOpts)2565d6d67fSCarlos Galvez bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { 2665d6d67fSCarlos Galvez return LangOpts.CPlusPlus; 2765d6d67fSCarlos Galvez } 2865d6d67fSCarlos Galvez void registerMatchers(ast_matchers::MatchFinder *Finder) override; 2965d6d67fSCarlos Galvez void check(const ast_matchers::MatchFinder::MatchResult &Result) override; 3035d9f873SCarlos Galvez 3135d9f873SCarlos Galvez private: 32*5b37cddfSCarlos Galvez FileExtensionsSet HeaderFileExtensions; 3365d6d67fSCarlos Galvez }; 3465d6d67fSCarlos Galvez 354718da50SCarlos Galvez } // namespace clang::tidy::misc 3665d6d67fSCarlos Galvez 3765d6d67fSCarlos Galvez #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_USEANONYMOUSNAMESPACECHECK_H 38