xref: /llvm-project/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.h (revision cc38cd856d9a9df77d5d727377e38a891807774b)
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