Skip to content

Commit 682a2aa

Browse files
committed
C#: Filter using var _ = ... results from DeadStoreOfLocal.ql
1 parent 62aa7b7 commit 682a2aa

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

csharp/ql/src/Dead Code/DeadStoreOfLocal.ql

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,12 @@ predicate mayEscape(LocalVariable v) {
7272

7373
class RelevantDefinition extends AssignableDefinition {
7474
RelevantDefinition() {
75-
this instanceof AssignableDefinitions::AssignmentDefinition
75+
this.(AssignableDefinitions::AssignmentDefinition).getAssignment() =
76+
any(Assignment a |
77+
if a = any(UsingStmt us).getAVariableDeclExpr()
78+
then not a.getTargetVariable().hasName("_")
79+
else any()
80+
)
7681
or
7782
this instanceof AssignableDefinitions::MutationDefinition
7883
or

csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,4 +460,10 @@ public static int Count<T>(this IEnumerable<T> items)
460460
count++;
461461
return count;
462462
}
463+
464+
public static void Using()
465+
{
466+
using var x = new System.IO.FileStream("", System.IO.FileMode.Open); // BAD
467+
using var _ = new System.IO.FileStream("", System.IO.FileMode.Open); // GOOD
468+
}
463469
}

csharp/ql/test/query-tests/Dead Code/DeadStoreOfLocal/DeadStoreOfLocal.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
| DeadStoreOfLocal.cs:331:9:331:32 | ... = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:327:23:327:23 | b | b |
1515
| DeadStoreOfLocal.cs:372:13:372:20 | String s = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:372:13:372:13 | s | s |
1616
| DeadStoreOfLocal.cs:398:13:398:21 | ... = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:396:13:396:13 | s | s |
17+
| DeadStoreOfLocal.cs:466:19:466:75 | FileStream x = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:466:19:466:19 | x | x |
1718
| DeadStoreOfLocalBad.cs:7:13:7:48 | Boolean success = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocalBad.cs:7:13:7:19 | success | success |
1819
| DeadStoreOfLocalBad.cs:23:32:23:32 | FormatException e | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocalBad.cs:23:32:23:32 | e | e |
1920
| DeadStoreOfLocalBad.cs:32:22:32:22 | String s | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocalBad.cs:32:22:32:22 | s | s |

0 commit comments

Comments
 (0)