C#: Filter using var _ = ... results from DeadStoreOfLocal.ql

This commit is contained in:
Tom Hvitved
2021-10-04 10:45:44 +02:00
parent 62aa7b75bd
commit 682a2aae3a
3 changed files with 13 additions and 1 deletions

View File

@@ -72,7 +72,12 @@ predicate mayEscape(LocalVariable v) {
class RelevantDefinition extends AssignableDefinition {
RelevantDefinition() {
this instanceof AssignableDefinitions::AssignmentDefinition
this.(AssignableDefinitions::AssignmentDefinition).getAssignment() =
any(Assignment a |
if a = any(UsingStmt us).getAVariableDeclExpr()
then not a.getTargetVariable().hasName("_")
else any()
)
or
this instanceof AssignableDefinitions::MutationDefinition
or

View File

@@ -460,4 +460,10 @@ public static class AnonymousVariable
count++;
return count;
}
public static void Using()
{
using var x = new System.IO.FileStream("", System.IO.FileMode.Open); // BAD
using var _ = new System.IO.FileStream("", System.IO.FileMode.Open); // GOOD
}
}

View File

@@ -14,6 +14,7 @@
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |