Skip to content

Commit a2ae273

Browse files
committed
[clang-tidy] Optimize readability-identifier-naming
- Reduce disk IO usage by adding cache to an realpath introduced by llvm#81985
1 parent e90126e commit a2ae273

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1414,13 +1414,21 @@ IdentifierNamingCheck::getDiagInfo(const NamingCheckId &ID,
14141414
}};
14151415
}
14161416

1417+
StringRef IdentifierNamingCheck::getRealFileName(StringRef FileName) const {
1418+
auto Iter = RealFileNameCache.try_emplace(FileName);
1419+
SmallString<256U> &RealFileName = Iter.first->getValue();
1420+
if (!Iter.second)
1421+
return RealFileName;
1422+
llvm::sys::fs::real_path(FileName, RealFileName);
1423+
return RealFileName;
1424+
}
1425+
14171426
const IdentifierNamingCheck::FileStyle &
14181427
IdentifierNamingCheck::getStyleForFile(StringRef FileName) const {
14191428
if (!GetConfigPerFile)
14201429
return *MainFileStyle;
14211430

1422-
SmallString<128> RealFileName;
1423-
llvm::sys::fs::real_path(FileName, RealFileName);
1431+
StringRef RealFileName = getRealFileName(FileName);
14241432
StringRef Parent = llvm::sys::path::parent_path(RealFileName);
14251433
auto Iter = NamingStylesCache.find(Parent);
14261434
if (Iter != NamingStylesCache.end())

clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ class IdentifierNamingCheck final : public RenamerClangTidyCheck {
205205
const NamingCheckFailure &Failure) const override;
206206

207207
const FileStyle &getStyleForFile(StringRef FileName) const;
208+
StringRef getRealFileName(StringRef FileName) const;
208209

209210
/// Find the style kind of a field in an anonymous record.
210211
StyleKind findStyleKindForAnonField(
@@ -222,6 +223,7 @@ class IdentifierNamingCheck final : public RenamerClangTidyCheck {
222223
/// Stores the style options as a vector, indexed by the specified \ref
223224
/// StyleKind, for a given directory.
224225
mutable llvm::StringMap<FileStyle> NamingStylesCache;
226+
mutable llvm::StringMap<SmallString<256U>> RealFileNameCache;
225227
FileStyle *MainFileStyle;
226228
ClangTidyContext *Context;
227229
const bool GetConfigPerFile;

0 commit comments

Comments
 (0)