[PATCH] D71199: [clang-tidy] New check cppcoreguidelines-prefer-member-initializer

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 28 08:14:35 PST 2020


aaron.ballman added inline comments.


================
Comment at: clang-tools-extra/clang-tidy/cppcoreguidelines/PreferMemberInitializerCheck.cpp:25
+         isa<DoStmt>(S) ||
+         isa<ReturnStmt>(S) ||
+         isa<GotoStmt>(S) ||
----------------
How about `throw` expressions?


================
Comment at: clang-tools-extra/clang-tidy/cppcoreguidelines/PreferMemberInitializerCheck.cpp:61-65
+  const auto *DRE = dyn_cast<DeclRefExpr>(Value);
+  if (!DRE)
+    return false;
+
+  return isa<EnumConstantDecl>(DRE->getDecl());
----------------
```
if (const auto *DRE = dyn_cast<DeclRefExpr>(Value))
  return isa<EnumConstantDecl>(DRE->getDecl())
return false;
```


================
Comment at: clang-tools-extra/clang-tidy/cppcoreguidelines/PreferMemberInitializerCheck.cpp:126-128
+  const auto *Body = dyn_cast_or_null<CompoundStmt>(Ctor->getBody());
+  if (!Body)
+    return;
----------------
This can be hoisted into the matcher with `hasBody(anything())` I believe. One interesting test case that's somewhat related are constructors that use a function-try-block instead of a compound statement. e.g.,
```
class C {
  int i;

public:
  C() try {
    i = 12;
  } catch (...) {
  }
};
```


================
Comment at: clang-tools-extra/docs/clang-tidy/checks/cppcoreguidelines-prefer-member-initializer.rst:6
+
+Finds member initializations in the constructor body which can be placed to
+the member initializers of the constructor instead. This does not only improves
----------------
placed to the -> converted into


================
Comment at: clang-tools-extra/docs/clang-tidy/checks/cppcoreguidelines-prefer-member-initializer.rst:7
+Finds member initializations in the constructor body which can be placed to
+the member initializers of the constructor instead. This does not only improves
+the readability of the code but also positively affects its performance.
----------------
does not -> not


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71199/new/

https://reviews.llvm.org/D71199





More information about the cfe-commits mailing list