9#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_IDENTIFIERNAMINGCHECK_H
10#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_IDENTIFIERNAMINGCHECK_H
61 std::optional<CaseType>
Case;
80 std::optional<CaseType>
Case;
95 const llvm::StringMap<std::string> &StrMap)
const;
99 const NamedDecl *ND)
const;
104 const ClangTidyCheck::OptionsView &Options,
116 StringRef TypeName,
const NamedDecl *ND,
120 const CXXRecordDecl *CRD,
123 std::string
getEnumPrefix(
const EnumConstantDecl *ECD)
const;
129 : IsActive(false), IgnoreMainLikeFunctions(false),
130 TypedefInheritAnonTagConfig(false), AllowTrailingUnderscore(false) {}
131 FileStyle(SmallVectorImpl<std::optional<NamingStyle>> &&Styles,
133 bool CheckAnonFieldInParent,
bool TypedefInheritAnonTag,
134 bool AllowTrailingUnderscore)
135 : Styles(std::
move(Styles)), HNOption(std::
move(HNOption)),
136 IsActive(true), IgnoreMainLikeFunctions(IgnoreMainLike),
137 CheckAnonFieldInParentScope(CheckAnonFieldInParent),
138 TypedefInheritAnonTagConfig(TypedefInheritAnonTag),
139 AllowTrailingUnderscore(AllowTrailingUnderscore) {}
141 ArrayRef<std::optional<NamingStyle>>
getStyles()
const {
155 return CheckAnonFieldInParentScope;
159 return TypedefInheritAnonTagConfig;
163 return AllowTrailingUnderscore;
170 bool IgnoreMainLikeFunctions;
171 bool CheckAnonFieldInParentScope;
172 bool TypedefInheritAnonTagConfig;
173 bool AllowTrailingUnderscore;
183 const NamedDecl *Decl,
bool AllowTrailingUnderscore)
const;
195 const Decl *D,
bool AllowTrailingUnderscore)
const;
199 ArrayRef<std::optional<IdentifierNamingCheck::NamingStyle>> NamingStyles,
200 bool IgnoreMainLikeFunctions,
bool CheckAnonFieldInParentScope,
201 bool TypedefInheritAnonTagConfig)
const;
204 StringRef Type, StringRef Name,
const NamedDecl *ND,
206 ArrayRef<std::optional<IdentifierNamingCheck::NamingStyle>> NamingStyles,
208 StyleKind SK,
const SourceManager &SM,
bool IgnoreFailedSplit,
209 bool AllowTrailingUnderscore)
const;
212 bool IncludeMainLike)
const;
215 std::optional<FailureInfo>
216 getDeclFailureInfo(
const NamedDecl *Decl,
217 const SourceManager &SM)
const override;
218 std::optional<FailureInfo>
219 getMacroFailureInfo(
const Token &MacroNameTok,
220 const SourceManager &SM)
const override;
222 const NamingCheckFailure &Failure)
const override;
224 const FileStyle &getStyleForFile(StringRef FileName)
const;
225 StringRef getRealFileName(StringRef FileName)
const;
229 const FieldDecl *AnonField,
230 ArrayRef<std::optional<NamingStyle>> NamingStyles)
const;
233 const FieldDecl *Field, QualType Type,
234 ArrayRef<std::optional<NamingStyle>> NamingStyles)
const;
239 findStyleKindForTag(
const TagDecl *Tag,
240 ArrayRef<std::optional<NamingStyle>> NamingStyles)
const;
243 findStyleKindForVar(
const VarDecl *Var, QualType Type,
244 ArrayRef<std::optional<NamingStyle>> NamingStyles)
const;
247 undefinedStyle(ArrayRef<std::optional<NamingStyle>> NamingStyles)
const;
251 mutable llvm::StringMap<FileStyle> NamingStylesCache;
252 mutable llvm::StringMap<SmallString<256U>> RealFileNameCache;
253 FileStyle *MainFileStyle;
255 const bool GetConfigPerFile;
256 const bool IgnoreFailedSplit;
257 HungarianNotation HungarianNotation;
263 static llvm::ArrayRef<
264 std::pair<readability::IdentifierNamingCheck::CaseType, StringRef>>
Every ClangTidyCheck reports errors through a DiagnosticsEngine provided by this context.
std::pair< SourceLocation, StringRef > NamingCheckId
RenamerClangTidyCheck(StringRef CheckName, ClangTidyContext *Context)
IdentifierNamingCheck(StringRef Name, ClangTidyContext *Context)
std::optional< RenamerClangTidyCheck::FailureInfo > getFailureInfo(StringRef Type, StringRef Name, const NamedDecl *ND, SourceLocation Location, ArrayRef< std::optional< IdentifierNamingCheck::NamingStyle > > NamingStyles, const IdentifierNamingCheck::HungarianNotationOption &HNOption, StyleKind SK, const SourceManager &SM, bool IgnoreFailedSplit, bool AllowTrailingUnderscore) const
bool matchesStyle(StringRef Type, StringRef Name, const IdentifierNamingCheck::NamingStyle &Style, const IdentifierNamingCheck::HungarianNotationOption &HNOption, const NamedDecl *Decl, bool AllowTrailingUnderscore) const
std::string fixupWithCase(StringRef Type, StringRef Name, const Decl *D, const IdentifierNamingCheck::NamingStyle &Style, const IdentifierNamingCheck::HungarianNotationOption &HNOption, IdentifierNamingCheck::CaseType Case) const
StyleKind findStyleKind(const NamedDecl *D, ArrayRef< std::optional< IdentifierNamingCheck::NamingStyle > > NamingStyles, bool IgnoreMainLikeFunctions, bool CheckAnonFieldInParentScope, bool TypedefInheritAnonTagConfig) const
~IdentifierNamingCheck() override
IdentifierNamingCheck::FileStyle getFileStyleFromOptions(const ClangTidyCheck::OptionsView &Options) const
bool isParamInMainLikeFunction(const ParmVarDecl &ParmDecl, bool IncludeMainLike) const
@ CT_LeadingUpperSnakeCase
std::string fixupWithStyle(StringRef Type, StringRef Name, const IdentifierNamingCheck::NamingStyle &Style, const IdentifierNamingCheck::HungarianNotationOption &HNOption, const Decl *D, bool AllowTrailingUnderscore) const
void storeOptions(ClangTidyOptions::OptionMap &Opts) override
llvm::StringMap< ClangTidyValue > OptionMap
This class should be specialized by any enum type that needs to be converted to and from an llvm::Str...
static ArrayRef< std::pair< T, StringRef > > getEnumMapping()=delete
bool isTypedefInheritingAnonTagConfig() const
bool isIgnoringMainLikeFunction() const
bool isCheckingAnonFieldInParentScope() const
ArrayRef< std::optional< NamingStyle > > getStyles() const
const HungarianNotationOption & getHNOption() const
bool isAllowingTrailingUnderscore() const
FileStyle(SmallVectorImpl< std::optional< NamingStyle > > &&Styles, HungarianNotationOption HNOption, bool IgnoreMainLike, bool CheckAnonFieldInParent, bool TypedefInheritAnonTag, bool AllowTrailingUnderscore)
HungarianNotationOption()=default
llvm::StringMap< std::string > UserDefinedType
std::optional< CaseType > Case
HungarianPrefixType HPType
llvm::StringMap< std::string > DerivedType
llvm::StringMap< std::string > CString
llvm::StringMap< std::string > General
llvm::StringMap< std::string > PrimitiveType
std::string getDeclTypeName(const NamedDecl *ND) const
bool isOptionEnabled(StringRef OptionKey, const llvm::StringMap< std::string > &StrMap) const
StringRef getClassPrefix(const CXXRecordDecl *CRD, const IdentifierNamingCheck::HungarianNotationOption &HNOption) const
bool removeDuplicatedPrefix(SmallVector< StringRef, 8 > &Words, const IdentifierNamingCheck::HungarianNotationOption &HNOption) const
void loadFileConfig(const ClangTidyCheck::OptionsView &Options, IdentifierNamingCheck::HungarianNotationOption &HNOption) const
void loadDefaultConfig(IdentifierNamingCheck::HungarianNotationOption &HNOption) const
std::string getEnumPrefix(const EnumConstantDecl *ECD) const
bool checkOptionValid(int StyleKindIndex) const
std::string getPrefix(const Decl *D, const IdentifierNamingCheck::HungarianNotationOption &HNOption) const
size_t getAsteriskCount(const std::string &TypeName) const
std::string getDataTypePrefix(StringRef TypeName, const NamedDecl *ND, const IdentifierNamingCheck::HungarianNotationOption &HNOption) const
NamingStyle(const NamingStyle &O)=delete
llvm::Regex IgnoredRegexp
NamingStyle(std::optional< CaseType > Case, StringRef Prefix, StringRef Suffix, StringRef IgnoredRegexpStr, HungarianPrefixType HPType)
NamingStyle(NamingStyle &&O)=default
std::string IgnoredRegexpStr
NamingStyle & operator=(NamingStyle &&O)=default
HungarianPrefixType HPType
std::optional< CaseType > Case