bugprone-unused-local-non-trivial-variable¶
Warns when a local non trivial variable is unused within a function. The following types of variables are excluded from this check:
- trivial and trivially copyable 
- references and pointers 
- exception variables in catch clauses 
- static or thread local 
- structured bindings 
- variables with - [[maybe_unused]]attribute
- name-independent variables 
This check can be configured to warn on all non-trivial variables by setting IncludeTypes to .*, and excluding specific types using ExcludeTypes.
In the this example, my_lock would generate a warning that it is unused.
std::mutex my_lock;
// my_lock local variable is never used
In the next example, future2 would generate a warning that it is unused.
std::future<MyObject> future1;
std::future<MyObject> future2;
// ...
MyObject foo = future1.get();
// future2 is not used.
Options¶
- IncludeTypes¶
- Semicolon-separated list of regular expressions matching types of variables to check. By default the following types are checked: - ::std::.*mutex 
- ::std::future 
- ::std::basic_string 
- ::std::basic_regex 
- ::std::basic_istringstream 
- ::std::basic_stringstream 
- ::std::bitset 
- ::std::filesystem::path 
 
- ExcludeTypes¶
- A semicolon-separated list of regular expressions matching types that are excluded from the IncludeTypes matches. By default it is an empty list.