9.4
Release 9.4 brings one new rule for C# and four new rules for VB.NET. It also brings improvements by migrating two more rules to the new symbolic execution engine, fixing false positives, and improving memory allocation.
Thanks to @sharwell for his contribution by reporting 7438.
Thanks to @Corniel for his contribution by implementing new rule S2925 in 7342.
New Rules
- 7305 - [VB.NET] New rule S3966: Objects should not be disposed more than once
- 7304 - [VB.NET] New rule S1944: Invalid casts should not be made
- 7303 - [VB.NET] New rule S4158: Empty collections should not be accessed or iterated
- 7342 - [C#, VB.NET] New Rule: S2925 Do not use Thread.Sleep() in a test
Improvements
- 7302 - [C#] Migrate S3966 to the new Symbolic Execution engine
- 7300 - [C#] Migrate S4158 to the new Symbolic Execution engine
- 7301 - [C#] Improve S1944: Rule now detects more issues
- 7322 - [C#] Symbolic Execution: Learn NotNull from ??= for nullable types
- 7267 - [C#, VB.NET] Symbolic Execution: Add BinaryOperation for literals: division, remainder, xor
- 7435 - [C#] Improve S4635: Update issue message
- 7365 - [C#] Improve S2198: Update issue message
- 7337 - Update RSPEC before 9.4 release
False Positives
- 4261 - [C#] Fix S4158 FP: When a collection was filled by using delegates
- 2147 - [C#] Fix S4158 FP: Variable instance mismatch
- 7308 - [C#] Fix S3655 FP: Recognize ??= for nullable types
- 6179 - [C#, VB.NET] Fix S4158 FP: When the collection was filled during for loops, was reported to be empty
Performance
- 7438 - Memory allocation improvement: HasMatchingScope should not allocate a new delegate on every call