clang-tools  4.0.0
HeaderGuardCheck.h
Go to the documentation of this file.
1 //===--- HeaderGuardCheck.h - clang-tidy ------------------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_LLVM_HEADER_GUARD_CHECK_H
11 #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_LLVM_HEADER_GUARD_CHECK_H
12 
13 #include "../utils/HeaderGuard.h"
14 
15 namespace clang {
16 namespace tidy {
17 namespace llvm {
18 
19 /// Finds and fixes header guards that do not adhere to LLVM style.
20 /// For the user-facing documentation see:
21 /// http://clang.llvm.org/extra/clang-tidy/checks/llvm-header-guard.html
22 /// The check supports these options:
23 /// - `HeaderFileExtensions`: a comma-separated list of filename extensions of
24 /// header files (The filename extension should not contain "." prefix).
25 /// ",h,hh,hpp,hxx" by default.
26 /// For extension-less header files, using an empty string or leaving an
27 /// empty string between "," if there are other filename extensions.
29 public:
31 
32  void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
33  bool shouldSuggestEndifComment(StringRef Filename) override { return false; }
34  bool shouldFixHeaderGuard(StringRef Filename) override;
35  std::string getHeaderGuard(StringRef Filename, StringRef OldGuard) override;
36 
37 private:
38  std::string RawStringHeaderFileExtensions;
39  utils::HeaderFileExtensionsSet HeaderFileExtensions;
40 };
41 
42 } // namespace llvm
43 } // namespace tidy
44 } // namespace clang
45 
46 #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_LLVM_HEADER_GUARD_CHECK_H
void storeOptions(ClangTidyOptions::OptionMap &Opts) override
Should store all options supported by this check with their current values or default values for opti...
const std::string Name
Definition: USRFinder.cpp:164
Finds and fixes header guards.
Definition: HeaderGuard.h:27
LLVMHeaderGuardCheck(StringRef Name, ClangTidyContext *Context)
std::string getHeaderGuard(StringRef Filename, StringRef OldGuard) override
Gets the canonical header guard for a file.
std::string Filename
Filename as a string.
llvm::SmallSet< llvm::StringRef, 5 > HeaderFileExtensionsSet
bool shouldSuggestEndifComment(StringRef Filename) override
Returns true if the check should suggest inserting a trailing comment on the #endif of the header gua...
std::map< std::string, std::string > OptionMap
ClangTidyContext & Context
Definition: ClangTidy.cpp:87
Every ClangTidyCheck reports errors through a DiagnosticsEngine provided by this context.
Finds and fixes header guards that do not adhere to LLVM style.
bool shouldFixHeaderGuard(StringRef Filename) override
Returns true if the check should suggest changing an existing header guard to the string returned by ...