PiotrZSL updated this revision to Diff 499732. PiotrZSL added a comment. Update doc
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D144594/new/ https://reviews.llvm.org/D144594 Files: clang-tools-extra/docs/clang-tidy/checks/bugprone/copy-constructor-init.rst Index: clang-tools-extra/docs/clang-tidy/checks/bugprone/copy-constructor-init.rst =================================================================== --- clang-tools-extra/docs/clang-tidy/checks/bugprone/copy-constructor-init.rst +++ clang-tools-extra/docs/clang-tidy/checks/bugprone/copy-constructor-init.rst @@ -3,8 +3,8 @@ bugprone-copy-constructor-init ============================== -Finds copy constructors where the constructor doesn't call -the copy constructor of the base class. +Finds copy constructors where the constructor doesn't call the copy constructor +of the base class. .. code-block:: c++ @@ -12,7 +12,10 @@ public: Copyable() = default; Copyable(const Copyable &) = default; + + int memberToBeCopied = 0; }; + class X2 : public Copyable { X2(const X2 &other) {} // Copyable(other) is missing }; @@ -22,8 +25,25 @@ .. code-block:: c++ - class X4 : public Copyable { - X4(const X4 &other) : Copyable() {} // other is missing + class X3 : public Copyable { + X3(const X3 &other) : Copyable() {} // other is missing }; +Failure to properly initialize base class sub-objects during copy construction +can result in undefined behavior, crashes, data corruption, or other unexpected +outcomes. The check ensures that the copy constructor of a derived class +properly calls or initializes the copy constructor of the base class, which +helps prevent bugs and improves code quality. + +Limitations: + +* It won't generate warnings for empty classes, as there are no class members + (including base class sub-objects) to worry about. + +* It won't generate warnings for base classes that have copy constructor + private or deleted. + +* It won't generate warnings for base classes that are initialized using other + non-default constructor, as this could be intentional. + The check also suggests a fix-its in some cases.
Index: clang-tools-extra/docs/clang-tidy/checks/bugprone/copy-constructor-init.rst =================================================================== --- clang-tools-extra/docs/clang-tidy/checks/bugprone/copy-constructor-init.rst +++ clang-tools-extra/docs/clang-tidy/checks/bugprone/copy-constructor-init.rst @@ -3,8 +3,8 @@ bugprone-copy-constructor-init ============================== -Finds copy constructors where the constructor doesn't call -the copy constructor of the base class. +Finds copy constructors where the constructor doesn't call the copy constructor +of the base class. .. code-block:: c++ @@ -12,7 +12,10 @@ public: Copyable() = default; Copyable(const Copyable &) = default; + + int memberToBeCopied = 0; }; + class X2 : public Copyable { X2(const X2 &other) {} // Copyable(other) is missing }; @@ -22,8 +25,25 @@ .. code-block:: c++ - class X4 : public Copyable { - X4(const X4 &other) : Copyable() {} // other is missing + class X3 : public Copyable { + X3(const X3 &other) : Copyable() {} // other is missing }; +Failure to properly initialize base class sub-objects during copy construction +can result in undefined behavior, crashes, data corruption, or other unexpected +outcomes. The check ensures that the copy constructor of a derived class +properly calls or initializes the copy constructor of the base class, which +helps prevent bugs and improves code quality. + +Limitations: + +* It won't generate warnings for empty classes, as there are no class members + (including base class sub-objects) to worry about. + +* It won't generate warnings for base classes that have copy constructor + private or deleted. + +* It won't generate warnings for base classes that are initialized using other + non-default constructor, as this could be intentional. + The check also suggests a fix-its in some cases.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits