Skip to content

Commit 665564f

Browse files
committed
C#: Add more tests for cs/local-not-disposed
1 parent b858962 commit 665564f

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

csharp/ql/test/query-tests/API Abuse/NoDisposeCallOnLocalIDisposable/NoDisposeCallOnLocalIDisposable.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// semmle-extractor-options: --cil /r:System.Xml.dll /r:System.Xml.ReaderWriter.dll /r:System.Private.Xml.dll /r:System.ComponentModel.Primitives.dll /r:System.IO.Compression.dll /r:System.Runtime.Extensions.dll
1+
// semmle-extractor-options: --cil /langversion:8.0 /r:System.Xml.dll /r:System.Xml.ReaderWriter.dll /r:System.Private.Xml.dll /r:System.ComponentModel.Primitives.dll /r:System.IO.Compression.dll /r:System.Runtime.Extensions.dll
22

33
using System;
44
using System.Text;
@@ -51,6 +51,7 @@ public IDisposable Method()
5151
// BAD: No Dispose call
5252
var c1d = new Timer(TimerProc);
5353
var fs = new FileStream("", FileMode.CreateNew, FileAccess.Write);
54+
new FileStream("", FileMode.CreateNew, FileAccess.Write).Fluent();
5455

5556
// GOOD: Disposed via wrapper
5657
fs = new FileStream("", FileMode.CreateNew, FileAccess.Write);
@@ -65,6 +66,7 @@ public IDisposable Method()
6566
d = new GZipStream(fs, CompressionMode.Compress);
6667
dProp = new Timer(TimerProc);
6768
this[0] = new Timer(TimerProc);
69+
d = new FileStream("", FileMode.CreateNew, FileAccess.Write).Fluent(); // FALSE POSITIVE
6870

6971
// GOOD: Passed to another IDisposable
7072
using (var reader = new StreamReader(new FileStream("", FileMode.Open)))
@@ -90,6 +92,11 @@ public IDisposable Method()
9092
void TimerProc(object obj)
9193
{
9294
}
95+
96+
public void Dispose() { }
9397
}
9498

95-
// semmle-extractor-options: /langversion:8.0
99+
static class Extensions
100+
{
101+
public static FileStream Fluent(this FileStream fs) => fs;
102+
}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
| NoDisposeCallOnLocalIDisposable.cs:52:19:52:38 | object creation of type Timer | Disposable 'Timer' is created here but is not disposed. |
22
| NoDisposeCallOnLocalIDisposable.cs:53:18:53:73 | object creation of type FileStream | Disposable 'FileStream' is created here but is not disposed. |
3-
| NoDisposeCallOnLocalIDisposable.cs:74:25:74:71 | call to method Create | Disposable 'XmlReader' is created here but is not disposed. |
3+
| NoDisposeCallOnLocalIDisposable.cs:54:9:54:64 | object creation of type FileStream | Disposable 'FileStream' is created here but is not disposed. |
4+
| NoDisposeCallOnLocalIDisposable.cs:69:13:69:68 | object creation of type FileStream | Disposable 'FileStream' is created here but is not disposed. |
5+
| NoDisposeCallOnLocalIDisposable.cs:76:25:76:71 | call to method Create | Disposable 'XmlReader' is created here but is not disposed. |
46
| NoDisposeCallOnLocalIDisposableBad.cs:8:22:8:56 | object creation of type FileStream | Disposable 'FileStream' is created here but is not disposed. |

0 commit comments

Comments
 (0)