C#: Re-factor to use inline expectation tests instead.

This commit is contained in:
Michael Nebel
2025-03-13 11:07:07 +01:00
parent 40375a0387
commit 209b9c6114
4 changed files with 16 additions and 17 deletions

View File

@@ -48,9 +48,9 @@ class Test
}
// BAD: No Dispose call
var c1d = new Timer(TimerProc);
var fs = new FileStream("", FileMode.CreateNew, FileAccess.Write);
new FileStream("", FileMode.CreateNew, FileAccess.Write).Fluent();
var c1d = new Timer(TimerProc); // $ Alert
var fs = new FileStream("", FileMode.CreateNew, FileAccess.Write); // $ Alert
new FileStream("", FileMode.CreateNew, FileAccess.Write).Fluent(); // $ Alert
// GOOD: Disposed via wrapper
fs = new FileStream("", FileMode.CreateNew, FileAccess.Write);
@@ -72,7 +72,7 @@ class Test
;
// GOOD: XmlDocument.Load disposes incoming XmlReader (False positive as this is disposed in library code)
var xmlReader = XmlReader.Create(new StringReader("xml"), null);
var xmlReader = XmlReader.Create(new StringReader("xml"), null); // $ Alert
var xmlDoc = new XmlDocument();
xmlDoc.Load(xmlReader);
@@ -104,6 +104,15 @@ class Test
public void Dispose() { }
}
class Bad
{
long GetLength(string file)
{
var stream = new FileStream(file, FileMode.Open); // $ Alert
return stream.Length;
}
}
static class Extensions
{
public static FileStream Fluent(this FileStream fs) => fs;

View File

@@ -3,4 +3,4 @@
| NoDisposeCallOnLocalIDisposable.cs:53:9:53:64 | object creation of type FileStream | Disposable 'FileStream' is created but not disposed. |
| NoDisposeCallOnLocalIDisposable.cs:75:25:75:71 | call to method Create | Disposable 'XmlReader' is created but not disposed. |
| NoDisposeCallOnLocalIDisposable.cs:75:42:75:64 | object creation of type StringReader | Disposable 'StringReader' is created but not disposed. |
| NoDisposeCallOnLocalIDisposableBad.cs:8:22:8:56 | object creation of type FileStream | Disposable 'FileStream' is created but not disposed. |
| NoDisposeCallOnLocalIDisposable.cs:111:22:111:56 | object creation of type FileStream | Disposable 'FileStream' is created but not disposed. |

View File

@@ -1 +1,2 @@
API Abuse/NoDisposeCallOnLocalIDisposable.ql
query: API Abuse/NoDisposeCallOnLocalIDisposable.ql
postprocess: utils/test/InlineExpectationsTestQuery.ql

View File

@@ -1,11 +0,0 @@
using System;
using System.IO;
class Bad
{
long GetLength(string file)
{
var stream = new FileStream(file, FileMode.Open);
return stream.Length;
}
}