summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/docs/clang-tidy
diff options
context:
space:
mode:
authorSamuel Benzaquen <sbenza@google.com>2016-03-29 18:02:26 +0000
committerSamuel Benzaquen <sbenza@google.com>2016-03-29 18:02:26 +0000
commitb2ccba525738bdcf03ce7cb6ec87479cf91a6a18 (patch)
tree9f12462067b3a5c633082d89846cf2509f3606a9 /clang-tools-extra/docs/clang-tidy
parent4fdc1f0a9412892e4990a961fdc610a94c2153b3 (diff)
downloadbcm5719-llvm-b2ccba525738bdcf03ce7cb6ec87479cf91a6a18.tar.gz
bcm5719-llvm-b2ccba525738bdcf03ce7cb6ec87479cf91a6a18.zip
[clang-tidy] Add check to detect dangling references in value handlers.
Summary: Add check misc-dangling-handle to detect dangling references in value handlers like std::experimental::string_view. It provides a configuration option to specify other handle types that should also be checked. Right now it detects: - Construction from temporaries. - Assignment from temporaries. - Return statements from temporaries or locals. - Insertion into containers from temporaries. Reviewers: alexfh Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D17811 llvm-svn: 264759
Diffstat (limited to 'clang-tools-extra/docs/clang-tidy')
-rw-r--r--clang-tools-extra/docs/clang-tidy/checks/list.rst1
-rw-r--r--clang-tools-extra/docs/clang-tidy/checks/misc-dangling-handle.rst34
2 files changed, 35 insertions, 0 deletions
diff --git a/clang-tools-extra/docs/clang-tidy/checks/list.rst b/clang-tools-extra/docs/clang-tidy/checks/list.rst
index 8e1bc15f0f4..36ea07fe359 100644
--- a/clang-tools-extra/docs/clang-tidy/checks/list.rst
+++ b/clang-tools-extra/docs/clang-tidy/checks/list.rst
@@ -50,6 +50,7 @@ Clang-Tidy Checks
misc-assert-side-effect
misc-assign-operator-signature
misc-bool-pointer-implicit-conversion
+ misc-dangling-handle
misc-definitions-in-headers
misc-forward-declaration-namespace
misc-inaccurate-erase
diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc-dangling-handle.rst b/clang-tools-extra/docs/clang-tidy/checks/misc-dangling-handle.rst
new file mode 100644
index 00000000000..06601c68520
--- /dev/null
+++ b/clang-tools-extra/docs/clang-tidy/checks/misc-dangling-handle.rst
@@ -0,0 +1,34 @@
+.. title:: clang-tidy - misc-dangling-handle
+
+misc-dangling-handle
+====================
+
+Detect dangling references in value handlers like
+`std::experimental::string_view`.
+These dangling references can come from constructing handles from temporary
+values, where the temporary is destroyed soon after the handle is created.
+
+By default only `std::experimental::basic_string_view` is considered.
+This list can be modified by passing a ; separated list of class names using
+the HandleClasses option.
+
+Examples:
+
+.. code-block:: c++
+
+ string_view View = string(); // View will dangle.
+ string A;
+ View = A + "A"; // still dangle.
+
+ vector<string_view> V;
+ V.push_back(string()); // V[0] is dangling.
+ V.resize(3, string()); // V[1] and V[2] will also dangle.
+
+ string_view f() {
+ // All these return values will dangle.
+ return string();
+ string S;
+ return S;
+ char Array[10]{};
+ return Array;
+ }
OpenPOWER on IntegriCloud