https://github.com/dvbuka updated https://github.com/llvm/llvm-project/pull/162039
>From 236cee683ac84ebd7ac6cd41f0d78020c312f68c Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Sun, 5 Oct 2025 15:44:45 -0700 Subject: [PATCH 01/23] [clang-tidy] Add new alias 'libc-memory-calls-on-nontrivial-types' for 'cert-oop57-cpp' --- .../clang-tidy/bugprone/CMakeLists.txt | 1 + ...LibcMemoryCallsOnNonTrivialTypesCheck.cpp} | 14 +++---- .../LibcMemoryCallsOnNonTrivialTypesCheck.h} | 16 ++++---- .../clang-tidy/cert/CERTTidyModule.cpp | 4 +- .../clang-tidy/cert/CMakeLists.txt | 1 - clang-tools-extra/docs/ReleaseNotes.rst | 5 +++ .../libc-memory-calls-on-nontrivial-types.rst | 40 +++++++++++++++++++ .../docs/clang-tidy/checks/cert/oop57-cpp.rst | 40 +++---------------- .../docs/clang-tidy/checks/list.rst | 5 ++- ...libc-memory-calls-on-nontrivial-types.cpp} | 8 ++-- 10 files changed, 75 insertions(+), 59 deletions(-) rename clang-tools-extra/clang-tidy/{cert/NonTrivialTypesLibcMemoryCallsCheck.cpp => bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.cpp} (92%) rename clang-tools-extra/clang-tidy/{cert/NonTrivialTypesLibcMemoryCallsCheck.h => bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h} (66%) create mode 100644 clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst rename clang-tools-extra/test/clang-tidy/checkers/{cert/oop57-cpp.cpp => bugprone/libc-memory-calls-on-nontrivial-types.cpp} (93%) diff --git a/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt b/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt index c8943e5b22ef8..f5b8c71da833a 100644 --- a/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt +++ b/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt @@ -43,6 +43,7 @@ add_clang_library(clangTidyBugproneModule STATIC InfiniteLoopCheck.cpp IntegerDivisionCheck.cpp LambdaFunctionNameCheck.cpp + LibcMemoryCallsOnNonTrivialTypesCheck.cpp MacroParenthesesCheck.cpp MacroRepeatedSideEffectsCheck.cpp MisleadingSetterOfReferenceCheck.cpp diff --git a/clang-tools-extra/clang-tidy/cert/NonTrivialTypesLibcMemoryCallsCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.cpp similarity index 92% rename from clang-tools-extra/clang-tidy/cert/NonTrivialTypesLibcMemoryCallsCheck.cpp rename to clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.cpp index e266cf995e8a7..5127611b191d9 100644 --- a/clang-tools-extra/clang-tidy/cert/NonTrivialTypesLibcMemoryCallsCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "NonTrivialTypesLibcMemoryCallsCheck.h" +#include "LibcMemoryCallsOnNonTrivialTypesCheck.h" #include "../utils/OptionsUtils.h" #include "clang/AST/Decl.h" #include "clang/ASTMatchers/ASTMatchFinder.h" @@ -17,7 +17,7 @@ using namespace clang::ast_matchers; -namespace clang::tidy::cert { +namespace clang::tidy::bugprone { namespace { AST_MATCHER(CXXRecordDecl, isTriviallyDefaultConstructible) { @@ -48,21 +48,21 @@ static constexpr llvm::StringRef ComparisonOperators[] = { "operator==", "operator!=", "operator<", "operator>", "operator<=", "operator>="}; -NonTrivialTypesLibcMemoryCallsCheck::NonTrivialTypesLibcMemoryCallsCheck( +LibcMemoryCallsOnNonTrivialTypesCheck::LibcMemoryCallsOnNonTrivialTypesCheck( StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), MemSetNames(Options.get("MemSetNames", "")), MemCpyNames(Options.get("MemCpyNames", "")), MemCmpNames(Options.get("MemCmpNames", "")) {} -void NonTrivialTypesLibcMemoryCallsCheck::storeOptions( +void LibcMemoryCallsOnNonTrivialTypesCheck::storeOptions( ClangTidyOptions::OptionMap &Opts) { Options.store(Opts, "MemSetNames", MemSetNames); Options.store(Opts, "MemCpyNames", MemCpyNames); Options.store(Opts, "MemCmpNames", MemCmpNames); } -void NonTrivialTypesLibcMemoryCallsCheck::registerMatchers( +void LibcMemoryCallsOnNonTrivialTypesCheck::registerMatchers( MatchFinder *Finder) { using namespace ast_matchers::internal; auto IsStructPointer = [](Matcher<CXXRecordDecl> Constraint = anything(), @@ -103,7 +103,7 @@ void NonTrivialTypesLibcMemoryCallsCheck::registerMatchers( this); } -void NonTrivialTypesLibcMemoryCallsCheck::check( +void LibcMemoryCallsOnNonTrivialTypesCheck::check( const MatchFinder::MatchResult &Result) { if (const auto *Caller = Result.Nodes.getNodeAs<CallExpr>("lazyConstruct")) { diag(Caller->getBeginLoc(), "calling %0 on a non-trivially default " @@ -122,4 +122,4 @@ void NonTrivialTypesLibcMemoryCallsCheck::check( } } -} // namespace clang::tidy::cert +} // namespace clang::tidy::bugprone diff --git a/clang-tools-extra/clang-tidy/cert/NonTrivialTypesLibcMemoryCallsCheck.h b/clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h similarity index 66% rename from clang-tools-extra/clang-tidy/cert/NonTrivialTypesLibcMemoryCallsCheck.h rename to clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h index 4589ce444c878..c71796eb80226 100644 --- a/clang-tools-extra/clang-tidy/cert/NonTrivialTypesLibcMemoryCallsCheck.h +++ b/clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h @@ -6,21 +6,21 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CERT_NONTRIVIALTYPESLIBCMEMORYCALLSCHECK_H -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CERT_NONTRIVIALTYPESLIBCMEMORYCALLSCHECK_H +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_NONTRIVIALTYPESLIBCMEMORYCALLSCHECK_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_NONTRIVIALTYPESLIBCMEMORYCALLSCHECK_H #include "../ClangTidyCheck.h" -namespace clang::tidy::cert { +namespace clang::tidy::bugprone { /// Flags use of the `C` standard library functions 'memset', 'memcpy' and /// 'memcmp' and similar derivatives on non-trivial types. /// /// For the user-facing documentation see: -/// https://clang.llvm.org/extra/clang-tidy/checks/cert/oop57-cpp.html -class NonTrivialTypesLibcMemoryCallsCheck : public ClangTidyCheck { +/// https://clang.llvm.org/extra/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.html +class LibcMemoryCallsOnNonTrivialTypesCheck : public ClangTidyCheck { public: - NonTrivialTypesLibcMemoryCallsCheck(StringRef Name, + LibcMemoryCallsOnNonTrivialTypesCheck(StringRef Name, ClangTidyContext *Context); bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { return LangOpts.CPlusPlus && !LangOpts.ObjC; @@ -35,6 +35,6 @@ class NonTrivialTypesLibcMemoryCallsCheck : public ClangTidyCheck { const StringRef MemCmpNames; }; -} // namespace clang::tidy::cert +} // namespace clang::tidy::bugprone -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CERT_NONTRIVIALTYPESLIBCMEMORYCALLSCHECK_H +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_NONTRIVIALTYPESLIBCMEMORYCALLSCHECK_H diff --git a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp index c1ca2cec7a1eb..decc228e57611 100644 --- a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp @@ -11,6 +11,7 @@ #include "../ClangTidyModuleRegistry.h" #include "../bugprone/BadSignalToKillThreadCheck.h" #include "../bugprone/CommandProcessorCheck.h" +#include "../bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h" #include "../bugprone/PointerArithmeticOnPolymorphicObjectCheck.h" #include "../bugprone/ReservedIdentifierCheck.h" #include "../bugprone/SignalHandlerCheck.h" @@ -39,7 +40,6 @@ #include "FloatLoopCounter.h" #include "LimitedRandomnessCheck.h" #include "MutatingCopyCheck.h" -#include "NonTrivialTypesLibcMemoryCallsCheck.h" #include "ProperlySeededRandomGeneratorCheck.h" #include "ThrownExceptionTypeCheck.h" @@ -278,7 +278,7 @@ class CERTModule : public ClangTidyModule { "cert-oop11-cpp"); CheckFactories.registerCheck<bugprone::UnhandledSelfAssignmentCheck>( "cert-oop54-cpp"); - CheckFactories.registerCheck<NonTrivialTypesLibcMemoryCallsCheck>( + CheckFactories.registerCheck<bugprone::LibcMemoryCallsOnNonTrivialTypesCheck>( "cert-oop57-cpp"); CheckFactories.registerCheck<MutatingCopyCheck>("cert-oop58-cpp"); diff --git a/clang-tools-extra/clang-tidy/cert/CMakeLists.txt b/clang-tools-extra/clang-tidy/cert/CMakeLists.txt index 453d1d30921e9..ce57faadcf749 100644 --- a/clang-tools-extra/clang-tidy/cert/CMakeLists.txt +++ b/clang-tools-extra/clang-tidy/cert/CMakeLists.txt @@ -10,7 +10,6 @@ add_clang_library(clangTidyCERTModule STATIC FloatLoopCounter.cpp LimitedRandomnessCheck.cpp MutatingCopyCheck.cpp - NonTrivialTypesLibcMemoryCallsCheck.cpp ProperlySeededRandomGeneratorCheck.cpp ThrownExceptionTypeCheck.cpp diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 7e836a7114d50..91f15bf152cb4 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -241,6 +241,11 @@ New check aliases <clang-tidy/checks/bugprone/throwing-static-initialization>` keeping initial check as an alias to the new one. +- Renamed :doc:`cert-oop57-cpp <clang-tidy/checks/cert/oop57-cpp>` to + :doc:`bugprone-libc-memory-calls-on-nontrivial-types + <clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types>` + keeping initial check as an alias to the new one. + Changes in existing checks ^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst new file mode 100644 index 0000000000000..9be8f44bd9dd0 --- /dev/null +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst @@ -0,0 +1,40 @@ +.. title:: clang-tidy - bugprone-libc-memory-calls-on-nontrivial-types + +bugprone-libc-memory-calls-on-nontrivial-types +============== + + Flags use of the `C` standard library functions ``memset``, ``memcpy`` and + ``memcmp`` and similar derivatives on non-trivial types. + +Options +------- + +.. option:: MemSetNames + + Specify extra functions to flag that act similarly to ``memset``. + Specify names in a semicolon delimited list. + Default is an empty string. + The check will detect the following functions: + `memset`, `std::memset`. + +.. option:: MemCpyNames + + Specify extra functions to flag that act similarly to ``memcpy``. + Specify names in a semicolon delimited list. + Default is an empty string. + The check will detect the following functions: + `std::memcpy`, `memcpy`, `std::memmove`, `memmove`, `std::strcpy`, + `strcpy`, `memccpy`, `stpncpy`, `strncpy`. + +.. option:: MemCmpNames + + Specify extra functions to flag that act similarly to ``memcmp``. + Specify names in a semicolon delimited list. + Default is an empty string. + The check will detect the following functions: + `std::memcmp`, `memcmp`, `std::strcmp`, `strcmp`, `strncmp`. + +This check corresponds to the CERT C++ Coding Standard rule +`OOP57-CPP. Prefer special member functions and overloaded operators to C +Standard Library functions +<https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP57-CPP.+Prefer+special+member+functions+and+overloaded+operators+to+C+Standard+Library+functions>`_. diff --git a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst index 4787abf1554ab..d504adfa8c2b4 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst @@ -1,40 +1,10 @@ .. title:: clang-tidy - cert-oop57-cpp +.. meta:: + :http-equiv=refresh: 5;URL=../bugprone/libc-memory-calls-on-nontrivial-types.html cert-oop57-cpp ============== - Flags use of the `C` standard library functions ``memset``, ``memcpy`` and - ``memcmp`` and similar derivatives on non-trivial types. - -Options -------- - -.. option:: MemSetNames - - Specify extra functions to flag that act similarly to ``memset``. - Specify names in a semicolon delimited list. - Default is an empty string. - The check will detect the following functions: - `memset`, `std::memset`. - -.. option:: MemCpyNames - - Specify extra functions to flag that act similarly to ``memcpy``. - Specify names in a semicolon delimited list. - Default is an empty string. - The check will detect the following functions: - `std::memcpy`, `memcpy`, `std::memmove`, `memmove`, `std::strcpy`, - `strcpy`, `memccpy`, `stpncpy`, `strncpy`. - -.. option:: MemCmpNames - - Specify extra functions to flag that act similarly to ``memcmp``. - Specify names in a semicolon delimited list. - Default is an empty string. - The check will detect the following functions: - `std::memcmp`, `memcmp`, `std::strcmp`, `strcmp`, `strncmp`. - -This check corresponds to the CERT C++ Coding Standard rule -`OOP57-CPP. Prefer special member functions and overloaded operators to C -Standard Library functions -<https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP57-CPP.+Prefer+special+member+functions+and+overloaded+operators+to+C+Standard+Library+functions>`_. +The cert-oop57-cpp check is an alias, please see +`bugprone-libc-memory-calls-on-nontrivial-types <../bugprone/libc-memory-calls-on-nontrivial-types.html>`_ +for more information. \ No newline at end of file diff --git a/clang-tools-extra/docs/clang-tidy/checks/list.rst b/clang-tools-extra/docs/clang-tidy/checks/list.rst index f94696d4ef9c7..07045dd244770 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/list.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/list.rst @@ -125,6 +125,7 @@ Clang-Tidy Checks :doc:`bugprone-non-zero-enum-to-bool-conversion <bugprone/non-zero-enum-to-bool-conversion>`, :doc:`bugprone-nondeterministic-pointer-iteration-order <bugprone/nondeterministic-pointer-iteration-order>`, :doc:`bugprone-not-null-terminated-result <bugprone/not-null-terminated-result>`, "Yes" + :doc:`bugprone-libc-memory-calls-on-nontrivial-types <bugprone/libc-memory-calls-on-nontrivial-types>`, :doc:`bugprone-optional-value-conversion <bugprone/optional-value-conversion>`, "Yes" :doc:`bugprone-parent-virtual-call <bugprone/parent-virtual-call>`, "Yes" :doc:`bugprone-pointer-arithmetic-on-polymorphic-object <bugprone/pointer-arithmetic-on-polymorphic-object>`, @@ -180,7 +181,6 @@ Clang-Tidy Checks :doc:`cert-mem57-cpp <cert/mem57-cpp>`, :doc:`cert-msc50-cpp <cert/msc50-cpp>`, :doc:`cert-msc51-cpp <cert/msc51-cpp>`, - :doc:`cert-oop57-cpp <cert/oop57-cpp>`, :doc:`cert-oop58-cpp <cert/oop58-cpp>`, :doc:`concurrency-mt-unsafe <concurrency/mt-unsafe>`, :doc:`concurrency-thread-canceltype-asynchronous <concurrency/thread-canceltype-asynchronous>`, @@ -440,8 +440,8 @@ Check aliases :doc:`cert-dcl51-cpp <cert/dcl51-cpp>`, :doc:`bugprone-reserved-identifier <bugprone/reserved-identifier>`, "Yes" :doc:`cert-dcl54-cpp <cert/dcl54-cpp>`, :doc:`misc-new-delete-overloads <misc/new-delete-overloads>`, :doc:`cert-dcl59-cpp <cert/dcl59-cpp>`, :doc:`google-build-namespaces <google/build-namespaces>`, - :doc:`cert-err09-cpp <cert/err09-cpp>`, :doc:`misc-throw-by-value-catch-by-reference <misc/throw-by-value-catch-by-reference>`, :doc:`cert-env33-c <cert/env33-c>`, :doc:`bugprone-command-processor <bugprone/command-processor>`, + :doc:`cert-err09-cpp <cert/err09-cpp>`, :doc:`misc-throw-by-value-catch-by-reference <misc/throw-by-value-catch-by-reference>`, :doc:`cert-err34-c <cert/err34-c>`, :doc:`bugprone-unchecked-string-to-number-conversion <bugprone/unchecked-string-to-number-conversion>`, :doc:`cert-err52-cpp <cert/err52-cpp>`, :doc:`modernize-avoid-setjmp-longjmp <modernize/avoid-setjmp-longjmp>`, :doc:`cert-err58-cpp <cert/err58-cpp>`, :doc:`bugprone-throwing-static-initialization <bugprone/throwing-static-initialization>`, @@ -457,6 +457,7 @@ Check aliases :doc:`cert-msc54-cpp <cert/msc54-cpp>`, :doc:`bugprone-signal-handler <bugprone/signal-handler>`, :doc:`cert-oop11-cpp <cert/oop11-cpp>`, :doc:`performance-move-constructor-init <performance/move-constructor-init>`, :doc:`cert-oop54-cpp <cert/oop54-cpp>`, :doc:`bugprone-unhandled-self-assignment <bugprone/unhandled-self-assignment>`, + :doc:`cert-oop57-cpp <cert/oop57-cpp>`, :doc:`bugprone-libc-memory-calls-on-nontrivial-types <bugprone/libc-memory-calls-on-nontrivial-types>`, :doc:`cert-pos44-c <cert/pos44-c>`, :doc:`bugprone-bad-signal-to-kill-thread <bugprone/bad-signal-to-kill-thread>`, :doc:`cert-pos47-c <cert/pos47-c>`, :doc:`concurrency-thread-canceltype-asynchronous <concurrency/thread-canceltype-asynchronous>`, :doc:`cert-sig30-c <cert/sig30-c>`, :doc:`bugprone-signal-handler <bugprone/signal-handler>`, diff --git a/clang-tools-extra/test/clang-tidy/checkers/cert/oop57-cpp.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/libc-memory-calls-on-nontrivial-types.cpp similarity index 93% rename from clang-tools-extra/test/clang-tidy/checkers/cert/oop57-cpp.cpp rename to clang-tools-extra/test/clang-tidy/checkers/bugprone/libc-memory-calls-on-nontrivial-types.cpp index e34315fc98d25..8eac7e440a17e 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/cert/oop57-cpp.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/libc-memory-calls-on-nontrivial-types.cpp @@ -1,8 +1,8 @@ -// RUN: %check_clang_tidy %s cert-oop57-cpp %t -- \ +// RUN: %check_clang_tidy %s libc-memory-calls-on-nontrivial-types %t -- \ // RUN: -config='{CheckOptions: \ -// RUN: {cert-oop57-cpp.MemSetNames: mymemset, \ -// RUN: cert-oop57-cpp.MemCpyNames: mymemcpy, \ -// RUN: cert-oop57-cpp.MemCmpNames: mymemcmp}}' \ +// RUN: {libc-memory-calls-on-nontrivial-types.MemSetNames: mymemset, \ +// RUN: libc-memory-calls-on-nontrivial-types.MemCpyNames: mymemcpy, \ +// RUN: libc-memory-calls-on-nontrivial-types.MemCmpNames: mymemcmp}}' \ // RUN: -- void mymemset(void *, unsigned char, decltype(sizeof(int))); >From 292cafb6fa81c663554a871e3ef2ce3adffb956f Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Mon, 6 Oct 2025 11:49:07 -0700 Subject: [PATCH 02/23] Update clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst Co-authored-by: EugeneZelenko <[email protected]> --- .../checks/bugprone/libc-memory-calls-on-nontrivial-types.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst index 9be8f44bd9dd0..dd881a83dab53 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst @@ -15,7 +15,7 @@ Options Specify names in a semicolon delimited list. Default is an empty string. The check will detect the following functions: - `memset`, `std::memset`. + ``memset``, ``std::memset``. .. option:: MemCpyNames >From a928e61df64593cd01eeecd8dfb9390be6aaf1ce Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Mon, 6 Oct 2025 12:09:38 -0700 Subject: [PATCH 03/23] Format function names properly --- .../bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h | 2 +- .../bugprone/libc-memory-calls-on-nontrivial-types.rst | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h b/clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h index c71796eb80226..f81a53a1aacc9 100644 --- a/clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h +++ b/clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h @@ -13,7 +13,7 @@ namespace clang::tidy::bugprone { -/// Flags use of the `C` standard library functions 'memset', 'memcpy' and +/// Flags use of the C standard library functions 'memset', 'memcpy' and /// 'memcmp' and similar derivatives on non-trivial types. /// /// For the user-facing documentation see: diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst index dd881a83dab53..2c8fd7bf0451f 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst @@ -1,9 +1,9 @@ .. title:: clang-tidy - bugprone-libc-memory-calls-on-nontrivial-types bugprone-libc-memory-calls-on-nontrivial-types -============== +============================================== - Flags use of the `C` standard library functions ``memset``, ``memcpy`` and + Flags use of the C standard library functions ``memset``, ``memcpy`` and ``memcmp`` and similar derivatives on non-trivial types. Options @@ -23,8 +23,8 @@ Options Specify names in a semicolon delimited list. Default is an empty string. The check will detect the following functions: - `std::memcpy`, `memcpy`, `std::memmove`, `memmove`, `std::strcpy`, - `strcpy`, `memccpy`, `stpncpy`, `strncpy`. + `std::memcpy`, ``memcpy`, `std::memmove`, ``memmove``, ``std::strcpy``, + ``strcpy``, ``memccpy``, ``stpncpy``, ``strncpy``. .. option:: MemCmpNames @@ -32,7 +32,7 @@ Options Specify names in a semicolon delimited list. Default is an empty string. The check will detect the following functions: - `std::memcmp`, `memcmp`, `std::strcmp`, `strcmp`, `strncmp`. + ``std::memcmp``, ``memcmp``, ``std::strcmp``, ``strcmp``, ``strncmp``. This check corresponds to the CERT C++ Coding Standard rule `OOP57-CPP. Prefer special member functions and overloaded operators to C >From d0ba4b3f990f51ba1b1d1af89f0b9c6506fa7db4 Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Sun, 19 Oct 2025 21:50:57 -0700 Subject: [PATCH 04/23] Update clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst Co-authored-by: Baranov Victor <[email protected]> --- clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst index d504adfa8c2b4..d6f4fa34a2a95 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst @@ -5,6 +5,6 @@ cert-oop57-cpp ============== -The cert-oop57-cpp check is an alias, please see +The `cert-oop57-cpp` check is an alias, please see `bugprone-libc-memory-calls-on-nontrivial-types <../bugprone/libc-memory-calls-on-nontrivial-types.html>`_ for more information. \ No newline at end of file >From 95fd6b56898f07a0578f788007b4fe29e42d8369 Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Sun, 19 Oct 2025 21:57:02 -0700 Subject: [PATCH 05/23] Update clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst Co-authored-by: Baranov Victor <[email protected]> --- .../docs/clang-tidy/checks/cert/oop57-cpp.rst | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst index d6f4fa34a2a95..c0ddf854bb67b 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst @@ -7,4 +7,9 @@ cert-oop57-cpp The `cert-oop57-cpp` check is an alias, please see `bugprone-libc-memory-calls-on-nontrivial-types <../bugprone/libc-memory-calls-on-nontrivial-types.html>`_ -for more information. \ No newline at end of file +for more information. + +This check corresponds to the CERT C++ Coding Standard rule +`OOP57-CPP. Prefer special member functions and overloaded operators to C +Standard Library functions +<https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP57-CPP.+Prefer+special+member+functions+and+overloaded+operators+to+C+Standard+Library+functions>`_. \ No newline at end of file >From f590f55e5876d2ceb899eccefd95e66996676a8a Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Sun, 19 Oct 2025 22:02:58 -0700 Subject: [PATCH 06/23] Add new line --- clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst index c0ddf854bb67b..fadac08299ed7 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst @@ -12,4 +12,4 @@ for more information. This check corresponds to the CERT C++ Coding Standard rule `OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions -<https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP57-CPP.+Prefer+special+member+functions+and+overloaded+operators+to+C+Standard+Library+functions>`_. \ No newline at end of file +<https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP57-CPP.+Prefer+special+member+functions+and+overloaded+operators+to+C+Standard+Library+functions>`_. >From 57a35837db417243a311c0abeaa286cddac2005b Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Sun, 19 Oct 2025 22:15:43 -0700 Subject: [PATCH 07/23] Rename to check to raw-memory-call-on-nontrivial-type --- ...alTypesCheck.cpp => RawMemoryCallOnNonTrivialType.cpp} | 0 ...rivialTypesCheck.h => RawMemoryCallOnNonTrivialType.h} | 2 +- clang-tools-extra/docs/ReleaseNotes.rst | 4 ++-- ...l-types.rst => raw-memory-call-on-nontrivial-type.rst} | 4 ++-- .../docs/clang-tidy/checks/cert/oop57-cpp.rst | 4 ++-- clang-tools-extra/docs/clang-tidy/checks/list.rst | 4 ++-- ...l-types.cpp => raw-memory-call-on-nontrivial-type.cpp} | 8 ++++---- 7 files changed, 13 insertions(+), 13 deletions(-) rename clang-tools-extra/clang-tidy/bugprone/{LibcMemoryCallsOnNonTrivialTypesCheck.cpp => RawMemoryCallOnNonTrivialType.cpp} (100%) rename clang-tools-extra/clang-tidy/bugprone/{LibcMemoryCallsOnNonTrivialTypesCheck.h => RawMemoryCallOnNonTrivialType.h} (93%) rename clang-tools-extra/docs/clang-tidy/checks/bugprone/{libc-memory-calls-on-nontrivial-types.rst => raw-memory-call-on-nontrivial-type.rst} (92%) rename clang-tools-extra/test/clang-tidy/checkers/bugprone/{libc-memory-calls-on-nontrivial-types.cpp => raw-memory-call-on-nontrivial-type.cpp} (93%) diff --git a/clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp similarity index 100% rename from clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.cpp rename to clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp diff --git a/clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h similarity index 93% rename from clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h rename to clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h index f81a53a1aacc9..fb00e6392e232 100644 --- a/clang-tools-extra/clang-tidy/bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h +++ b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h @@ -17,7 +17,7 @@ namespace clang::tidy::bugprone { /// 'memcmp' and similar derivatives on non-trivial types. /// /// For the user-facing documentation see: -/// https://clang.llvm.org/extra/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.html +/// https://clang.llvm.org/extra/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.html class LibcMemoryCallsOnNonTrivialTypesCheck : public ClangTidyCheck { public: LibcMemoryCallsOnNonTrivialTypesCheck(StringRef Name, diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 91f15bf152cb4..f981010828540 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -242,8 +242,8 @@ New check aliases keeping initial check as an alias to the new one. - Renamed :doc:`cert-oop57-cpp <clang-tidy/checks/cert/oop57-cpp>` to - :doc:`bugprone-libc-memory-calls-on-nontrivial-types - <clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types>` + :doc:`bugprone-raw-memory-call-on-nontrivial-type + <clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type>` keeping initial check as an alias to the new one. Changes in existing checks diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.rst similarity index 92% rename from clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst rename to clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.rst index 2c8fd7bf0451f..b68eabe74ce2e 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.rst @@ -1,6 +1,6 @@ -.. title:: clang-tidy - bugprone-libc-memory-calls-on-nontrivial-types +.. title:: clang-tidy - bugprone-raw-memory-call-on-nontrivial-type -bugprone-libc-memory-calls-on-nontrivial-types +bugprone-raw-memory-call-on-nontrivial-type ============================================== Flags use of the C standard library functions ``memset``, ``memcpy`` and diff --git a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst index fadac08299ed7..4426ee244ef9d 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst @@ -1,12 +1,12 @@ .. title:: clang-tidy - cert-oop57-cpp .. meta:: - :http-equiv=refresh: 5;URL=../bugprone/libc-memory-calls-on-nontrivial-types.html + :http-equiv=refresh: 5;URL=../bugprone/raw-memory-call-on-nontrivial-type.html cert-oop57-cpp ============== The `cert-oop57-cpp` check is an alias, please see -`bugprone-libc-memory-calls-on-nontrivial-types <../bugprone/libc-memory-calls-on-nontrivial-types.html>`_ +`bugprone-raw-memory-call-on-nontrivial-type <../bugprone/raw-memory-call-on-nontrivial-type.html>`_ for more information. This check corresponds to the CERT C++ Coding Standard rule diff --git a/clang-tools-extra/docs/clang-tidy/checks/list.rst b/clang-tools-extra/docs/clang-tidy/checks/list.rst index 07045dd244770..ae410cb04821f 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/list.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/list.rst @@ -125,7 +125,7 @@ Clang-Tidy Checks :doc:`bugprone-non-zero-enum-to-bool-conversion <bugprone/non-zero-enum-to-bool-conversion>`, :doc:`bugprone-nondeterministic-pointer-iteration-order <bugprone/nondeterministic-pointer-iteration-order>`, :doc:`bugprone-not-null-terminated-result <bugprone/not-null-terminated-result>`, "Yes" - :doc:`bugprone-libc-memory-calls-on-nontrivial-types <bugprone/libc-memory-calls-on-nontrivial-types>`, + :doc:`bugprone-raw-memory-call-on-nontrivial-type <bugprone/raw-memory-call-on-nontrivial-type>`, :doc:`bugprone-optional-value-conversion <bugprone/optional-value-conversion>`, "Yes" :doc:`bugprone-parent-virtual-call <bugprone/parent-virtual-call>`, "Yes" :doc:`bugprone-pointer-arithmetic-on-polymorphic-object <bugprone/pointer-arithmetic-on-polymorphic-object>`, @@ -457,7 +457,7 @@ Check aliases :doc:`cert-msc54-cpp <cert/msc54-cpp>`, :doc:`bugprone-signal-handler <bugprone/signal-handler>`, :doc:`cert-oop11-cpp <cert/oop11-cpp>`, :doc:`performance-move-constructor-init <performance/move-constructor-init>`, :doc:`cert-oop54-cpp <cert/oop54-cpp>`, :doc:`bugprone-unhandled-self-assignment <bugprone/unhandled-self-assignment>`, - :doc:`cert-oop57-cpp <cert/oop57-cpp>`, :doc:`bugprone-libc-memory-calls-on-nontrivial-types <bugprone/libc-memory-calls-on-nontrivial-types>`, + :doc:`cert-oop57-cpp <cert/oop57-cpp>`, :doc:`bugprone-raw-memory-call-on-nontrivial-type <bugprone/raw-memory-call-on-nontrivial-type>`, :doc:`cert-pos44-c <cert/pos44-c>`, :doc:`bugprone-bad-signal-to-kill-thread <bugprone/bad-signal-to-kill-thread>`, :doc:`cert-pos47-c <cert/pos47-c>`, :doc:`concurrency-thread-canceltype-asynchronous <concurrency/thread-canceltype-asynchronous>`, :doc:`cert-sig30-c <cert/sig30-c>`, :doc:`bugprone-signal-handler <bugprone/signal-handler>`, diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/libc-memory-calls-on-nontrivial-types.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-nontrivial-type.cpp similarity index 93% rename from clang-tools-extra/test/clang-tidy/checkers/bugprone/libc-memory-calls-on-nontrivial-types.cpp rename to clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-nontrivial-type.cpp index 8eac7e440a17e..266d4baccd2e8 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/libc-memory-calls-on-nontrivial-types.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-nontrivial-type.cpp @@ -1,8 +1,8 @@ -// RUN: %check_clang_tidy %s libc-memory-calls-on-nontrivial-types %t -- \ +// RUN: %check_clang_tidy %s raw-memory-call-on-nontrivial-type %t -- \ // RUN: -config='{CheckOptions: \ -// RUN: {libc-memory-calls-on-nontrivial-types.MemSetNames: mymemset, \ -// RUN: libc-memory-calls-on-nontrivial-types.MemCpyNames: mymemcpy, \ -// RUN: libc-memory-calls-on-nontrivial-types.MemCmpNames: mymemcmp}}' \ +// RUN: {raw-memory-call-on-nontrivial-type.MemSetNames: mymemset, \ +// RUN: raw-memory-call-on-nontrivial-type.MemCpyNames: mymemcpy, \ +// RUN: raw-memory-call-on-nontrivial-type.MemCmpNames: mymemcmp}}' \ // RUN: -- void mymemset(void *, unsigned char, decltype(sizeof(int))); >From 1e01e2c07f3d54263a4e103e02d7975c91db9e6d Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Sun, 19 Oct 2025 22:21:41 -0700 Subject: [PATCH 08/23] Rename more references to new check name --- clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt | 2 +- .../bugprone/RawMemoryCallOnNonTrivialType.cpp | 10 +++++----- .../bugprone/RawMemoryCallOnNonTrivialType.h | 4 ++-- clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt b/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt index f5b8c71da833a..2130844eddd7a 100644 --- a/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt +++ b/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt @@ -43,7 +43,7 @@ add_clang_library(clangTidyBugproneModule STATIC InfiniteLoopCheck.cpp IntegerDivisionCheck.cpp LambdaFunctionNameCheck.cpp - LibcMemoryCallsOnNonTrivialTypesCheck.cpp + RawMemoryCallOnNontrivialTypeCheck.cpp MacroParenthesesCheck.cpp MacroRepeatedSideEffectsCheck.cpp MisleadingSetterOfReferenceCheck.cpp diff --git a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp index 5127611b191d9..68e96cce9a6a7 100644 --- a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "LibcMemoryCallsOnNonTrivialTypesCheck.h" +#include "RawMemoryCallOnNontrivialTypeCheck.h" #include "../utils/OptionsUtils.h" #include "clang/AST/Decl.h" #include "clang/ASTMatchers/ASTMatchFinder.h" @@ -48,21 +48,21 @@ static constexpr llvm::StringRef ComparisonOperators[] = { "operator==", "operator!=", "operator<", "operator>", "operator<=", "operator>="}; -LibcMemoryCallsOnNonTrivialTypesCheck::LibcMemoryCallsOnNonTrivialTypesCheck( +RawMemoryCallOnNontrivialTypeCheck::RawMemoryCallOnNontrivialTypeCheck( StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), MemSetNames(Options.get("MemSetNames", "")), MemCpyNames(Options.get("MemCpyNames", "")), MemCmpNames(Options.get("MemCmpNames", "")) {} -void LibcMemoryCallsOnNonTrivialTypesCheck::storeOptions( +void RawMemoryCallOnNontrivialTypeCheck::storeOptions( ClangTidyOptions::OptionMap &Opts) { Options.store(Opts, "MemSetNames", MemSetNames); Options.store(Opts, "MemCpyNames", MemCpyNames); Options.store(Opts, "MemCmpNames", MemCmpNames); } -void LibcMemoryCallsOnNonTrivialTypesCheck::registerMatchers( +void RawMemoryCallOnNontrivialTypeCheck::registerMatchers( MatchFinder *Finder) { using namespace ast_matchers::internal; auto IsStructPointer = [](Matcher<CXXRecordDecl> Constraint = anything(), @@ -103,7 +103,7 @@ void LibcMemoryCallsOnNonTrivialTypesCheck::registerMatchers( this); } -void LibcMemoryCallsOnNonTrivialTypesCheck::check( +void RawMemoryCallOnNontrivialTypeCheck::check( const MatchFinder::MatchResult &Result) { if (const auto *Caller = Result.Nodes.getNodeAs<CallExpr>("lazyConstruct")) { diag(Caller->getBeginLoc(), "calling %0 on a non-trivially default " diff --git a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h index fb00e6392e232..c4e4336515c21 100644 --- a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h +++ b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h @@ -18,9 +18,9 @@ namespace clang::tidy::bugprone { /// /// For the user-facing documentation see: /// https://clang.llvm.org/extra/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.html -class LibcMemoryCallsOnNonTrivialTypesCheck : public ClangTidyCheck { +class RawMemoryCallOnNontrivialTypeCheck : public ClangTidyCheck { public: - LibcMemoryCallsOnNonTrivialTypesCheck(StringRef Name, + RawMemoryCallOnNontrivialTypeCheck(StringRef Name, ClangTidyContext *Context); bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { return LangOpts.CPlusPlus && !LangOpts.ObjC; diff --git a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp index decc228e57611..2d39a468d2801 100644 --- a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp @@ -11,7 +11,7 @@ #include "../ClangTidyModuleRegistry.h" #include "../bugprone/BadSignalToKillThreadCheck.h" #include "../bugprone/CommandProcessorCheck.h" -#include "../bugprone/LibcMemoryCallsOnNonTrivialTypesCheck.h" +#include "../bugprone/RawMemoryCallOnNontrivialTypeCheck.h" #include "../bugprone/PointerArithmeticOnPolymorphicObjectCheck.h" #include "../bugprone/ReservedIdentifierCheck.h" #include "../bugprone/SignalHandlerCheck.h" @@ -278,7 +278,7 @@ class CERTModule : public ClangTidyModule { "cert-oop11-cpp"); CheckFactories.registerCheck<bugprone::UnhandledSelfAssignmentCheck>( "cert-oop54-cpp"); - CheckFactories.registerCheck<bugprone::LibcMemoryCallsOnNonTrivialTypesCheck>( + CheckFactories.registerCheck<bugprone::RawMemoryCallOnNontrivialTypeCheck>( "cert-oop57-cpp"); CheckFactories.registerCheck<MutatingCopyCheck>("cert-oop58-cpp"); >From ad1afc42ec42a0b5a978f79a2fc097f93b862b4a Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Sun, 19 Oct 2025 22:22:54 -0700 Subject: [PATCH 09/23] Update title formatting for raw-memory-call check --- .../checks/bugprone/raw-memory-call-on-nontrivial-type.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.rst index b68eabe74ce2e..049ac61aba5e5 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.rst @@ -1,7 +1,7 @@ .. title:: clang-tidy - bugprone-raw-memory-call-on-nontrivial-type bugprone-raw-memory-call-on-nontrivial-type -============================================== +=========================================== Flags use of the C standard library functions ``memset``, ``memcpy`` and ``memcmp`` and similar derivatives on non-trivial types. >From 691131b7fbf7ea08b23b02ca2c04ee582ab8cbe2 Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Sun, 19 Oct 2025 22:41:15 -0700 Subject: [PATCH 10/23] Rename last reference to RAWMEMORYCALLONNONTRIVIALTYPE --- .../clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h index c4e4336515c21..189dbc439edde 100644 --- a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h +++ b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h @@ -6,8 +6,8 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_NONTRIVIALTYPESLIBCMEMORYCALLSCHECK_H -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_NONTRIVIALTYPESLIBCMEMORYCALLSCHECK_H +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_RAWMEMORYCALLONNONTRIVIALTYPECHECK_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_RAWMEMORYCALLONNONTRIVIALTYPECHECK_H #include "../ClangTidyCheck.h" @@ -37,4 +37,4 @@ class RawMemoryCallOnNontrivialTypeCheck : public ClangTidyCheck { } // namespace clang::tidy::bugprone -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_NONTRIVIALTYPESLIBCMEMORYCALLSCHECK_H +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_RAWMEMORYCALLONNONTRIVIALTYPECHECK_H >From bb8c6905992f6390f5a0af72583595b046eeaa9f Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Mon, 20 Oct 2025 09:14:30 -0700 Subject: [PATCH 11/23] nontrivial => non-trivial --- clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt | 2 +- .../bugprone/RawMemoryCallOnNonTrivialType.cpp | 10 +++++----- .../bugprone/RawMemoryCallOnNonTrivialType.h | 6 +++--- clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp | 4 ++-- clang-tools-extra/docs/ReleaseNotes.rst | 4 ++-- ...ype.rst => raw-memory-call-on-non-trivial-type.rst} | 4 ++-- .../docs/clang-tidy/checks/cert/oop57-cpp.rst | 4 ++-- clang-tools-extra/docs/clang-tidy/checks/list.rst | 4 ++-- ...ype.cpp => raw-memory-call-on-non-trivial-type.cpp} | 8 ++++---- 9 files changed, 23 insertions(+), 23 deletions(-) rename clang-tools-extra/docs/clang-tidy/checks/bugprone/{raw-memory-call-on-nontrivial-type.rst => raw-memory-call-on-non-trivial-type.rst} (92%) rename clang-tools-extra/test/clang-tidy/checkers/bugprone/{raw-memory-call-on-nontrivial-type.cpp => raw-memory-call-on-non-trivial-type.cpp} (93%) diff --git a/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt b/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt index 2130844eddd7a..c0fdb4daaa305 100644 --- a/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt +++ b/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt @@ -43,7 +43,6 @@ add_clang_library(clangTidyBugproneModule STATIC InfiniteLoopCheck.cpp IntegerDivisionCheck.cpp LambdaFunctionNameCheck.cpp - RawMemoryCallOnNontrivialTypeCheck.cpp MacroParenthesesCheck.cpp MacroRepeatedSideEffectsCheck.cpp MisleadingSetterOfReferenceCheck.cpp @@ -63,6 +62,7 @@ add_clang_library(clangTidyBugproneModule STATIC ParentVirtualCallCheck.cpp PointerArithmeticOnPolymorphicObjectCheck.cpp PosixReturnCheck.cpp + RawMemoryCallOnNonTrivialTypeCheck.cpp RedundantBranchConditionCheck.cpp ReservedIdentifierCheck.cpp ReturnConstRefFromParameterCheck.cpp diff --git a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp index 68e96cce9a6a7..5d6b816edd46e 100644 --- a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "RawMemoryCallOnNontrivialTypeCheck.h" +#include "RawMemoryCallOnNonTrivialTypeCheck.h" #include "../utils/OptionsUtils.h" #include "clang/AST/Decl.h" #include "clang/ASTMatchers/ASTMatchFinder.h" @@ -48,21 +48,21 @@ static constexpr llvm::StringRef ComparisonOperators[] = { "operator==", "operator!=", "operator<", "operator>", "operator<=", "operator>="}; -RawMemoryCallOnNontrivialTypeCheck::RawMemoryCallOnNontrivialTypeCheck( +RawMemoryCallOnNonTrivialTypeCheck::RawMemoryCallOnNonTrivialTypeCheck( StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), MemSetNames(Options.get("MemSetNames", "")), MemCpyNames(Options.get("MemCpyNames", "")), MemCmpNames(Options.get("MemCmpNames", "")) {} -void RawMemoryCallOnNontrivialTypeCheck::storeOptions( +void RawMemoryCallOnNonTrivialTypeCheck::storeOptions( ClangTidyOptions::OptionMap &Opts) { Options.store(Opts, "MemSetNames", MemSetNames); Options.store(Opts, "MemCpyNames", MemCpyNames); Options.store(Opts, "MemCmpNames", MemCmpNames); } -void RawMemoryCallOnNontrivialTypeCheck::registerMatchers( +void RawMemoryCallOnNonTrivialTypeCheck::registerMatchers( MatchFinder *Finder) { using namespace ast_matchers::internal; auto IsStructPointer = [](Matcher<CXXRecordDecl> Constraint = anything(), @@ -103,7 +103,7 @@ void RawMemoryCallOnNontrivialTypeCheck::registerMatchers( this); } -void RawMemoryCallOnNontrivialTypeCheck::check( +void RawMemoryCallOnNonTrivialTypeCheck::check( const MatchFinder::MatchResult &Result) { if (const auto *Caller = Result.Nodes.getNodeAs<CallExpr>("lazyConstruct")) { diag(Caller->getBeginLoc(), "calling %0 on a non-trivially default " diff --git a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h index 189dbc439edde..d2e333839e5d2 100644 --- a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h +++ b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h @@ -17,10 +17,10 @@ namespace clang::tidy::bugprone { /// 'memcmp' and similar derivatives on non-trivial types. /// /// For the user-facing documentation see: -/// https://clang.llvm.org/extra/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.html -class RawMemoryCallOnNontrivialTypeCheck : public ClangTidyCheck { +/// https://clang.llvm.org/extra/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.html +class RawMemoryCallOnNonTrivialTypeCheck : public ClangTidyCheck { public: - RawMemoryCallOnNontrivialTypeCheck(StringRef Name, + RawMemoryCallOnNonTrivialTypeCheck(StringRef Name, ClangTidyContext *Context); bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { return LangOpts.CPlusPlus && !LangOpts.ObjC; diff --git a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp index 2d39a468d2801..fa1eb4abc1dd8 100644 --- a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp @@ -11,8 +11,8 @@ #include "../ClangTidyModuleRegistry.h" #include "../bugprone/BadSignalToKillThreadCheck.h" #include "../bugprone/CommandProcessorCheck.h" -#include "../bugprone/RawMemoryCallOnNontrivialTypeCheck.h" #include "../bugprone/PointerArithmeticOnPolymorphicObjectCheck.h" +#include "../bugprone/RawMemoryCallOnNonTrivialTypeCheck.h" #include "../bugprone/ReservedIdentifierCheck.h" #include "../bugprone/SignalHandlerCheck.h" #include "../bugprone/SignedCharMisuseCheck.h" @@ -278,7 +278,7 @@ class CERTModule : public ClangTidyModule { "cert-oop11-cpp"); CheckFactories.registerCheck<bugprone::UnhandledSelfAssignmentCheck>( "cert-oop54-cpp"); - CheckFactories.registerCheck<bugprone::RawMemoryCallOnNontrivialTypeCheck>( + CheckFactories.registerCheck<bugprone::RawMemoryCallOnNonTrivialTypeCheck>( "cert-oop57-cpp"); CheckFactories.registerCheck<MutatingCopyCheck>("cert-oop58-cpp"); diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index f981010828540..3e21741b9c422 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -242,8 +242,8 @@ New check aliases keeping initial check as an alias to the new one. - Renamed :doc:`cert-oop57-cpp <clang-tidy/checks/cert/oop57-cpp>` to - :doc:`bugprone-raw-memory-call-on-nontrivial-type - <clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type>` + :doc:`bugprone-raw-memory-call-on-non-trivial-type + <clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type>` keeping initial check as an alias to the new one. Changes in existing checks diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst similarity index 92% rename from clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.rst rename to clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst index 049ac61aba5e5..2a75dec8928e6 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-nontrivial-type.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst @@ -1,6 +1,6 @@ -.. title:: clang-tidy - bugprone-raw-memory-call-on-nontrivial-type +.. title:: clang-tidy - bugprone-raw-memory-call-on-non-trivial-type -bugprone-raw-memory-call-on-nontrivial-type +bugprone-raw-memory-call-on-non-trivial-type =========================================== Flags use of the C standard library functions ``memset``, ``memcpy`` and diff --git a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst index 4426ee244ef9d..414f788bf2500 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/cert/oop57-cpp.rst @@ -1,12 +1,12 @@ .. title:: clang-tidy - cert-oop57-cpp .. meta:: - :http-equiv=refresh: 5;URL=../bugprone/raw-memory-call-on-nontrivial-type.html + :http-equiv=refresh: 5;URL=../bugprone/raw-memory-call-on-non-trivial-type.html cert-oop57-cpp ============== The `cert-oop57-cpp` check is an alias, please see -`bugprone-raw-memory-call-on-nontrivial-type <../bugprone/raw-memory-call-on-nontrivial-type.html>`_ +`bugprone-raw-memory-call-on-non-trivial-type <../bugprone/raw-memory-call-on-non-trivial-type.html>`_ for more information. This check corresponds to the CERT C++ Coding Standard rule diff --git a/clang-tools-extra/docs/clang-tidy/checks/list.rst b/clang-tools-extra/docs/clang-tidy/checks/list.rst index ae410cb04821f..1edb4624491ca 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/list.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/list.rst @@ -125,7 +125,7 @@ Clang-Tidy Checks :doc:`bugprone-non-zero-enum-to-bool-conversion <bugprone/non-zero-enum-to-bool-conversion>`, :doc:`bugprone-nondeterministic-pointer-iteration-order <bugprone/nondeterministic-pointer-iteration-order>`, :doc:`bugprone-not-null-terminated-result <bugprone/not-null-terminated-result>`, "Yes" - :doc:`bugprone-raw-memory-call-on-nontrivial-type <bugprone/raw-memory-call-on-nontrivial-type>`, + :doc:`bugprone-raw-memory-call-on-non-trivial-type <bugprone/raw-memory-call-on-non-trivial-type>`, :doc:`bugprone-optional-value-conversion <bugprone/optional-value-conversion>`, "Yes" :doc:`bugprone-parent-virtual-call <bugprone/parent-virtual-call>`, "Yes" :doc:`bugprone-pointer-arithmetic-on-polymorphic-object <bugprone/pointer-arithmetic-on-polymorphic-object>`, @@ -457,7 +457,7 @@ Check aliases :doc:`cert-msc54-cpp <cert/msc54-cpp>`, :doc:`bugprone-signal-handler <bugprone/signal-handler>`, :doc:`cert-oop11-cpp <cert/oop11-cpp>`, :doc:`performance-move-constructor-init <performance/move-constructor-init>`, :doc:`cert-oop54-cpp <cert/oop54-cpp>`, :doc:`bugprone-unhandled-self-assignment <bugprone/unhandled-self-assignment>`, - :doc:`cert-oop57-cpp <cert/oop57-cpp>`, :doc:`bugprone-raw-memory-call-on-nontrivial-type <bugprone/raw-memory-call-on-nontrivial-type>`, + :doc:`cert-oop57-cpp <cert/oop57-cpp>`, :doc:`bugprone-raw-memory-call-on-non-trivial-type <bugprone/raw-memory-call-on-non-trivial-type>`, :doc:`cert-pos44-c <cert/pos44-c>`, :doc:`bugprone-bad-signal-to-kill-thread <bugprone/bad-signal-to-kill-thread>`, :doc:`cert-pos47-c <cert/pos47-c>`, :doc:`concurrency-thread-canceltype-asynchronous <concurrency/thread-canceltype-asynchronous>`, :doc:`cert-sig30-c <cert/sig30-c>`, :doc:`bugprone-signal-handler <bugprone/signal-handler>`, diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-nontrivial-type.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-non-trivial-type.cpp similarity index 93% rename from clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-nontrivial-type.cpp rename to clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-non-trivial-type.cpp index 266d4baccd2e8..32b2cb007ca92 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-nontrivial-type.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-non-trivial-type.cpp @@ -1,8 +1,8 @@ -// RUN: %check_clang_tidy %s raw-memory-call-on-nontrivial-type %t -- \ +// RUN: %check_clang_tidy %s raw-memory-call-on-non-trivial-type %t -- \ // RUN: -config='{CheckOptions: \ -// RUN: {raw-memory-call-on-nontrivial-type.MemSetNames: mymemset, \ -// RUN: raw-memory-call-on-nontrivial-type.MemCpyNames: mymemcpy, \ -// RUN: raw-memory-call-on-nontrivial-type.MemCmpNames: mymemcmp}}' \ +// RUN: {raw-memory-call-on-non-trivial-type.MemSetNames: mymemset, \ +// RUN: raw-memory-call-on-non-trivial-type.MemCpyNames: mymemcpy, \ +// RUN: raw-memory-call-on-non-trivial-type.MemCmpNames: mymemcmp}}' \ // RUN: -- void mymemset(void *, unsigned char, decltype(sizeof(int))); >From 8f10a750250dfa3717c7795aed1b2ab663bee70e Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Mon, 20 Oct 2025 09:23:05 -0700 Subject: [PATCH 12/23] Update raw-memory-call-on-non-trivial-type.rst --- .../checks/bugprone/raw-memory-call-on-non-trivial-type.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst index 2a75dec8928e6..e528c5766064a 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst @@ -1,7 +1,7 @@ .. title:: clang-tidy - bugprone-raw-memory-call-on-non-trivial-type bugprone-raw-memory-call-on-non-trivial-type -=========================================== +============================================ Flags use of the C standard library functions ``memset``, ``memcpy`` and ``memcmp`` and similar derivatives on non-trivial types. >From 59ca5d0dcc03acac52cedf930ce599a9e2b4be82 Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Mon, 20 Oct 2025 10:57:03 -0700 Subject: [PATCH 13/23] Add Check to class name, register check in bugprone, and update name in tests to include bugprone- --- .../clang-tidy/bugprone/BugproneTidyModule.cpp | 3 +++ ...ialType.cpp => RawMemoryCallOnNonTrivialTypeCheck.cpp} | 0 ...TrivialType.h => RawMemoryCallOnNonTrivialTypeCheck.h} | 0 .../bugprone/raw-memory-call-on-non-trivial-type.cpp | 8 ++++---- 4 files changed, 7 insertions(+), 4 deletions(-) rename clang-tools-extra/clang-tidy/bugprone/{RawMemoryCallOnNonTrivialType.cpp => RawMemoryCallOnNonTrivialTypeCheck.cpp} (100%) rename clang-tools-extra/clang-tidy/bugprone/{RawMemoryCallOnNonTrivialType.h => RawMemoryCallOnNonTrivialTypeCheck.h} (100%) diff --git a/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp b/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp index e6115f67656bc..7adff8a641fb8 100644 --- a/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp @@ -61,6 +61,7 @@ #include "ParentVirtualCallCheck.h" #include "PointerArithmeticOnPolymorphicObjectCheck.h" #include "PosixReturnCheck.h" +#include "RawMemoryCallOnNonTrivialTypeCheck.h" #include "RedundantBranchConditionCheck.h" #include "ReservedIdentifierCheck.h" #include "ReturnConstRefFromParameterCheck.h" @@ -216,6 +217,8 @@ class BugproneModule : public ClangTidyModule { CheckFactories.registerCheck<ParentVirtualCallCheck>( "bugprone-parent-virtual-call"); CheckFactories.registerCheck<PosixReturnCheck>("bugprone-posix-return"); + CheckFactories.registerCheck<RawMemoryCallOnNonTrivialTypeCheck>( + "bugprone-raw-memory-call-on-non-trivial-type"); CheckFactories.registerCheck<ReservedIdentifierCheck>( "bugprone-reserved-identifier"); CheckFactories.registerCheck<SharedPtrArrayMismatchCheck>( diff --git a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.cpp similarity index 100% rename from clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.cpp rename to clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.cpp diff --git a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.h similarity index 100% rename from clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialType.h rename to clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.h diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-non-trivial-type.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-non-trivial-type.cpp index 32b2cb007ca92..41a86ff385dbf 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-non-trivial-type.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/raw-memory-call-on-non-trivial-type.cpp @@ -1,8 +1,8 @@ -// RUN: %check_clang_tidy %s raw-memory-call-on-non-trivial-type %t -- \ +// RUN: %check_clang_tidy %s bugprone-raw-memory-call-on-non-trivial-type %t -- \ // RUN: -config='{CheckOptions: \ -// RUN: {raw-memory-call-on-non-trivial-type.MemSetNames: mymemset, \ -// RUN: raw-memory-call-on-non-trivial-type.MemCpyNames: mymemcpy, \ -// RUN: raw-memory-call-on-non-trivial-type.MemCmpNames: mymemcmp}}' \ +// RUN: {bugprone-raw-memory-call-on-non-trivial-type.MemSetNames: mymemset, \ +// RUN: bugprone-raw-memory-call-on-non-trivial-type.MemCpyNames: mymemcpy, \ +// RUN: bugprone-raw-memory-call-on-non-trivial-type.MemCmpNames: mymemcmp}}' \ // RUN: -- void mymemset(void *, unsigned char, decltype(sizeof(int))); >From 11047c488af8c277d55e71038bea1d5c3ec3a003 Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Mon, 20 Oct 2025 11:14:23 -0700 Subject: [PATCH 14/23] Clang format changes --- .../clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.cpp | 3 +-- .../clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.h | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.cpp index 5d6b816edd46e..f7f7ccb8877d3 100644 --- a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.cpp @@ -62,8 +62,7 @@ void RawMemoryCallOnNonTrivialTypeCheck::storeOptions( Options.store(Opts, "MemCmpNames", MemCmpNames); } -void RawMemoryCallOnNonTrivialTypeCheck::registerMatchers( - MatchFinder *Finder) { +void RawMemoryCallOnNonTrivialTypeCheck::registerMatchers(MatchFinder *Finder) { using namespace ast_matchers::internal; auto IsStructPointer = [](Matcher<CXXRecordDecl> Constraint = anything(), bool Bind = false) { diff --git a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.h b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.h index d2e333839e5d2..002aac6d37bfb 100644 --- a/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.h +++ b/clang-tools-extra/clang-tidy/bugprone/RawMemoryCallOnNonTrivialTypeCheck.h @@ -20,8 +20,7 @@ namespace clang::tidy::bugprone { /// https://clang.llvm.org/extra/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.html class RawMemoryCallOnNonTrivialTypeCheck : public ClangTidyCheck { public: - RawMemoryCallOnNonTrivialTypeCheck(StringRef Name, - ClangTidyContext *Context); + RawMemoryCallOnNonTrivialTypeCheck(StringRef Name, ClangTidyContext *Context); bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { return LangOpts.CPlusPlus && !LangOpts.ObjC; } >From e326e07fc28f57bab0d72049cbf02bcc42fddc2e Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Tue, 21 Oct 2025 22:12:45 -0700 Subject: [PATCH 15/23] Move extra functions description out of each individual option --- .../raw-memory-call-on-non-trivial-type.rst | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst index e528c5766064a..74366a1b0ba7d 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst @@ -6,31 +6,26 @@ bugprone-raw-memory-call-on-non-trivial-type Flags use of the C standard library functions ``memset``, ``memcpy`` and ``memcmp`` and similar derivatives on non-trivial types. + For each option, it is possible to flag extra functions that act similarly. + Specify names in a semicolon-delimited list. + The default is an empty string. + Options ------- .. option:: MemSetNames - Specify extra functions to flag that act similarly to ``memset``. - Specify names in a semicolon delimited list. - Default is an empty string. The check will detect the following functions: ``memset``, ``std::memset``. .. option:: MemCpyNames - Specify extra functions to flag that act similarly to ``memcpy``. - Specify names in a semicolon delimited list. - Default is an empty string. The check will detect the following functions: `std::memcpy`, ``memcpy`, `std::memmove`, ``memmove``, ``std::strcpy``, ``strcpy``, ``memccpy``, ``stpncpy``, ``strncpy``. .. option:: MemCmpNames - Specify extra functions to flag that act similarly to ``memcmp``. - Specify names in a semicolon delimited list. - Default is an empty string. The check will detect the following functions: ``std::memcmp``, ``memcmp``, ``std::strcmp``, ``strcmp``, ``strncmp``. >From 70f1319fcefdb834f4655e4b6802371ed7dfd665 Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Wed, 22 Oct 2025 08:36:30 -0700 Subject: [PATCH 16/23] Revert "Move extra functions description out of each individual option" This reverts commit e326e07fc28f57bab0d72049cbf02bcc42fddc2e. --- .../raw-memory-call-on-non-trivial-type.rst | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst index 74366a1b0ba7d..e528c5766064a 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst @@ -6,26 +6,31 @@ bugprone-raw-memory-call-on-non-trivial-type Flags use of the C standard library functions ``memset``, ``memcpy`` and ``memcmp`` and similar derivatives on non-trivial types. - For each option, it is possible to flag extra functions that act similarly. - Specify names in a semicolon-delimited list. - The default is an empty string. - Options ------- .. option:: MemSetNames + Specify extra functions to flag that act similarly to ``memset``. + Specify names in a semicolon delimited list. + Default is an empty string. The check will detect the following functions: ``memset``, ``std::memset``. .. option:: MemCpyNames + Specify extra functions to flag that act similarly to ``memcpy``. + Specify names in a semicolon delimited list. + Default is an empty string. The check will detect the following functions: `std::memcpy`, ``memcpy`, `std::memmove`, ``memmove``, ``std::strcpy``, ``strcpy``, ``memccpy``, ``stpncpy``, ``strncpy``. .. option:: MemCmpNames + Specify extra functions to flag that act similarly to ``memcmp``. + Specify names in a semicolon delimited list. + Default is an empty string. The check will detect the following functions: ``std::memcmp``, ``memcmp``, ``std::strcmp``, ``strcmp``, ``strncmp``. >From ef26db9b12f4baa11422ac39917bcf74d9b0d909 Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Wed, 22 Oct 2025 10:13:16 -0700 Subject: [PATCH 17/23] Move default checks out of options --- .../raw-memory-call-on-non-trivial-type.rst | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst index e528c5766064a..72f7b9a7f3a07 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst @@ -3,8 +3,13 @@ bugprone-raw-memory-call-on-non-trivial-type ============================================ - Flags use of the C standard library functions ``memset``, ``memcpy`` and - ``memcmp`` and similar derivatives on non-trivial types. +Flags use of the C standard library functions ``memset``, ``memcpy`` and +``memcmp`` and similar derivatives on non-trivial types. + +The check will detect the following functions: ``memset``, ``std::memset``, +``std::memcpy``, ``memcpy``, ``std::memmove``, ``memmove``, ``std::strcpy``, +``strcpy``, ``memccpy``, ``stpncpy``, ``strncpy``, ``std::memcmp``, ``memcmp``, +``std::strcmp``, ``strcmp``, ``strncmp``. Options ------- @@ -14,25 +19,18 @@ Options Specify extra functions to flag that act similarly to ``memset``. Specify names in a semicolon delimited list. Default is an empty string. - The check will detect the following functions: - ``memset``, ``std::memset``. .. option:: MemCpyNames Specify extra functions to flag that act similarly to ``memcpy``. Specify names in a semicolon delimited list. Default is an empty string. - The check will detect the following functions: - `std::memcpy`, ``memcpy`, `std::memmove`, ``memmove``, ``std::strcpy``, - ``strcpy``, ``memccpy``, ``stpncpy``, ``strncpy``. .. option:: MemCmpNames Specify extra functions to flag that act similarly to ``memcmp``. Specify names in a semicolon delimited list. Default is an empty string. - The check will detect the following functions: - ``std::memcmp``, ``memcmp``, ``std::strcmp``, ``strcmp``, ``strncmp``. This check corresponds to the CERT C++ Coding Standard rule `OOP57-CPP. Prefer special member functions and overloaded operators to C >From f82761e841587c37ac4c341fe40b6ff557f3f85e Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Wed, 22 Oct 2025 12:18:45 -0700 Subject: [PATCH 18/23] Update clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst Co-authored-by: EugeneZelenko <[email protected]> --- .../checks/bugprone/raw-memory-call-on-non-trivial-type.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst index 72f7b9a7f3a07..36ca9d98f0663 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst @@ -16,9 +16,8 @@ Options .. option:: MemSetNames - Specify extra functions to flag that act similarly to ``memset``. - Specify names in a semicolon delimited list. - Default is an empty string. + Specify extra functions to flag that act similarly to ``memset``. Specify + names in a semicolon-delimited list. Default is an empty string. .. option:: MemCpyNames >From 0a1cdaf5b836b0885dfc35f7587ff3000891ecc4 Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Wed, 22 Oct 2025 12:18:53 -0700 Subject: [PATCH 19/23] Update clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst Co-authored-by: EugeneZelenko <[email protected]> --- .../checks/bugprone/raw-memory-call-on-non-trivial-type.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst index 36ca9d98f0663..a3f6f326bafbd 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst @@ -21,9 +21,8 @@ Options .. option:: MemCpyNames - Specify extra functions to flag that act similarly to ``memcpy``. - Specify names in a semicolon delimited list. - Default is an empty string. + Specify extra functions to flag that act similarly to ``memcpy``. Specify + names in a semicolon-delimited list. Default is an empty string. .. option:: MemCmpNames >From 13f2caf437d3ef27bc2ef5b8c5898020b9f0cde9 Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Wed, 22 Oct 2025 12:19:01 -0700 Subject: [PATCH 20/23] Update clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst Co-authored-by: EugeneZelenko <[email protected]> --- .../checks/bugprone/raw-memory-call-on-non-trivial-type.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst index a3f6f326bafbd..0ce7f80e8381d 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/raw-memory-call-on-non-trivial-type.rst @@ -26,9 +26,8 @@ Options .. option:: MemCmpNames - Specify extra functions to flag that act similarly to ``memcmp``. - Specify names in a semicolon delimited list. - Default is an empty string. + Specify extra functions to flag that act similarly to ``memcmp``. Specify + names in a semicolon-delimited list. Default is an empty string. This check corresponds to the CERT C++ Coding Standard rule `OOP57-CPP. Prefer special member functions and overloaded operators to C >From 667be005b79c3d1ce2480b5c528fc52c3f4e074b Mon Sep 17 00:00:00 2001 From: Dasha Buka <[email protected]> Date: Thu, 23 Oct 2025 12:39:39 -0700 Subject: [PATCH 21/23] Move bugprone-raw-memory-call check in list --- clang-tools-extra/docs/clang-tidy/checks/list.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/list.rst b/clang-tools-extra/docs/clang-tidy/checks/list.rst index 9106c5745a4c2..eb5edfc035afc 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/list.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/list.rst @@ -125,11 +125,11 @@ Clang-Tidy Checks :doc:`bugprone-non-zero-enum-to-bool-conversion <bugprone/non-zero-enum-to-bool-conversion>`, :doc:`bugprone-nondeterministic-pointer-iteration-order <bugprone/nondeterministic-pointer-iteration-order>`, :doc:`bugprone-not-null-terminated-result <bugprone/not-null-terminated-result>`, "Yes" - :doc:`bugprone-raw-memory-call-on-non-trivial-type <bugprone/raw-memory-call-on-non-trivial-type>`, :doc:`bugprone-optional-value-conversion <bugprone/optional-value-conversion>`, "Yes" :doc:`bugprone-parent-virtual-call <bugprone/parent-virtual-call>`, "Yes" :doc:`bugprone-pointer-arithmetic-on-polymorphic-object <bugprone/pointer-arithmetic-on-polymorphic-object>`, :doc:`bugprone-posix-return <bugprone/posix-return>`, "Yes" + :doc:`bugprone-raw-memory-call-on-non-trivial-type <bugprone/raw-memory-call-on-non-trivial-type>`, :doc:`bugprone-redundant-branch-condition <bugprone/redundant-branch-condition>`, "Yes" :doc:`bugprone-reserved-identifier <bugprone/reserved-identifier>`, "Yes" :doc:`bugprone-return-const-ref-from-parameter <bugprone/return-const-ref-from-parameter>`, >From 345160f2ac4f37f80b29bf8a5079ab84c37d987d Mon Sep 17 00:00:00 2001 From: Florian Mayer <[email protected]> Date: Wed, 22 Oct 2025 12:51:53 -0700 Subject: [PATCH 22/23] [gn build] Port 18d4ba593db9 Reviewers: Pull Request: https://github.com/llvm/llvm-project/pull/164693 >From 0cf8d088d481ea4ab9e710b86e9dc3713de58ef6 Mon Sep 17 00:00:00 2001 From: Walter Lee <[email protected]> Date: Thu, 23 Oct 2025 18:31:57 +0000 Subject: [PATCH 23/23] [ARM][KFCI] Fix unused variable for #163698 (#164857) _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
