1.. title:: clang-tidy - bugprone-unused-raii 2 3bugprone-unused-raii 4==================== 5 6Finds temporaries that look like RAII objects. 7 8The canonical example for this is a scoped lock. 9 10.. code-block:: c++ 11 12 { 13 scoped_lock(&global_mutex); 14 critical_section(); 15 } 16 17The destructor of the scoped_lock is called before the ``critical_section`` is 18entered, leaving it unprotected. 19 20We apply a number of heuristics to reduce the false positive count of this 21check: 22 23- Ignore code expanded from macros. Testing frameworks make heavy use of this. 24 25- Ignore types with trivial destructors. They are very unlikely to be RAII 26 objects and there's no difference when they are deleted. 27 28- Ignore objects at the end of a compound statement (doesn't change behavior). 29 30- Ignore objects returned from a call. 31