[clang-tools-extra] [clang-tidy][NFC] Fix a couple of suspicious StringRef::data() usages (PR #158480)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Sep 14 11:46:11 PDT 2025
https://github.com/capitan-davide updated https://github.com/llvm/llvm-project/pull/158480
>From d70698939c4a7bb43c2eba139852079b6d3b3bcd Mon Sep 17 00:00:00 2001
From: Davide Cunial <dcunial at proton.me>
Date: Sun, 14 Sep 2025 15:16:17 +0200
Subject: [PATCH 1/2] [clang-tidy] Fix a couple of suspicious StringRef::data()
usages
---
.../clang-tidy/modernize/UseEqualsDefaultCheck.cpp | 2 +-
.../clang-tidy/readability/IdentifierNamingCheck.cpp | 10 ++++------
2 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
index f0c541eaca0a0..cf31f4a1a4c8d 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
@@ -204,7 +204,7 @@ static bool bodyEmpty(const ASTContext *Context, const CompoundStmt *Body) {
CharSourceRange::getCharRange(Body->getLBracLoc().getLocWithOffset(1),
Body->getRBracLoc()),
Context->getSourceManager(), Context->getLangOpts(), &Invalid);
- return !Invalid && std::strspn(Text.data(), " \t\r\n") == Text.size();
+ return !Invalid && Text.ltrim(" \t\r\n").empty();
}
UseEqualsDefaultCheck::UseEqualsDefaultCheck(StringRef Name,
diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
index c8b62211c4b2e..4935a1a833fbd 100644
--- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
@@ -337,8 +337,7 @@ std::string IdentifierNamingCheck::HungarianNotation::getDeclTypeName(
// Remove keywords
for (StringRef Kw : Keywords) {
- for (size_t Pos = 0;
- (Pos = Type.find(Kw.data(), Pos)) != std::string::npos;) {
+ for (size_t Pos = 0; (Pos = Type.find(Kw, Pos)) != std::string::npos;) {
Type.replace(Pos, Kw.size(), "");
}
}
@@ -373,7 +372,7 @@ std::string IdentifierNamingCheck::HungarianNotation::getDeclTypeName(
" int", " char", " double", " long", " short"};
bool RedundantRemoved = false;
for (auto Kw : TailsOfMultiWordType) {
- size_t Pos = Type.rfind(Kw.data());
+ size_t Pos = Type.rfind(Kw);
if (Pos != std::string::npos) {
const size_t PtrCount = getAsteriskCount(Type, ND);
Type = Type.substr(0, Pos + Kw.size() + PtrCount);
@@ -602,9 +601,8 @@ std::string IdentifierNamingCheck::HungarianNotation::getDataTypePrefix(
if (PtrCount > 0) {
ModifiedTypeName = [&](std::string Str, StringRef From, StringRef To) {
size_t StartPos = 0;
- while ((StartPos = Str.find(From.data(), StartPos)) !=
- std::string::npos) {
- Str.replace(StartPos, From.size(), To.data());
+ while ((StartPos = Str.find(From, StartPos)) != std::string::npos) {
+ Str.replace(StartPos, From.size(), To);
StartPos += To.size();
}
return Str;
>From dce8b61792a0bacbf42f0e0d1ca5f1cc61756ab2 Mon Sep 17 00:00:00 2001
From: Davide Cunial <dcunial at proton.me>
Date: Sun, 14 Sep 2025 20:45:42 +0200
Subject: [PATCH 2/2] [clang-tidy] Apply suggestions from code review
---
clang-tools-extra/clang-tidy/.clang-tidy | 1 -
clang-tools-extra/clang-tidy/ClangTidyOptions.cpp | 6 ++++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/clang-tools-extra/clang-tidy/.clang-tidy b/clang-tools-extra/clang-tidy/.clang-tidy
index d290901730405..0c2f34b529016 100644
--- a/clang-tools-extra/clang-tidy/.clang-tidy
+++ b/clang-tools-extra/clang-tidy/.clang-tidy
@@ -5,7 +5,6 @@ Checks: >
-bugprone-branch-clone,
-bugprone-easily-swappable-parameters,
-bugprone-narrowing-conversions,
- -bugprone-suspicious-stringview-data-usage,
-bugprone-unchecked-optional-access,
-bugprone-unused-return-value,
modernize-*,
diff --git a/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp b/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp
index e59f157b468bc..03dafdc93e4eb 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp
@@ -99,7 +99,10 @@ void yamlize(IO &IO, ClangTidyOptions::OptionMap &Val, bool,
for (auto &Option : SortedOptions) {
bool UseDefault = false;
void *SaveInfo = nullptr;
+ // NOLINTBEGIN(bugprone-suspicious-stringview-data-usage): Requires
+ // updates to 'llvm::yaml::IO'
IO.preflightKey(Option.first.data(), true, false, UseDefault, SaveInfo);
+ // NOLINTEND
IO.scalarString(Option.second, needsQuotes(Option.second));
IO.postflightKey(SaveInfo);
}
@@ -116,7 +119,10 @@ void yamlize(IO &IO, ClangTidyOptions::OptionMap &Val, bool,
} else if (isa<MappingNode>(I.getCurrentNode())) {
IO.beginMapping();
for (StringRef Key : IO.keys()) {
+ // NOLINTNEXTLINE(bugprone-suspicious-stringview-data-usage): Requires
+ // updates to 'llvm::yaml::IO'
IO.mapRequired(Key.data(), Val[Key].Value);
+ // NOLINTEND
}
IO.endMapping();
} else {
More information about the cfe-commits
mailing list