[clang-tools-extra] [clang-tidy] The first PR our of many PRs for the "Initialized Class Members" check. (PR #65189)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 7 10:42:19 PDT 2023
================
@@ -0,0 +1,32 @@
+.. title:: clang-tidy - google-cpp-init-class-members
+
+google-cpp-init-class-members
+=============================
+
+Checks that class members are initialized in constructors (implicitly or
+explicitly). Reports constructors or classes where class members are not
+initialized. The goal of this checker is to eliminate UUM (Use of
+Uninitialized Memory) bugs caused by uninitialized class members.
+
+This checker is different from ProTypeMemberInitCheck in that this checker
+attempts to eliminate UUMs as a bug class, at the expense of false
+positives.
+
+This checker is WIP. We are incrementally adding features and increasing
+coverage until we get to a shape that is acceptable.
+
+For now, this checker reports `X` in the following two patterns:
+
+.. code-block:: c++
+ class SomeClass {
+ public:
+ SomeClass() = default;
+
+ private:
+ int X;
+ };
+
+.. code-block:: c++
+ struct SomeStruct {
+ int X;
+ };
----------------
adriannistor wrote:
You are right, fully agree! I added a [broader discussion below](https://github.com/llvm/llvm-project/pull/65189#issuecomment-1709185690). To summarize (full context there), we are still working the high level specifications and the low level specifications based on data. Once we have a stable and mature version, we will update the documentation for this checker in a more concrete and actionable way. Until then, we will keep this file (`cpp-init-class-members.rst`) and the unit tests as a high level and low level specifications, respectively. Full details in the [broader discussion below](https://github.com/llvm/llvm-project/pull/65189#issuecomment-1709185690). Thanks!
https://github.com/llvm/llvm-project/pull/65189
More information about the cfe-commits
mailing list