This revision was automatically updated to reflect the committed changes.
Closed by commit rGe168964ce1fb: [clang-tidy] Fix
bugprone-copy-constructor-init documentation (authored by PiotrZSL).
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 the copy constructor of the base class, helping to prevent bugs
+and improve 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 the copy constructor of the base class, helping to prevent bugs
+and improve 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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits