File tree Expand file tree Collapse file tree
Best Practices/Unused Entities
test/query-tests/Best Practices/Unused Entities Expand file tree Collapse file tree Original file line number Diff line number Diff line change 5757 not declarationHasSideEffects ( v ) and
5858 not exists ( AsmStmt s | f = s .getEnclosingFunction ( ) ) and
5959 not v .getAnAttribute ( ) .getName ( ) = "unused" and
60+ not v .getAnAttribute ( ) .getName ( ) = "maybe_unused" and
6061 not f .hasErrors ( ) // Unextracted expressions may use `v`
6162select v , "Variable " + v .getName ( ) + " is not used."
Original file line number Diff line number Diff line change 2626 not v instanceof MemberVariable and
2727 not declarationHasSideEffects ( v ) and
2828 not v .getAnAttribute ( ) .hasName ( "used" ) and
29- not v .getAnAttribute ( ) .hasName ( "unused" )
29+ not v .getAnAttribute ( ) .hasName ( "unused" ) and
30+ not v .getAnAttribute ( ) .hasName ( "maybe_unused" )
3031select v , "Static variable " + v .getName ( ) + " is never read."
Original file line number Diff line number Diff line change 1+ ---
2+ category : minorAnalysis
3+ ---
4+ The ` cpp/unused-local-variable ` and ` cpp/unused-static-variable ` queries no longer report variables marked with the C++17 ` [[maybe_unused]] ` attribute.
Original file line number Diff line number Diff line change @@ -176,3 +176,8 @@ void test_switch_initializer()
176176 // ...
177177 }
178178}
179+
180+ void test_maybe_unused ()
181+ {
182+ [[maybe_unused]] int unused; // GOOD: explicitly marked as maybe_unused
183+ }
Original file line number Diff line number Diff line change 1-
1+ // semmle-extractor-options: -std=c++17
22int globalVar; // GOOD (not static)
33static int staticVar1; // GOOD (used)
44static int staticVar2; // GOOD (used)
@@ -10,6 +10,7 @@ static __attribute__((__unused__)) int staticVar7; // GOOD (unused but this is e
1010const int constVar8 = 8 ; // $ Alert // BAD (const defaults to static)
1111extern const int constVar9 = 9 ; // GOOD
1212static int staticVar10 = 10 ; // $ SPURIOUS: Alert // GOOD [FALSE POSITIVE] (referenced in a never instantiated template)
13+ [[maybe_unused]] static int staticVar11; // GOOD (explicitly marked as maybe_unused)
1314
1415void f ()
1516{
You can’t perform that action at this time.
0 commit comments