diff options
author | Samuel Benzaquen <sbenza@google.com> | 2016-03-29 18:02:26 +0000 |
---|---|---|
committer | Samuel Benzaquen <sbenza@google.com> | 2016-03-29 18:02:26 +0000 |
commit | b2ccba525738bdcf03ce7cb6ec87479cf91a6a18 (patch) | |
tree | 9f12462067b3a5c633082d89846cf2509f3606a9 /clang-tools-extra/docs/clang-tidy | |
parent | 4fdc1f0a9412892e4990a961fdc610a94c2153b3 (diff) | |
download | bcm5719-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.rst | 1 | ||||
-rw-r--r-- | clang-tools-extra/docs/clang-tidy/checks/misc-dangling-handle.rst | 34 |
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; + } |