From 236cee683ac84ebd7ac6cd41f0d78020c312f68c Mon Sep 17 00:00:00 2001 From: Dasha Buka Date: Sun, 5 Oct 2025 15:44:45 -0700 Subject: [PATCH 1/3] [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 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("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( "cert-oop54-cpp"); - CheckFactories.registerCheck( + CheckFactories.registerCheck( "cert-oop57-cpp"); CheckFactories.registerCheck("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 ` keeping initial check as an alias to the new one. +- Renamed :doc:`cert-oop57-cpp ` to + :doc:`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 +`_. 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 -`_. +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 `, :doc:`bugprone-nondeterministic-pointer-iteration-order `, :doc:`bugprone-not-null-terminated-result `, "Yes" + :doc:`bugprone-libc-memory-calls-on-nontrivial-types `, :doc:`bugprone-optional-value-conversion `, "Yes" :doc:`bugprone-parent-virtual-call `, "Yes" :doc:`bugprone-pointer-arithmetic-on-polymorphic-object `, @@ -180,7 +181,6 @@ Clang-Tidy Checks :doc:`cert-mem57-cpp `, :doc:`cert-msc50-cpp `, :doc:`cert-msc51-cpp `, - :doc:`cert-oop57-cpp `, :doc:`cert-oop58-cpp `, :doc:`concurrency-mt-unsafe `, :doc:`concurrency-thread-canceltype-asynchronous `, @@ -440,8 +440,8 @@ Check aliases :doc:`cert-dcl51-cpp `, :doc:`bugprone-reserved-identifier `, "Yes" :doc:`cert-dcl54-cpp `, :doc:`misc-new-delete-overloads `, :doc:`cert-dcl59-cpp `, :doc:`google-build-namespaces `, - :doc:`cert-err09-cpp `, :doc:`misc-throw-by-value-catch-by-reference `, :doc:`cert-env33-c `, :doc:`bugprone-command-processor `, + :doc:`cert-err09-cpp `, :doc:`misc-throw-by-value-catch-by-reference `, :doc:`cert-err34-c `, :doc:`bugprone-unchecked-string-to-number-conversion `, :doc:`cert-err52-cpp `, :doc:`modernize-avoid-setjmp-longjmp `, :doc:`cert-err58-cpp `, :doc:`bugprone-throwing-static-initialization `, @@ -457,6 +457,7 @@ Check aliases :doc:`cert-msc54-cpp `, :doc:`bugprone-signal-handler `, :doc:`cert-oop11-cpp `, :doc:`performance-move-constructor-init `, :doc:`cert-oop54-cpp `, :doc:`bugprone-unhandled-self-assignment `, + :doc:`cert-oop57-cpp `, :doc:`bugprone-libc-memory-calls-on-nontrivial-types `, :doc:`cert-pos44-c `, :doc:`bugprone-bad-signal-to-kill-thread `, :doc:`cert-pos47-c `, :doc:`concurrency-thread-canceltype-asynchronous `, :doc:`cert-sig30-c `, :doc:`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 <102774272+dvbuka@users.noreply.github.com> Date: Mon, 6 Oct 2025 11:49:07 -0700 Subject: [PATCH 2/3] Update clang-tools-extra/docs/clang-tidy/checks/bugprone/libc-memory-calls-on-nontrivial-types.rst Co-authored-by: EugeneZelenko --- .../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 <102774272+dvbuka@users.noreply.github.com> Date: Mon, 6 Oct 2025 12:09:38 -0700 Subject: [PATCH 3/3] 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