https://github.com/localspook updated https://github.com/llvm/llvm-project/pull/156265
>From c368372b8cc915a401a5dcbf6346e23a101f95e4 Mon Sep 17 00:00:00 2001 From: Victor Chernyakin <chernyakin.victo...@outlook.com> Date: Sun, 31 Aug 2025 17:18:42 -0700 Subject: [PATCH 1/2] [clang-tidy][NFC] Enable `readability-convert-member-functions-to-static` in the codebase --- clang-tools-extra/clang-tidy/.clang-tidy | 1 - .../clang-tidy/ClangTidyProfiling.h | 3 +- .../ExpandModularHeadersPPCallbacks.cpp | 2 +- .../altera/IdDependentBackwardBranchCheck.h | 2 +- .../altera/KernelNameRestrictionCheck.cpp | 2 +- .../clang-tidy/altera/UnrollLoopsCheck.h | 13 ++++--- .../clang-tidy/android/CloexecCheck.cpp | 2 +- .../clang-tidy/android/CloexecCheck.h | 4 +- .../bugprone/AssignmentInIfConditionCheck.cpp | 7 ++-- .../clang-tidy/bugprone/BranchCloneCheck.cpp | 16 +++++--- .../MacroRepeatedSideEffectsCheck.cpp | 5 +-- .../fuchsia/MultipleInheritanceCheck.cpp | 2 +- .../fuchsia/MultipleInheritanceCheck.h | 2 +- .../clang-tidy/misc/StaticAssertCheck.h | 4 +- .../misc/ThrowByValueCatchByReferenceCheck.h | 4 +- .../clang-tidy/misc/UnusedParametersCheck.cpp | 2 +- .../modernize/DeprecatedHeadersCheck.cpp | 4 +- .../clang-tidy/modernize/LoopConvertCheck.h | 22 +++++------ .../modernize/UseStdNumbersCheck.cpp | 7 ++-- .../modernize/UseTrailingReturnTypeCheck.cpp | 2 +- .../UnnecessaryCopyInitialization.h | 3 +- .../AvoidUnconditionalPreprocessorIfCheck.cpp | 2 +- .../ConvertMemberFunctionsToStatic.cpp | 2 +- .../readability/IdentifierNamingCheck.cpp | 20 +++++----- .../readability/IdentifierNamingCheck.h | 38 +++++++++---------- .../readability/MagicNumbersCheck.cpp | 4 +- .../readability/MagicNumbersCheck.h | 8 ++-- .../clang-tidy/utils/FormatStringConverter.h | 12 +++--- .../clang-tidy/utils/HeaderGuard.h | 2 +- .../utils/RenamerClangTidyCheck.cpp | 4 +- 30 files changed, 105 insertions(+), 96 deletions(-) diff --git a/clang-tools-extra/clang-tidy/.clang-tidy b/clang-tools-extra/clang-tidy/.clang-tidy index 22a4bd7d80618..9affdcf32c485 100644 --- a/clang-tools-extra/clang-tidy/.clang-tidy +++ b/clang-tools-extra/clang-tidy/.clang-tidy @@ -23,7 +23,6 @@ Checks: > -readability-avoid-nested-conditional-operator, -readability-braces-around-statements, -readability-container-contains, - -readability-convert-member-functions-to-static, -readability-else-after-return, -readability-function-cognitive-complexity, -readability-identifier-length, diff --git a/clang-tools-extra/clang-tidy/ClangTidyProfiling.h b/clang-tools-extra/clang-tidy/ClangTidyProfiling.h index 76deede1716f4..8af414eb7e2b2 100644 --- a/clang-tools-extra/clang-tidy/ClangTidyProfiling.h +++ b/clang-tools-extra/clang-tidy/ClangTidyProfiling.h @@ -36,7 +36,8 @@ class ClangTidyProfiling { private: std::optional<StorageParams> Storage; - void printUserFriendlyTable(llvm::raw_ostream &OS, llvm::TimerGroup &TG); + static void printUserFriendlyTable(llvm::raw_ostream &OS, + llvm::TimerGroup &TG); void printAsJSON(llvm::raw_ostream &OS, llvm::TimerGroup &TG); void storeProfileData(llvm::TimerGroup &TG); diff --git a/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp b/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp index 5e705f720c86e..06721dd4f900e 100644 --- a/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp +++ b/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp @@ -51,7 +51,7 @@ class ExpandModularHeadersPPCallbacks::FileRecorder { /// Makes sure we have contents for all the files we were interested in. /// Ideally `FilesToRecord` should be empty. - void checkAllFilesRecorded() { + static void checkAllFilesRecorded() { LLVM_DEBUG({ for (auto FileEntry : FilesToRecord) llvm::dbgs() << "Did not record contents for input file: " diff --git a/clang-tools-extra/clang-tidy/altera/IdDependentBackwardBranchCheck.h b/clang-tools-extra/clang-tidy/altera/IdDependentBackwardBranchCheck.h index cf964a2d5d6f6..07821c81b75f5 100644 --- a/clang-tools-extra/clang-tidy/altera/IdDependentBackwardBranchCheck.h +++ b/clang-tools-extra/clang-tidy/altera/IdDependentBackwardBranchCheck.h @@ -65,7 +65,7 @@ class IdDependentBackwardBranchCheck : public ClangTidyCheck { const MemberExpr *MemExpr, const FieldDecl *PotentialField); /// Returns the loop type. - LoopType getLoopType(const Stmt *Loop); + static LoopType getLoopType(const Stmt *Loop); public: IdDependentBackwardBranchCheck(StringRef Name, ClangTidyContext *Context) diff --git a/clang-tools-extra/clang-tidy/altera/KernelNameRestrictionCheck.cpp b/clang-tools-extra/clang-tidy/altera/KernelNameRestrictionCheck.cpp index a94d6c8d7c4e6..bf41563e6ab01 100644 --- a/clang-tools-extra/clang-tidy/altera/KernelNameRestrictionCheck.cpp +++ b/clang-tools-extra/clang-tidy/altera/KernelNameRestrictionCheck.cpp @@ -37,7 +37,7 @@ class KernelNameRestrictionPPCallbacks : public PPCallbacks { private: /// Returns true if the name of the file with path FileName is 'kernel.cl', /// 'verilog.cl', or 'vhdl.cl'. The file name check is case insensitive. - bool fileNameIsRestricted(StringRef FileName); + static bool fileNameIsRestricted(StringRef FileName); struct IncludeDirective { SourceLocation Loc; // Location in the include directive. diff --git a/clang-tools-extra/clang-tidy/altera/UnrollLoopsCheck.h b/clang-tools-extra/clang-tidy/altera/UnrollLoopsCheck.h index 0d8306e8437b7..ffc6808ab9daf 100644 --- a/clang-tools-extra/clang-tidy/altera/UnrollLoopsCheck.h +++ b/clang-tools-extra/clang-tidy/altera/UnrollLoopsCheck.h @@ -44,8 +44,8 @@ class UnrollLoopsCheck : public ClangTidyCheck { /// Attempts to extract an integer value from either side of the /// BinaryOperator. Returns true and saves the result to &value if successful, /// returns false otherwise. - bool extractValue(int &Value, const BinaryOperator *Op, - const ASTContext *Context); + static bool extractValue(int &Value, const BinaryOperator *Op, + const ASTContext *Context); /// Returns true if the given loop statement has a large number of iterations, /// as determined by the integer value in the loop's condition expression, /// if one exists. @@ -59,13 +59,14 @@ class UnrollLoopsCheck : public ClangTidyCheck { const ASTContext *Context) const; /// Returns the type of unrolling, if any, associated with the given /// statement. - enum UnrollType unrollType(const Stmt *Statement, ASTContext *Context); + static enum UnrollType unrollType(const Stmt *Statement, ASTContext *Context); /// Returns the condition expression within a given for statement. If there is /// none, or if the Statement is not a loop, then returns a NULL pointer. - const Expr *getCondExpr(const Stmt *Statement); + static const Expr *getCondExpr(const Stmt *Statement); /// Returns True if the loop statement has known bounds. - bool hasKnownBounds(const Stmt *Statement, const IntegerLiteral *CXXLoopBound, - const ASTContext *Context); + static bool hasKnownBounds(const Stmt *Statement, + const IntegerLiteral *CXXLoopBound, + const ASTContext *Context); void storeOptions(ClangTidyOptions::OptionMap &Opts) override; }; diff --git a/clang-tools-extra/clang-tidy/android/CloexecCheck.cpp b/clang-tools-extra/clang-tidy/android/CloexecCheck.cpp index f4d657a7f4e90..c9383cad51159 100644 --- a/clang-tools-extra/clang-tidy/android/CloexecCheck.cpp +++ b/clang-tools-extra/clang-tidy/android/CloexecCheck.cpp @@ -98,7 +98,7 @@ void CloexecCheck::insertStringFlag( } StringRef CloexecCheck::getSpellingArg(const MatchFinder::MatchResult &Result, - int N) const { + int N) { const auto *MatchedCall = Result.Nodes.getNodeAs<CallExpr>(FuncBindingStr); const SourceManager &SM = *Result.SourceManager; return Lexer::getSourceText( diff --git a/clang-tools-extra/clang-tidy/android/CloexecCheck.h b/clang-tools-extra/clang-tidy/android/CloexecCheck.h index edbff70fbd33e..44e846e68dc9c 100644 --- a/clang-tools-extra/clang-tidy/android/CloexecCheck.h +++ b/clang-tools-extra/clang-tidy/android/CloexecCheck.h @@ -85,8 +85,8 @@ class CloexecCheck : public ClangTidyCheck { const char Mode, const int ArgPos); /// Helper function to get the spelling of a particular argument. - StringRef getSpellingArg(const ast_matchers::MatchFinder::MatchResult &Result, - int N) const; + static StringRef + getSpellingArg(const ast_matchers::MatchFinder::MatchResult &Result, int N); /// Binding name of the FuncDecl of a function call. static const char *FuncDeclBindingStr; diff --git a/clang-tools-extra/clang-tidy/bugprone/AssignmentInIfConditionCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/AssignmentInIfConditionCheck.cpp index e03cac6c5fd83..5d0f6b6fd8364 100644 --- a/clang-tools-extra/clang-tidy/bugprone/AssignmentInIfConditionCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/AssignmentInIfConditionCheck.cpp @@ -35,13 +35,14 @@ void AssignmentInIfConditionCheck::check( : Check(Check) {} // Dont traverse into any lambda expressions. - bool TraverseLambdaExpr(LambdaExpr *, DataRecursionQueue * = nullptr) { + static bool TraverseLambdaExpr(LambdaExpr *, + DataRecursionQueue * = nullptr) { return true; } // Dont traverse into any requires expressions. - bool TraverseRequiresExpr(RequiresExpr *, - DataRecursionQueue * = nullptr) { + static bool TraverseRequiresExpr(RequiresExpr *, + DataRecursionQueue * = nullptr) { return true; } diff --git a/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp index a6cd68edda55e..2a142c9cdb27a 100644 --- a/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp @@ -50,28 +50,32 @@ static bool isFallthroughSwitchBranch(const SwitchBranch &Branch) { struct SwitchCaseVisitor : RecursiveASTVisitor<SwitchCaseVisitor> { using RecursiveASTVisitor<SwitchCaseVisitor>::DataRecursionQueue; - bool TraverseLambdaExpr(LambdaExpr *, DataRecursionQueue * = nullptr) { + static bool TraverseLambdaExpr(LambdaExpr *, + DataRecursionQueue * = nullptr) { return true; // Ignore lambdas } - bool TraverseDecl(Decl *) { + static bool TraverseDecl(Decl *) { return true; // No need to check declarations } - bool TraverseSwitchStmt(SwitchStmt *, DataRecursionQueue * = nullptr) { + static bool TraverseSwitchStmt(SwitchStmt *, + DataRecursionQueue * = nullptr) { return true; // Ignore sub-switches } // NOLINTNEXTLINE(readability-identifier-naming) - FIXME - bool TraverseSwitchCase(SwitchCase *, DataRecursionQueue * = nullptr) { + static bool TraverseSwitchCase(SwitchCase *, + DataRecursionQueue * = nullptr) { return true; // Ignore cases } - bool TraverseDefaultStmt(DefaultStmt *, DataRecursionQueue * = nullptr) { + static bool TraverseDefaultStmt(DefaultStmt *, + DataRecursionQueue * = nullptr) { return true; // Ignore defaults } - bool TraverseAttributedStmt(AttributedStmt *S) { + static bool TraverseAttributedStmt(AttributedStmt *S) { if (!S) return true; diff --git a/clang-tools-extra/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp index 879040177079a..74968d3a37e09 100644 --- a/clang-tools-extra/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp @@ -32,7 +32,7 @@ class MacroRepeatedPPCallbacks : public PPCallbacks { unsigned countArgumentExpansions(const MacroInfo *MI, const IdentifierInfo *Arg) const; - bool hasSideEffects(const Token *ResultArgToks) const; + static bool hasSideEffects(const Token *ResultArgToks); }; } // End of anonymous namespace. @@ -159,8 +159,7 @@ unsigned MacroRepeatedPPCallbacks::countArgumentExpansions( return Max; } -bool MacroRepeatedPPCallbacks::hasSideEffects( - const Token *ResultArgToks) const { +bool MacroRepeatedPPCallbacks::hasSideEffects(const Token *ResultArgToks) { for (; ResultArgToks->isNot(tok::eof); ++ResultArgToks) { if (ResultArgToks->isOneOf(tok::plusplus, tok::minusminus)) return true; diff --git a/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.cpp b/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.cpp index 0302a5ad4957c..486aabb61b061 100644 --- a/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.cpp +++ b/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.cpp @@ -47,7 +47,7 @@ bool MultipleInheritanceCheck::getInterfaceStatus(const CXXRecordDecl *Node, } bool MultipleInheritanceCheck::isCurrentClassInterface( - const CXXRecordDecl *Node) const { + const CXXRecordDecl *Node) { // Interfaces should have no fields. if (!Node->field_empty()) return false; diff --git a/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.h b/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.h index be5942c9520ae..ed97ab1261a17 100644 --- a/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.h +++ b/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.h @@ -32,7 +32,7 @@ class MultipleInheritanceCheck : public ClangTidyCheck { private: void addNodeToInterfaceMap(const CXXRecordDecl *Node, bool IsInterface); bool getInterfaceStatus(const CXXRecordDecl *Node, bool &IsInterface) const; - bool isCurrentClassInterface(const CXXRecordDecl *Node) const; + static bool isCurrentClassInterface(const CXXRecordDecl *Node); bool isInterface(const CXXRecordDecl *Node); // Contains the identity of each named CXXRecord as an interface. This is diff --git a/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.h b/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.h index 7b378e016408a..f1c2568567661 100644 --- a/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.h +++ b/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.h @@ -30,8 +30,8 @@ class StaticAssertCheck : public ClangTidyCheck { void check(const ast_matchers::MatchFinder::MatchResult &Result) override; private: - SourceLocation getLastParenLoc(const ASTContext *ASTCtx, - SourceLocation AssertLoc); + static SourceLocation getLastParenLoc(const ASTContext *ASTCtx, + SourceLocation AssertLoc); }; } // namespace clang::tidy::misc diff --git a/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.h b/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.h index e3cc4c5e6cd41..cec2fbb798f2f 100644 --- a/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.h +++ b/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.h @@ -38,8 +38,8 @@ class ThrowByValueCatchByReferenceCheck : public ClangTidyCheck { void diagnoseThrowLocations(const CXXThrowExpr *ThrowExpr); void diagnoseCatchLocations(const CXXCatchStmt *CatchStmt, ASTContext &Context); - bool isFunctionParameter(const DeclRefExpr *DeclRefExpr); - bool isCatchVariable(const DeclRefExpr *DeclRefExpr); + static bool isFunctionParameter(const DeclRefExpr *DeclRefExpr); + static bool isCatchVariable(const DeclRefExpr *DeclRefExpr); bool isFunctionOrCatchVar(const DeclRefExpr *DeclRefExpr); const bool CheckAnonymousTemporaries; const bool WarnOnLargeObject; diff --git a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp index 737551637ea9e..9721d79fec4d4 100644 --- a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp @@ -99,7 +99,7 @@ class UnusedParametersCheck::IndexerVisitor return Index[Fn->getCanonicalDecl()].OtherRefs; } - bool shouldTraversePostOrder() const { return true; } + static bool shouldTraversePostOrder() { return true; } bool WalkUpFromDeclRefExpr(DeclRefExpr *DeclRef) { if (const auto *Fn = dyn_cast<FunctionDecl>(DeclRef->getDecl())) { diff --git a/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp b/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp index 35a062382ea3c..bbd80d490d1a7 100644 --- a/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp @@ -53,8 +53,8 @@ class ExternCRefutationVisitor ExternCRefutationVisitor(std::vector<IncludeMarker> &IncludesToBeProcessed, SourceManager &SM) : IncludesToBeProcessed(IncludesToBeProcessed), SM(SM) {} - bool shouldWalkTypesOfTypeLocs() const { return false; } - bool shouldVisitLambdaBody() const { return false; } + static bool shouldWalkTypesOfTypeLocs() { return false; } + static bool shouldVisitLambdaBody() { return false; } bool VisitLinkageSpecDecl(LinkageSpecDecl *LinkSpecDecl) const { if (LinkSpecDecl->getLanguage() != LinkageSpecLanguageIDs::C || diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.h b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.h index b4f729d3ac538..6ad406b49b758 100644 --- a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.h +++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.h @@ -38,7 +38,7 @@ class LoopConvertCheck : public ClangTidyCheck { bool NeedsReverseCall = false; }; - void getAliasRange(SourceManager &SM, SourceRange &DeclRange); + static void getAliasRange(SourceManager &SM, SourceRange &DeclRange); void doConversion(ASTContext *Context, const VarDecl *IndexVar, const ValueDecl *MaybeContainer, const UsageResult &Usages, @@ -46,18 +46,18 @@ class LoopConvertCheck : public ClangTidyCheck { bool AliasFromForInit, const ForStmt *Loop, RangeDescriptor Descriptor); - StringRef getContainerString(ASTContext *Context, const ForStmt *Loop, - const Expr *ContainerExpr); + static StringRef getContainerString(ASTContext *Context, const ForStmt *Loop, + const Expr *ContainerExpr); - void getArrayLoopQualifiers(ASTContext *Context, - const ast_matchers::BoundNodes &Nodes, - const Expr *ContainerExpr, - const UsageResult &Usages, - RangeDescriptor &Descriptor); + static void getArrayLoopQualifiers(ASTContext *Context, + const ast_matchers::BoundNodes &Nodes, + const Expr *ContainerExpr, + const UsageResult &Usages, + RangeDescriptor &Descriptor); - void getIteratorLoopQualifiers(ASTContext *Context, - const ast_matchers::BoundNodes &Nodes, - RangeDescriptor &Descriptor); + static void getIteratorLoopQualifiers(ASTContext *Context, + const ast_matchers::BoundNodes &Nodes, + RangeDescriptor &Descriptor); void determineRangeDescriptor(ASTContext *Context, const ast_matchers::BoundNodes &Nodes, diff --git a/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp index 934cc24817d73..32ac93c243fe5 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp @@ -80,12 +80,13 @@ AST_MATCHER_P(clang::Expr, anyOfExhaustive, std::vector<Matcher<clang::Stmt>>, // the literal of every constant and for formulas' subexpressions that look at // literals. struct MatchBuilder { - auto - ignoreParenAndArithmeticCasting(const Matcher<clang::Expr> Matcher) const { + static auto + ignoreParenAndArithmeticCasting(const Matcher<clang::Expr> Matcher) { return expr(hasType(qualType(isArithmetic())), ignoringParenCasts(Matcher)); } - auto ignoreParenAndFloatingCasting(const Matcher<clang::Expr> Matcher) const { + static auto + ignoreParenAndFloatingCasting(const Matcher<clang::Expr> Matcher) { return expr(hasType(qualType(isFloating())), ignoringParenCasts(Matcher)); } diff --git a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp index 82f64096cbec1..c5f75b28aff44 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp @@ -51,7 +51,7 @@ struct UnqualNameVisitor : public RecursiveASTVisitor<UnqualNameVisitor> { bool Collision = false; - bool shouldWalkTypesOfTypeLocs() const { return false; } + static bool shouldWalkTypesOfTypeLocs() { return false; } bool visitUnqualName(StringRef UnqualName) { // Check for collisions with function arguments. diff --git a/clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.h b/clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.h index 38f756f9b452f..79a33e129ee9c 100644 --- a/clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.h +++ b/clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.h @@ -56,7 +56,8 @@ class UnnecessaryCopyInitialization : public ClangTidyCheck { const VarDecl *ObjectArg); void handleCopyFromLocalVar(const CheckContext &Ctx, const VarDecl &OldVar); - void maybeIssueFixes(const CheckContext &Ctx, DiagnosticBuilder &Diagnostic); + static void maybeIssueFixes(const CheckContext &Ctx, + DiagnosticBuilder &Diagnostic); const std::vector<StringRef> AllowedTypes; const std::vector<StringRef> ExcludedContainerTypes; diff --git a/clang-tools-extra/clang-tidy/readability/AvoidUnconditionalPreprocessorIfCheck.cpp b/clang-tools-extra/clang-tidy/readability/AvoidUnconditionalPreprocessorIfCheck.cpp index ca5fc358ce290..e7a696d6c7f61 100644 --- a/clang-tools-extra/clang-tidy/readability/AvoidUnconditionalPreprocessorIfCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/AvoidUnconditionalPreprocessorIfCheck.cpp @@ -66,7 +66,7 @@ struct AvoidUnconditionalPreprocessorIfPPCallbacks : public PPCallbacks { return true; } - bool isImmutableToken(const Token &Tok) { + static bool isImmutableToken(const Token &Tok) { switch (Tok.getKind()) { case tok::eod: case tok::eof: diff --git a/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp b/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp index d6784d0e8fba8..544be3e641c6d 100644 --- a/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp +++ b/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp @@ -66,7 +66,7 @@ AST_MATCHER(CXXMethodDecl, usesThis) { // If we enter a class declaration, don't traverse into it as any usages of // `this` will correspond to the nested class. - bool TraverseCXXRecordDecl(CXXRecordDecl *RD) { return true; } + static bool TraverseCXXRecordDecl(CXXRecordDecl *RD) { return true; } } UsageOfThis; diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp index fab2365f1147a..96715c0666830 100644 --- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp @@ -417,7 +417,7 @@ IdentifierNamingCheck::IdentifierNamingCheck(StringRef Name, IdentifierNamingCheck::~IdentifierNamingCheck() = default; bool IdentifierNamingCheck::HungarianNotation::checkOptionValid( - int StyleKindIndex) const { + int StyleKindIndex) { if ((StyleKindIndex >= SK_EnumConstant) && (StyleKindIndex <= SK_ConstantParameter)) return true; @@ -429,7 +429,7 @@ bool IdentifierNamingCheck::HungarianNotation::checkOptionValid( } bool IdentifierNamingCheck::HungarianNotation::isOptionEnabled( - StringRef OptionKey, const llvm::StringMap<std::string> &StrMap) const { + StringRef OptionKey, const llvm::StringMap<std::string> &StrMap) { if (OptionKey.empty()) return false; @@ -442,7 +442,7 @@ bool IdentifierNamingCheck::HungarianNotation::isOptionEnabled( void IdentifierNamingCheck::HungarianNotation::loadFileConfig( const ClangTidyCheck::OptionsView &Options, - IdentifierNamingCheck::HungarianNotationOption &HNOption) const { + IdentifierNamingCheck::HungarianNotationOption &HNOption) { static constexpr StringRef HNOpts[] = {"TreatStructAsClass"}; static constexpr StringRef HNDerivedTypes[] = {"Array", "Pointer", @@ -535,7 +535,7 @@ std::string IdentifierNamingCheck::HungarianNotation::getPrefix( bool IdentifierNamingCheck::HungarianNotation::removeDuplicatedPrefix( SmallVector<StringRef, 8> &Words, - const IdentifierNamingCheck::HungarianNotationOption &HNOption) const { + const IdentifierNamingCheck::HungarianNotationOption &HNOption) { if (Words.size() <= 1) return true; @@ -652,7 +652,7 @@ std::string IdentifierNamingCheck::HungarianNotation::getClassPrefix( } std::string IdentifierNamingCheck::HungarianNotation::getEnumPrefix( - const EnumConstantDecl *ECD) const { + const EnumConstantDecl *ECD) { const auto *ED = cast<EnumDecl>(ECD->getDeclContext()); std::string Name = ED->getName().str(); @@ -697,7 +697,7 @@ std::string IdentifierNamingCheck::HungarianNotation::getEnumPrefix( } size_t IdentifierNamingCheck::HungarianNotation::getAsteriskCount( - const std::string &TypeName) const { + const std::string &TypeName) { size_t Pos = TypeName.find('*'); size_t Count = 0; for (; Pos < TypeName.length(); Pos++, Count++) { @@ -719,7 +719,7 @@ size_t IdentifierNamingCheck::HungarianNotation::getAsteriskCount( } void IdentifierNamingCheck::HungarianNotation::loadDefaultConfig( - IdentifierNamingCheck::HungarianNotationOption &HNOption) const { + IdentifierNamingCheck::HungarianNotationOption &HNOption) { // Options static constexpr std::pair<StringRef, StringRef> General[] = { @@ -1024,7 +1024,7 @@ std::string IdentifierNamingCheck::fixupWithCase( } bool IdentifierNamingCheck::isParamInMainLikeFunction( - const ParmVarDecl &ParmDecl, bool IncludeMainLike) const { + const ParmVarDecl &ParmDecl, bool IncludeMainLike) { const auto *FDecl = dyn_cast_or_null<FunctionDecl>(ParmDecl.getParentFunctionOrMethod()); if (!FDecl) @@ -1472,7 +1472,7 @@ StyleKind IdentifierNamingCheck::findStyleKindForAnonField( StyleKind IdentifierNamingCheck::findStyleKindForField( const FieldDecl *Field, QualType Type, - ArrayRef<std::optional<NamingStyle>> NamingStyles) const { + ArrayRef<std::optional<NamingStyle>> NamingStyles) { if (!Type.isNull() && Type.isConstQualified()) { if (NamingStyles[SK_ConstantMember]) return SK_ConstantMember; @@ -1498,7 +1498,7 @@ StyleKind IdentifierNamingCheck::findStyleKindForField( StyleKind IdentifierNamingCheck::findStyleKindForVar( const VarDecl *Var, QualType Type, - ArrayRef<std::optional<NamingStyle>> NamingStyles) const { + ArrayRef<std::optional<NamingStyle>> NamingStyles) { if (Var->isConstexpr() && NamingStyles[SK_ConstexprVariable]) return SK_ConstexprVariable; diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h index 646ec0eac8dd1..436bb96cbc501 100644 --- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h +++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h @@ -90,23 +90,23 @@ class IdentifierNamingCheck final : public RenamerClangTidyCheck { struct HungarianNotation { public: - bool checkOptionValid(int StyleKindIndex) const; - bool isOptionEnabled(StringRef OptionKey, - const llvm::StringMap<std::string> &StrMap) const; + static bool checkOptionValid(int StyleKindIndex); + static bool isOptionEnabled(StringRef OptionKey, + const llvm::StringMap<std::string> &StrMap); - size_t getAsteriskCount(const std::string &TypeName) const; + static size_t getAsteriskCount(const std::string &TypeName); size_t getAsteriskCount(const std::string &TypeName, const NamedDecl *ND) const; - void loadDefaultConfig( - IdentifierNamingCheck::HungarianNotationOption &HNOption) const; - void loadFileConfig( - const ClangTidyCheck::OptionsView &Options, - IdentifierNamingCheck::HungarianNotationOption &HNOption) const; + static void + loadDefaultConfig(IdentifierNamingCheck::HungarianNotationOption &HNOption); + static void + loadFileConfig(const ClangTidyCheck::OptionsView &Options, + IdentifierNamingCheck::HungarianNotationOption &HNOption); - bool removeDuplicatedPrefix( + static bool removeDuplicatedPrefix( SmallVector<StringRef, 8> &Words, - const IdentifierNamingCheck::HungarianNotationOption &HNOption) const; + const IdentifierNamingCheck::HungarianNotationOption &HNOption); std::string getPrefix( const Decl *D, @@ -120,7 +120,7 @@ class IdentifierNamingCheck final : public RenamerClangTidyCheck { const CXXRecordDecl *CRD, const IdentifierNamingCheck::HungarianNotationOption &HNOption) const; - std::string getEnumPrefix(const EnumConstantDecl *ECD) const; + static std::string getEnumPrefix(const EnumConstantDecl *ECD); std::string getDeclTypeName(const NamedDecl *ND) const; }; @@ -191,8 +191,8 @@ class IdentifierNamingCheck final : public RenamerClangTidyCheck { const IdentifierNamingCheck::HungarianNotationOption &HNOption, StyleKind SK, const SourceManager &SM, bool IgnoreFailedSplit) const; - bool isParamInMainLikeFunction(const ParmVarDecl &ParmDecl, - bool IncludeMainLike) const; + static bool isParamInMainLikeFunction(const ParmVarDecl &ParmDecl, + bool IncludeMainLike); private: std::optional<FailureInfo> @@ -212,13 +212,13 @@ class IdentifierNamingCheck final : public RenamerClangTidyCheck { const FieldDecl *AnonField, ArrayRef<std::optional<NamingStyle>> NamingStyles) const; - StyleKind findStyleKindForField( - const FieldDecl *Field, QualType Type, - ArrayRef<std::optional<NamingStyle>> NamingStyles) const; + static StyleKind + findStyleKindForField(const FieldDecl *Field, QualType Type, + ArrayRef<std::optional<NamingStyle>> NamingStyles); - StyleKind + static StyleKind findStyleKindForVar(const VarDecl *Var, QualType Type, - ArrayRef<std::optional<NamingStyle>> NamingStyles) const; + ArrayRef<std::optional<NamingStyle>> NamingStyles); /// Stores the style options as a vector, indexed by the specified \ref /// StyleKind, for a given directory. diff --git a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp index 6f91527c420e8..02a22a21deb48 100644 --- a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp @@ -223,7 +223,7 @@ bool MagicNumbersCheck::isIgnoredValue(const FloatingLiteral *Literal) const { } bool MagicNumbersCheck::isSyntheticValue(const SourceManager *SourceManager, - const IntegerLiteral *Literal) const { + const IntegerLiteral *Literal) { const std::pair<FileID, unsigned> FileOffset = SourceManager->getDecomposedLoc(Literal->getLocation()); if (FileOffset.first.isInvalid()) @@ -247,7 +247,7 @@ bool MagicNumbersCheck::isBitFieldWidth( bool MagicNumbersCheck::isUserDefinedLiteral( const clang::ast_matchers::MatchFinder::MatchResult &Result, - const clang::Expr &Literal) const { + const clang::Expr &Literal) { DynTypedNodeList Parents = Result.Context->getParents(Literal); if (Parents.empty()) return false; diff --git a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.h b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.h index 70a17889d244e..f35761e6f66cc 100644 --- a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.h +++ b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.h @@ -38,8 +38,8 @@ class MagicNumbersCheck : public ClangTidyCheck { const FloatingLiteral *) const { return false; } - bool isSyntheticValue(const clang::SourceManager *SourceManager, - const IntegerLiteral *Literal) const; + static bool isSyntheticValue(const clang::SourceManager *SourceManager, + const IntegerLiteral *Literal); bool isBitFieldWidth(const clang::ast_matchers::MatchFinder::MatchResult &, const FloatingLiteral &) const { @@ -50,9 +50,9 @@ class MagicNumbersCheck : public ClangTidyCheck { isBitFieldWidth(const clang::ast_matchers::MatchFinder::MatchResult &Result, const IntegerLiteral &Literal) const; - bool isUserDefinedLiteral( + static bool isUserDefinedLiteral( const clang::ast_matchers::MatchFinder::MatchResult &Result, - const clang::Expr &Literal) const; + const clang::Expr &Literal); template <typename L> void checkBoundMatch(const ast_matchers::MatchFinder::MatchResult &Result, diff --git a/clang-tools-extra/clang-tidy/utils/FormatStringConverter.h b/clang-tools-extra/clang-tidy/utils/FormatStringConverter.h index 15d1f597fe440..ae27ff80a9ef6 100644 --- a/clang-tools-extra/clang-tidy/utils/FormatStringConverter.h +++ b/clang-tools-extra/clang-tidy/utils/FormatStringConverter.h @@ -89,11 +89,13 @@ class FormatStringConverter // puts the width and preicision first. std::vector<std::tuple<unsigned, unsigned>> ArgRotates; - void emitAlignment(const PrintfSpecifier &FS, std::string &FormatSpec); - void emitSign(const PrintfSpecifier &FS, std::string &FormatSpec); - void emitAlternativeForm(const PrintfSpecifier &FS, std::string &FormatSpec); - void emitFieldWidth(const PrintfSpecifier &FS, std::string &FormatSpec); - void emitPrecision(const PrintfSpecifier &FS, std::string &FormatSpec); + static void emitAlignment(const PrintfSpecifier &FS, std::string &FormatSpec); + static void emitSign(const PrintfSpecifier &FS, std::string &FormatSpec); + static void emitAlternativeForm(const PrintfSpecifier &FS, + std::string &FormatSpec); + static void emitFieldWidth(const PrintfSpecifier &FS, + std::string &FormatSpec); + static void emitPrecision(const PrintfSpecifier &FS, std::string &FormatSpec); void emitStringArgument(unsigned ArgIndex, const Expr *Arg); bool emitIntegerArgument(ConversionSpecifier::Kind ArgKind, const Expr *Arg, unsigned ArgIndex, std::string &FormatSpec); diff --git a/clang-tools-extra/clang-tidy/utils/HeaderGuard.h b/clang-tools-extra/clang-tidy/utils/HeaderGuard.h index eff75d6ff26a2..8dd2ad6075ba3 100644 --- a/clang-tools-extra/clang-tidy/utils/HeaderGuard.h +++ b/clang-tools-extra/clang-tidy/utils/HeaderGuard.h @@ -25,7 +25,7 @@ class HeaderGuardCheck : public ClangTidyCheck { Preprocessor *ModuleExpanderPP) override; /// Ensure that the provided header guard is a non-reserved identifier. - std::string sanitizeHeaderGuard(StringRef Guard); + static std::string sanitizeHeaderGuard(StringRef Guard); /// Returns ``true`` if the check should suggest inserting a trailing comment /// on the ``#endif`` of the header guard. It will use the same name as diff --git a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp index 90539eaabbe03..a065da283a8b6 100644 --- a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp +++ b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp @@ -219,9 +219,9 @@ class RenamerClangTidyVisitor : Check(Check), SM(SM), AggressiveDependentMemberLookup(AggressiveDependentMemberLookup) {} - bool shouldVisitTemplateInstantiations() const { return true; } + static bool shouldVisitTemplateInstantiations() { return true; } - bool shouldVisitImplicitCode() const { return false; } + static bool shouldVisitImplicitCode() { return false; } bool VisitCXXConstructorDecl(CXXConstructorDecl *Decl) { if (Decl->isImplicit()) >From 2591c089b95770919cc84e7874a5b67b5dd6972c Mon Sep 17 00:00:00 2001 From: Victor Chernyakin <chernyakin.victo...@outlook.com> Date: Sun, 31 Aug 2025 17:34:47 -0700 Subject: [PATCH 2/2] Function can't be static in debug build --- .../clang-tidy/ExpandModularHeadersPPCallbacks.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp b/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp index 06721dd4f900e..5e705f720c86e 100644 --- a/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp +++ b/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp @@ -51,7 +51,7 @@ class ExpandModularHeadersPPCallbacks::FileRecorder { /// Makes sure we have contents for all the files we were interested in. /// Ideally `FilesToRecord` should be empty. - static void checkAllFilesRecorded() { + void checkAllFilesRecorded() { LLVM_DEBUG({ for (auto FileEntry : FilesToRecord) llvm::dbgs() << "Did not record contents for input file: " _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits