[PATCH] D17811: [clang-tidy] Add check to detect dangling references in value handlers.

Alexander Kornienko via cfe-commits cfe-commits at lists.llvm.org
Mon Mar 7 05:07:37 PST 2016


alexfh added inline comments.

================
Comment at: clang-tidy/misc/DanglingHandleCheck.cpp:24
@@ +23,3 @@
+
+std::vector<std::string> parseClasses(StringRef Option) {
+  SmallVector<StringRef, 4> Classes;
----------------
A very similar code has been added recently to clang-tidy/utils/HeaderFileExtensionsUtils.*. Maybe make that code generic enough and reuse it?

================
Comment at: clang-tidy/misc/DanglingHandleCheck.cpp:82
@@ +81,3 @@
+      anyOf(
+          // For sequences:
+          // assign, push_back, resize
----------------
nit: The comment can well fit on a single line without making it less readable. Also, please add a trailing period.

================
Comment at: clang-tidy/misc/DanglingHandleCheck.cpp:116
@@ +115,3 @@
+  return cxxRecordDecl(internal::Matcher<NamedDecl>(
+                           new internal::HasNameMatcher(HandleClasses)))
+      .bind("handle");
----------------
This use of internal classes doesn't look nice. Can you add a `hasAnyName` overload taking a `set` or an `ArrayRef` of names (or maybe a template version that'll take a range of something convertible to StringRef)?

================
Comment at: clang-tidy/misc/DanglingHandleCheck.cpp:162
@@ +161,3 @@
+                                        hasAutomaticStorageDuration(),
+                                        // and it is a local array or Value
+                                        anyOf(hasType(arrayType()),
----------------
nit: Please add a trailing period (and optionally an ellipsis at the start of the comment and at the end of the previous comment).

================
Comment at: clang-tidy/misc/DanglingHandleCheck.cpp:175
@@ +174,3 @@
+                     IsAHandle, handleFromTemporaryValue(IsAHandle))))))
+          .bind("bad"),
+      this);
----------------
`handleFromTemporaryValue` already binds something to `bad`, which looks suspicious. Should we try to place all .binds() on the upper-most level, when it's possible, to make the whole picture easier to see?

================
Comment at: test/clang-tidy/misc-dangling-handle.cpp:85
@@ +84,3 @@
+  std::string_view view_2 = ReturnsAString();
+  // CHECK-MESSAGES: [[@LINE-1]]:29: warning: std::basic_string_view outlives
+
----------------
jbcoe wrote:
> This (and other) check-messages line looks truncated.
This is intentional. It makes sense to specify the whole message once and remove repeated static text from other CHECK-MESSAGES lines to make them shorter and the whole test more readable.


http://reviews.llvm.org/D17811





More information about the cfe-commits mailing list