[PATCH] D45702: [clang-tidy] Add a new check, readability-redundant-data-call, that finds and removes redundant calls to .data().

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed May 2 06:21:01 PDT 2018


aaron.ballman added a comment.

> Have you run this over any large code bases to see whether the check triggers in practice?

I'm still curious about this, btw.



================
Comment at: clang-tidy/readability/RedundantDataCallCheck.cpp:45
+                  anyOf(TypesMatcher, pointerType(pointee(TypesMatcher)))))),
+              callee(namedDecl(hasName("data"))))
+              .bind("call")))),
----------------
Should this check apply equally to `std::string::c_str()` as well as `std::string::data()`?


================
Comment at: clang-tidy/readability/RedundantDataCallCheck.cpp:57
+  const auto *Member = Result.Nodes.getNodeAs<MemberExpr>("member");
+  auto DiagBuilder = diag(Member->getMemberLoc(), "redundant call to .data()");
+  if (Member->isArrow()) {
----------------
I think the word "redundant" isn't going to be immediately obvious to a user who would write code like that. Perhaps `"accessing an element of the container does not require a call to 'data()'; did you mean to use 'operator[]()' instead?"`


================
Comment at: docs/clang-tidy/checks/readability-redundant-data-call.rst:7
+This check finds and suggests removing redundant ``.data()`` calls. Currently
+this covers calling ``.data()`` and immediately doing array subscript operation
+to obtain a single element, in which case simply calling ``operator[]`` suffice.
----------------
doing array subscript -> doing an array subscript


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D45702





More information about the cfe-commits mailing list