Skip to content

Commit

Permalink
Fix S2930 FN (#6685)
Browse files Browse the repository at this point in the history
  • Loading branch information
zsolt-kolbay-sonarsource authored Jan 30, 2023
1 parent 4da3c1d commit f8aff1b
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
14 changes: 10 additions & 4 deletions analyzers/src/SonarAnalyzer.CSharp/Rules/DisposableNotDisposed.cs
Original file line number Diff line number Diff line change
Expand Up @@ -157,11 +157,17 @@ private static void TrackAssignmentsToLocalsAndPrivateFields(INamedTypeSymbol na
private static bool IsNodeInsideUsingStatement(SyntaxNode node)
{
var ancestors = node.AncestorsAndSelf().ToArray();
var usingStatements = ancestors.OfType<UsingStatementSyntax>();
var usingDeclarations = ancestors.OfType<LocalDeclarationStatementSyntax>();

return usingStatements.Any(x => ancestors.Contains(x.Expression) || ancestors.Contains(x.Declaration))
|| usingDeclarations.Any(x => ancestors.Contains(x.Declaration));
var isPartOfUsingStatement = ancestors
.OfType<UsingStatementSyntax>()
.Any(x => (x.Expression is not null && x.Expression.DescendantNodesAndSelf().Contains(node))
|| (x.Declaration is not null && x.Declaration.DescendantNodesAndSelf().Contains(node)));

var isPartOfUsingDeclaration = ancestors
.OfType<LocalDeclarationStatementSyntax>()
.Any(x => x.UsingKeyword() != default);

return isPartOfUsingStatement || isPartOfUsingDeclaration;
}

private static IEnumerable<SyntaxNode> GetDescendantNodes(INamedTypeSymbol namedType, SyntaxNode typeDeclaration) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,13 @@ public async Task DisposeAsynchronously()
FileStream fs5;
await using ((fs5 = new FileStream(@"c:\foo.txt", FileMode.Open)).ConfigureAwait(false))
{
// do nothing
var fs5_1 = new FileStream(@"c:\foo.txt", FileMode.Open); // Noncompliant
fs5_1 = new FileStream(@"c:\foo.txt", FileMode.Open); // Noncompliant

using (var fs5_2 = new FileStream(@"c:\foo.txt", FileMode.Open))
{
fs5_1 = new FileStream(@"c:\foo.txt", FileMode.Open); // Noncompliant
}
}

FileStream fs6;
Expand Down

0 comments on commit f8aff1b

Please sign in to comment.