Merge pull request #6799 from hvitved/csharp/dead-store-using-discard

C#: Filter using `var _ = ... results` from `DeadStoreOfLocal.ql`
This commit is contained in:
Tom Hvitved
2021-10-04 14:38:15 +02:00
committed by GitHub
4 changed files with 18 additions and 1 deletions

View File

@@ -0,0 +1,2 @@
lgtm,codescanning
* `using` declarations are no longer flagged by the query "Useless assignment to local variable".

View File

@@ -72,7 +72,8 @@ predicate mayEscape(LocalVariable v) {
class RelevantDefinition extends AssignableDefinition {
RelevantDefinition() {
this instanceof AssignableDefinitions::AssignmentDefinition
this.(AssignableDefinitions::AssignmentDefinition).getAssignment() =
any(Assignment a | not a = any(UsingDeclStmt uds).getAVariableDeclExpr())
or
this instanceof AssignableDefinitions::MutationDefinition
or

View File

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

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:472:20:472:76 | FileStream y = ... | This assignment to $@ is useless, since its value is never read. | DeadStoreOfLocal.cs:472:20:472:20 | y | y |
| 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 |