[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Donát Nagy via cfe-commits

https://github.com/NagyDonat edited 
https://github.com/llvm/llvm-project/pull/130953
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Donát Nagy via cfe-commits


@@ -41,19 +41,19 @@ class BugType {
 Checker(nullptr), SuppressOnSink(SuppressOnSink) {}
   BugType(const CheckerBase *Checker, StringRef Desc,
   StringRef Cat = categories::LogicError, bool SuppressOnSink = false)
-  : CheckerName(Checker->getCheckerName()), Description(Desc),
-Category(Cat), Checker(Checker), SuppressOnSink(SuppressOnSink) {}
+  : CheckerName(), Description(Desc), Category(Cat), Checker(Checker),

NagyDonat wrote:

It calls the default constructor of `CheckerNameRef CheckerName` which 
initializes this data member to an empty string.

In fact the two data members `CheckerName` and `Checker` should have been 
alternatives within a single `variant` (and not separate data members), because 
one of them is always an unused empty value. (The first constructor fills 
`CheckerName`, the second one fills `Checker`.)

This `variant`ization of these two data members does happen in follow-up PR 
https://github.com/llvm/llvm-project/pull/130985 (which introduces my multipart 
checker framework).

https://github.com/llvm/llvm-project/pull/130953
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Balazs Benics via cfe-commits


@@ -41,19 +41,19 @@ class BugType {
 Checker(nullptr), SuppressOnSink(SuppressOnSink) {}
   BugType(const CheckerBase *Checker, StringRef Desc,
   StringRef Cat = categories::LogicError, bool SuppressOnSink = false)
-  : CheckerName(Checker->getCheckerName()), Description(Desc),
-Category(Cat), Checker(Checker), SuppressOnSink(SuppressOnSink) {}
+  : CheckerName(), Description(Desc), Category(Cat), Checker(Checker),

steakhal wrote:

Ah nvm.

https://github.com/llvm/llvm-project/pull/130953
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Balazs Benics via cfe-commits


@@ -41,19 +41,19 @@ class BugType {
 Checker(nullptr), SuppressOnSink(SuppressOnSink) {}
   BugType(const CheckerBase *Checker, StringRef Desc,
   StringRef Cat = categories::LogicError, bool SuppressOnSink = false)
-  : CheckerName(Checker->getCheckerName()), Description(Desc),
-Category(Cat), Checker(Checker), SuppressOnSink(SuppressOnSink) {}
+  : CheckerName(), Description(Desc), Category(Cat), Checker(Checker),

steakhal wrote:

What does this `CheckerName` initialize?

https://github.com/llvm/llvm-project/pull/130953
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Donát Nagy via cfe-commits

https://github.com/NagyDonat edited 
https://github.com/llvm/llvm-project/pull/130953
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Donát Nagy via cfe-commits

https://github.com/NagyDonat closed 
https://github.com/llvm/llvm-project/pull/130953
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Gábor Horváth via cfe-commits


@@ -41,19 +41,19 @@ class BugType {
 Checker(nullptr), SuppressOnSink(SuppressOnSink) {}
   BugType(const CheckerBase *Checker, StringRef Desc,
   StringRef Cat = categories::LogicError, bool SuppressOnSink = false)
-  : CheckerName(Checker->getCheckerName()), Description(Desc),
-Category(Cat), Checker(Checker), SuppressOnSink(SuppressOnSink) {}
+  : CheckerName(), Description(Desc), Category(Cat), Checker(Checker),
+SuppressOnSink(SuppressOnSink) {}
   virtual ~BugType() = default;
 
   StringRef getDescription() const { return Description; }
   StringRef getCategory() const { return Category; }
   StringRef getCheckerName() const {
-// FIXME: This is a workaround to ensure that the correct checerk name is
+// FIXME: This is a workaround to ensure that the correct checker name is
 // used. The checker names are set after the constructors are run.
 // In case the BugType object is initialized in the checker's ctor
 // the CheckerName field will be empty. To circumvent this problem we use
 // CheckerBase whenever it is possible.
-StringRef Ret = Checker ? Checker->getCheckerName() : CheckerName;

Xazax-hun wrote:

Is `Checker` ever null? Do we still need the `CheckerName` field?

https://github.com/llvm/llvm-project/pull/130953
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Donát Nagy via cfe-commits

https://github.com/NagyDonat edited 
https://github.com/llvm/llvm-project/pull/130953
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Donát Nagy via cfe-commits


@@ -41,19 +41,19 @@ class BugType {
 Checker(nullptr), SuppressOnSink(SuppressOnSink) {}
   BugType(const CheckerBase *Checker, StringRef Desc,
   StringRef Cat = categories::LogicError, bool SuppressOnSink = false)
-  : CheckerName(Checker->getCheckerName()), Description(Desc),
-Category(Cat), Checker(Checker), SuppressOnSink(SuppressOnSink) {}
+  : CheckerName(), Description(Desc), Category(Cat), Checker(Checker),
+SuppressOnSink(SuppressOnSink) {}
   virtual ~BugType() = default;
 
   StringRef getDescription() const { return Description; }
   StringRef getCategory() const { return Category; }
   StringRef getCheckerName() const {
-// FIXME: This is a workaround to ensure that the correct checerk name is
+// FIXME: This is a workaround to ensure that the correct checker name is
 // used. The checker names are set after the constructors are run.
 // In case the BugType object is initialized in the checker's ctor
 // the CheckerName field will be empty. To circumvent this problem we use
 // CheckerBase whenever it is possible.
-StringRef Ret = Checker ? Checker->getCheckerName() : CheckerName;

NagyDonat wrote:

Under the current system we still need `CheckerName`, but we will be able to 
remove it when I implement my new multipart checker framework and all multipart 
checkers are transferred to it.

Right now both constructors of `BugType` are used and needed:
- In simple straightforward checkers `Checker->getCheckerName()` can return the 
(single) name of the checker, so we can directly initialize the bug types as 
`BugType BT{this, ...}` with the constructor which takes `CheckerBase *Checker` 
and default initializes `CheckerName`.
- In multipart checkers the `BugType` wouldn't be able to query the name of the 
relevant checker part from a `CheckerBase *` (because currently each multipart 
checker implements its own custom array of checker names), so we need to 
initialize the `BugType` with a `CheckerNameRef`, which requires lazy 
initialization (the ugly `mutable std::unique_ptr`) because the names 
of the sub-checkers are not yet available when the checker object is 
constructed.

The main effect of my multipart checker change is (roughly speaking) that I 
will provide a `CheckerBase::getName(unsigned CheckerPartIdx)` and then 
`BugType`s can exactly reference a checker part with a pair of a `CheckerBase*` 
(the singleton instance of the checker class) and a numerical index (which 
identifies the part). After this, we can directly initialize each bug type 
object with either a `CheckerBase*` (simple checkers) or a `` pair (multipart checkers), so we can get rid of the `BugType` 
constructor that takes a raw `CheckerName` (and needs the awkward lazy 
initialization).

https://github.com/llvm/llvm-project/pull/130953
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Gábor Horváth via cfe-commits

https://github.com/Xazax-hun approved this pull request.


https://github.com/llvm/llvm-project/pull/130953
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Donát Nagy via cfe-commits

https://github.com/NagyDonat edited 
https://github.com/llvm/llvm-project/pull/130953
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-clang-static-analyzer-1

Author: Donát Nagy (NagyDonat)


Changes

The method name `getCheckerName` would imply "get the name of the checker 
associated with `this`", so it's suitable for e.g. `BugType::getCheckerName` -- 
but the proper name for a method that "gets the name of `this`" should be 
simply called `getName`.

This change eliminates the redundant and ugly pattern 
`Checker->getCheckerName()` and helps to visually distinguish this method 
from `BugType::getCheckerName`.

In the constructor of `BugType` the call of this method was completely removed 
(instead of just changing the name) because that call was dead code (when the 
data member `Checker` is non-null, the string stored in `CheckerName` is 
irrelevant) and was often querying the name of the checker before it was 
properly initialized.

Moreover, in `ReturnValueChecker.cpp` the static helper function `getName` 
(which gets a function name from a `CallEvent`) was renamed to the more 
specific `getFunctionName` to avoid the name collision.

This change is yet another cleanup commit before my planned changes that would 
add support for multi-part checkers to this method.

---
Full diff: https://github.com/llvm/llvm-project/pull/130953.diff


7 Files Affected:

- (modified) clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h 
(+4-4) 
- (modified) clang/include/clang/StaticAnalyzer/Core/Checker.h (+1-1) 
- (modified) clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp (+2-3) 
- (modified) clang/lib/StaticAnalyzer/Checkers/ReturnValueChecker.cpp (+3-3) 
- (modified) clang/lib/StaticAnalyzer/Core/BugReporter.cpp (+2-2) 
- (modified) clang/lib/StaticAnalyzer/Core/Checker.cpp (+4-4) 
- (modified) clang/lib/StaticAnalyzer/Core/CheckerManager.cpp (+5-6) 


``diff
diff --git a/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h 
b/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
index e50afd6d0da7e..97cf7eda0ae2f 100644
--- a/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
+++ b/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
@@ -41,19 +41,19 @@ class BugType {
 Checker(nullptr), SuppressOnSink(SuppressOnSink) {}
   BugType(const CheckerBase *Checker, StringRef Desc,
   StringRef Cat = categories::LogicError, bool SuppressOnSink = false)
-  : CheckerName(Checker->getCheckerName()), Description(Desc),
-Category(Cat), Checker(Checker), SuppressOnSink(SuppressOnSink) {}
+  : CheckerName(), Description(Desc), Category(Cat), Checker(Checker),
+SuppressOnSink(SuppressOnSink) {}
   virtual ~BugType() = default;
 
   StringRef getDescription() const { return Description; }
   StringRef getCategory() const { return Category; }
   StringRef getCheckerName() const {
-// FIXME: This is a workaround to ensure that the correct checerk name is
+// FIXME: This is a workaround to ensure that the correct checker name is
 // used. The checker names are set after the constructors are run.
 // In case the BugType object is initialized in the checker's ctor
 // the CheckerName field will be empty. To circumvent this problem we use
 // CheckerBase whenever it is possible.
-StringRef Ret = Checker ? Checker->getCheckerName() : CheckerName;
+StringRef Ret = Checker ? Checker->getName() : CheckerName;
 assert(!Ret.empty() && "Checker name is not set properly.");
 return Ret;
   }
diff --git a/clang/include/clang/StaticAnalyzer/Core/Checker.h 
b/clang/include/clang/StaticAnalyzer/Core/Checker.h
index 2ec54a837c42c..4d9b33cc559b8 100644
--- a/clang/include/clang/StaticAnalyzer/Core/Checker.h
+++ b/clang/include/clang/StaticAnalyzer/Core/Checker.h
@@ -490,7 +490,7 @@ class CheckerBase : public ProgramPointTag {
 
 public:
   StringRef getTagDescription() const override;
-  CheckerNameRef getCheckerName() const;
+  CheckerNameRef getName() const;
 
   /// See CheckerManager::runCheckersForPrintState.
   virtual void printState(raw_ostream &Out, ProgramStateRef State,
diff --git a/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp 
b/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp
index 1b87a0d8af38d..6035e2d34c2b3 100644
--- a/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp
@@ -430,9 +430,8 @@ void ExprInspectionChecker::analyzerHashDump(const CallExpr 
*CE,
   const LangOptions &Opts = C.getLangOpts();
   const SourceManager &SM = C.getSourceManager();
   FullSourceLoc FL(CE->getArg(0)->getBeginLoc(), SM);
-  std::string HashContent =
-  getIssueString(FL, getCheckerName(), "Category",
- C.getLocationContext()->getDecl(), Opts);
+  std::string HashContent = getIssueString(
+  FL, getName(), "Category", C.getLocationContext()->getDecl(), Opts);
 
   reportBug(HashContent, C);
 }
diff --git a/clang/lib/StaticAnalyzer/Checkers/ReturnValueChecker.cpp 
b/clang/lib

[clang] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to `getName` (PR #130953)

2025-03-12 Thread Donát Nagy via cfe-commits

https://github.com/NagyDonat created 
https://github.com/llvm/llvm-project/pull/130953

The method name `getCheckerName` would imply "get the name of the checker 
associated with `this`", so it's suitable for e.g. `BugType::getCheckerName` -- 
but the proper name for a method that "gets the name of `this`" should be 
simply called `getName`.

This change eliminates the redundant and ugly pattern 
`Checker->getCheckerName()` and helps to visually distinguish this method from 
`BugType::getCheckerName`.

In the constructor of `BugType` the call of this method was completely removed 
(instead of just changing the name) because that call was dead code (when the 
data member `Checker` is non-null, the string stored in `CheckerName` is 
irrelevant) and was often querying the name of the checker before it was 
properly initialized.

Moreover, in `ReturnValueChecker.cpp` the static helper function `getName` 
(which gets a function name from a `CallEvent`) was renamed to the more 
specific `getFunctionName` to avoid the name collision.

This change is yet another cleanup commit before my planned changes that would 
add support for multi-part checkers to this method.

From 9ff0645b63b390686c5aa2826f4c1ae89c08dfa9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Don=C3=A1t=20Nagy?= 
Date: Wed, 12 Mar 2025 13:02:19 +0100
Subject: [PATCH] [NFC][analyzer] Rename `CheckerBase::getCheckerName` to
 `getName`

The method name `getCheckerName` would imply "get the name of the
checker associated with `this`", so it's suitable for e.g.
`BugType::getCheckerName` -- but the proper name for a method that "gets
the name of `this`" should be simply called `getName`.

This change eliminates the redundant and ugly pattern
`Checker->getCheckerName()` and helps to visually distinguish this
method from `BugType::getCheckerName`.

In the constructor of `BugType` the call of this method was completely
removed (instead of just changing the name) because that call was dead
code (when the data member `Checker` is non-null, the string stored in
`CheckerName` is irrelevant) and was often querying the name of the
checker before it was properly initialized.

Moreover, in `ReturnValueChecker.cpp` the static helper function
`getName` (which gets a function name from a `CallEvent`) was renamed to
the more specific `getFunctionName` to avoid the name collision.

This change is yet another cleanup commit before my planned changes that
would add support for multi-part checkers to this method.
---
 .../clang/StaticAnalyzer/Core/BugReporter/BugType.h   |  8 
 clang/include/clang/StaticAnalyzer/Core/Checker.h |  2 +-
 .../StaticAnalyzer/Checkers/ExprInspectionChecker.cpp |  5 ++---
 .../StaticAnalyzer/Checkers/ReturnValueChecker.cpp|  6 +++---
 clang/lib/StaticAnalyzer/Core/BugReporter.cpp |  4 ++--
 clang/lib/StaticAnalyzer/Core/Checker.cpp |  8 
 clang/lib/StaticAnalyzer/Core/CheckerManager.cpp  | 11 +--
 7 files changed, 21 insertions(+), 23 deletions(-)

diff --git a/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h 
b/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
index e50afd6d0da7e..97cf7eda0ae2f 100644
--- a/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
+++ b/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
@@ -41,19 +41,19 @@ class BugType {
 Checker(nullptr), SuppressOnSink(SuppressOnSink) {}
   BugType(const CheckerBase *Checker, StringRef Desc,
   StringRef Cat = categories::LogicError, bool SuppressOnSink = false)
-  : CheckerName(Checker->getCheckerName()), Description(Desc),
-Category(Cat), Checker(Checker), SuppressOnSink(SuppressOnSink) {}
+  : CheckerName(), Description(Desc), Category(Cat), Checker(Checker),
+SuppressOnSink(SuppressOnSink) {}
   virtual ~BugType() = default;
 
   StringRef getDescription() const { return Description; }
   StringRef getCategory() const { return Category; }
   StringRef getCheckerName() const {
-// FIXME: This is a workaround to ensure that the correct checerk name is
+// FIXME: This is a workaround to ensure that the correct checker name is
 // used. The checker names are set after the constructors are run.
 // In case the BugType object is initialized in the checker's ctor
 // the CheckerName field will be empty. To circumvent this problem we use
 // CheckerBase whenever it is possible.
-StringRef Ret = Checker ? Checker->getCheckerName() : CheckerName;
+StringRef Ret = Checker ? Checker->getName() : CheckerName;
 assert(!Ret.empty() && "Checker name is not set properly.");
 return Ret;
   }
diff --git a/clang/include/clang/StaticAnalyzer/Core/Checker.h 
b/clang/include/clang/StaticAnalyzer/Core/Checker.h
index 2ec54a837c42c..4d9b33cc559b8 100644
--- a/clang/include/clang/StaticAnalyzer/Core/Checker.h
+++ b/clang/include/clang/StaticAnalyzer/Core/Checker.h
@@ -490,7 +490,7 @@ class CheckerBase : public ProgramPointTag {