Index: clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h =================================================================== --- clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h +++ clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h @@ -83,6 +83,7 @@ const bool GetConfigPerFile; const bool IgnoreFailedSplit; const bool IgnoreMainLikeFunctions; + const size_t IgnoreShortNames; }; } // namespace readability Index: clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp +++ clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp @@ -146,7 +146,8 @@ : RenamerClangTidyCheck(Name, Context), Context(Context), CheckName(Name), GetConfigPerFile(Options.get("GetConfigPerFile", true)), IgnoreFailedSplit(Options.get("IgnoreFailedSplit", false)), - IgnoreMainLikeFunctions(Options.get("IgnoreMainLikeFunctions", false)) { + IgnoreMainLikeFunctions(Options.get("IgnoreMainLikeFunctions", false)), + IgnoreShortNames(Options.get("IgnoreShortNames", 0)) { auto IterAndInserted = NamingStylesCache.try_emplace( llvm::sys::path::parent_path(Context->getCurrentFile()), @@ -177,6 +178,7 @@ Options.store(Opts, "GetConfigPerFile", GetConfigPerFile); Options.store(Opts, "IgnoreFailedSplit", IgnoreFailedSplit); Options.store(Opts, "IgnoreMainLikeFunctions", IgnoreMainLikeFunctions); + Options.store(Opts, "IgnoreShortNames", IgnoreShortNames); } static bool matchesStyle(StringRef Name, @@ -662,10 +664,14 @@ static llvm::Optional getFailureInfo( StringRef Name, SourceLocation Location, ArrayRef> NamingStyles, - StyleKind SK, const SourceManager &SM, bool IgnoreFailedSplit) { + StyleKind SK, const SourceManager &SM, bool IgnoreFailedSplit, + size_t IgnoreShortNames) { if (SK == SK_Invalid || !NamingStyles[SK]) return None; + if (Name.size() <= IgnoreShortNames) + return None; + const IdentifierNamingCheck::NamingStyle &Style = *NamingStyles[SK]; if (matchesStyle(Name, Style)) return None; @@ -698,7 +704,7 @@ return getFailureInfo( Decl->getName(), Loc, NamingStyles, findStyleKind(Decl, NamingStyles, IgnoreMainLikeFunctions), SM, - IgnoreFailedSplit); + IgnoreFailedSplit, IgnoreShortNames); } llvm::Optional @@ -708,7 +714,8 @@ return getFailureInfo(MacroNameTok.getIdentifierInfo()->getName(), Loc, getStyleForFile(SM.getFilename(Loc)), - SK_MacroDefinition, SM, IgnoreFailedSplit); + SK_MacroDefinition, SM, IgnoreFailedSplit, + IgnoreShortNames); } RenamerClangTidyCheck::DiagInfo Index: clang-tools-extra/docs/clang-tidy/checks/readability-identifier-naming.rst =================================================================== --- clang-tools-extra/docs/clang-tidy/checks/readability-identifier-naming.rst +++ clang-tools-extra/docs/clang-tidy/checks/readability-identifier-naming.rst @@ -58,6 +58,7 @@ - :option:`GlobalPointerCase`, :option:`GlobalPointerPrefix`, :option:`GlobalPointerSuffix` - :option:`GlobalVariableCase`, :option:`GlobalVariablePrefix`, :option:`GlobalVariableSuffix` - :option:`IgnoreMainLikeFunctions` + - :option:`IgnoreShortNames` - :option:`InlineNamespaceCase`, :option:`InlineNamespacePrefix`, :option:`InlineNamespaceSuffix` - :option:`LocalConstantCase`, :option:`LocalConstantPrefix`, :option:`LocalConstantSuffix` - :option:`LocalConstantPointerCase`, :option:`LocalConstantPointerPrefix`, :option:`LocalConstantPointerSuffix` @@ -903,6 +904,11 @@ ``wmain`` won't enforce checks on the names of their parameters. Default value is `0`. +.. option:: IgnoreShortNames + + Checks won't be enforced for identifier names with a length less than or + equal to this setting. Default value is `0`. + .. option:: InlineNamespaceCase When defined, the check will ensure inline namespaces names conform to the Index: clang-tools-extra/test/clang-tidy/checkers/readability-identifier-naming-short-names.cpp =================================================================== --- /dev/null +++ clang-tools-extra/test/clang-tidy/checkers/readability-identifier-naming-short-names.cpp @@ -0,0 +1,20 @@ +// RUN: %check_clang_tidy %s readability-identifier-naming %t -- \ +// RUN: -config='{CheckOptions: [ \ +// RUN: {key: readability-identifier-naming.ParameterCase, value: CamelCase}, \ +// RUN: {key: readability-identifier-naming.ClassCase, value: CamelCase}, \ +// RUN: {key: readability-identifier-naming.IgnoreShortNames, value: 2} \ +// RUN: ]}' + +int testFunc(int a, char **b); +int testFunc(int ab, char **ba); +// CHECK-MESSAGES: :[[@LINE-1]]:18: warning: invalid case style for parameter 'abc' +// CHECK-MESSAGES: :[[@LINE-2]]:30: warning: invalid case style for parameter 'cba' +int testFunc(int abc, char **cba); +int testFunc(int Abc, char **Cba); + +class fo { +}; + +// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for class 'foo' +class foo { +};