forked from OSchip/llvm-project
31 lines
803 B
ReStructuredText
31 lines
803 B
ReStructuredText
.. title:: clang-tidy - bugprone-unused-raii
|
|
|
|
bugprone-unused-raii
|
|
====================
|
|
|
|
Finds temporaries that look like RAII objects.
|
|
|
|
The canonical example for this is a scoped lock.
|
|
|
|
.. code-block:: c++
|
|
|
|
{
|
|
scoped_lock(&global_mutex);
|
|
critical_section();
|
|
}
|
|
|
|
The destructor of the scoped_lock is called before the ``critical_section`` is
|
|
entered, leaving it unprotected.
|
|
|
|
We apply a number of heuristics to reduce the false positive count of this
|
|
check:
|
|
|
|
- Ignore code expanded from macros. Testing frameworks make heavy use of this.
|
|
|
|
- Ignore types with trivial destructors. They are very unlikely to be RAII
|
|
objects and there's no difference when they are deleted.
|
|
|
|
- Ignore objects at the end of a compound statement (doesn't change behavior).
|
|
|
|
- Ignore objects returned from a call.
|