Skip to content

Releases: dotnet/roslyn-analyzers

v2.9.12

28 Oct 23:43
9b1b3df
Compare
Choose a tag to compare

Release build of Roslyn-analyzers based on Microsoft.CodeAnalysis 2.9.0 NuGet packages. Works with VS 2017 15.9 or later.

Contains functionality and performance bug fixes on top of the v2.9.11 release.

Fixes

  • Optimizing type resolution
  • Tainted data rules improvements
  • CA5377: Don't warn when unable to get the control flow graph for dataflow analysis
  • CA3075: Fix false positive on XmlReader.Create(string) invocations
  • Optimizing error list refresh times for full compilation analyzers in Visual Studio 2019 16.9

v3.3.0

10 Aug 20:15
0a95f9e
Compare
Choose a tag to compare

Release build of Roslyn-analyzers based on Microsoft.CodeAnalysis 3.3.0 NuGet packages. Works with VS 2019 16.3 or later.

Contains following important changes on top of v3.0.0 release

The new security rules CA2350-CA2362 can help find vulnerabilities related to DataSet and DataTable security guidance.

Feature

Editorconfig based file/directory level options configuration. See details here

Bug Fixes

  • Many bug fixes, including performance fixes.
  • Various tainted data rules: Don't report tainted data flowing into non-sink method parameters, when other tainted data does flow into a sink parameter.

Additional analyzers/fixers

Added

  • Design
    • CA1002: Do not expose generic lists
    • CA1005: Avoid excessive parameters on generic types
    • CA1045: Do not pass types by reference
    • CA1046: Do not overload equality operator on reference types
    • CA1047: Do not declare protected member in sealed type -- Enabled by default
    • CA1070: Do not declare event fields as virtual -- Enabled by default
  • Interoperability
    • CA1417: Do not use 'OutAttribute' on string parameters for P/Invokes -- Enabled by default
  • Naming
    • CA1700: Do not name enum values 'Reserved'
    • CA1713: Events should not have 'Before' or 'After' prefix -- Enabled by default
  • Performance
    • CA1805: Do not initialize unnecessarily -- Enabled by default
    • CA1830: Prefer strongly-typed Append and Insert method overloads on StringBuilder -- Enabled by default
    • CA1831: Use AsSpan or AsMemory instead of Range-based indexers when appropriate -- Enabled by default
    • CA1832: Use AsSpan or AsMemory instead of Range-based indexers when appropriate -- Enabled by default
    • CA1833: Use AsSpan or AsMemory instead of Range-based indexers when appropriate -- Enabled by default
    • CA1834: Consider using 'StringBuilder.Append(char)' when applicable -- Enabled by default
    • CA1835: Prefer the 'Memory'-based overloads for 'ReadAsync' and 'WriteAsync' -- Enabled by default
    • CA1836: Prefer IsEmpty over Count -- Enabled by default
    • CA1837: Use 'Environment.ProcessId' -- Enabled by default
    • CA1838: Avoid 'StringBuilder' parameters for P/Invokes
  • Publish
    • IL3000: Avoid using accessing Assembly file path when publishing as a single-file -- Enabled by default
    • IL3001: Avoid using accessing Assembly file path when publishing as a single-file -- Enabled by default
  • Reliability
    • CA2014: Do not use stackalloc in loops -- Enabled by default
    • CA2015: Do not define finalizers for types derived from MemoryManager -- Enabled by default
    • CA2016: Forward the 'CancellationToken' parameter to methods that take one -- Enabled by default
  • Security
    • CA2109: Review visible event handlers
    • CA2350: Do not use DataTable.ReadXml() with untrusted data
    • CA2351: Do not use DataSet.ReadXml() with untrusted data
    • CA2352: Unsafe DataSet or DataTable in serializable type can be vulnerable to remote code execution attacks
    • CA2353: Unsafe DataSet or DataTable in serializable type
    • CA2354: Unsafe DataSet or DataTable in deserialized object graph can be vulnerable to remote code execution attacks
    • CA2355: Unsafe DataSet or DataTable type found in deserializable object graph
    • CA2356: Unsafe DataSet or DataTable type in web deserializable object graph
    • CA2361: Ensure autogenerated class containing DataSet.ReadXml() is not used with untrusted data
    • CA2362: Unsafe DataSet or DataTable in autogenerated serializable type can be vulnerable to remote code execution attacks
  • Usage
    • CA2247: Argument passed to TaskCompletionSource constructor should be TaskCreationOptions enum instead of TaskContinuationOptions enum -- Enabled by default
    • CA2248: Provide correct 'enum' argument to 'Enum.HasFlag' -- Enabled by default
    • CA2249: Consider using 'string.Contains' instead of 'string.IndexOf' -- Enabled by default

Removed

  • Reliability
    • CA2010: Always consume the value returned by methods marked with PreserveSigAttribute -- Enabled by default

v2.9.11

10 Aug 20:13
8394e05
Compare
Choose a tag to compare

Release build of Roslyn-analyzers based on Microsoft.CodeAnalysis 2.9.0 NuGet packages. Works with VS 2017 15.9 or later.

Contains the following important changes on top of the v2.9.10 release.

New security rules to help find vulnerabilities related to DataSet and DataTable security guidance.

Fixes

  • Various tainted data rules: Don't report tainted data flowing into non-sink method parameters, when other tainted data does flow into a sink parameter.

Added

  • Security
    • CA2361: Ensure autogenerated class containing DataSet.ReadXml() is not used with untrusted data
    • CA2362: Unsafe DataSet or DataTable in autogenerated serializable type can be vulnerable to remote code execution attacks

Changed

  • Security
    • CA2351: Some cases of autogenerated code are now reported as CA2361
    • CA2352: Some cases of autogenerated code are now reported as CA2362

v3.3.0-beta2.final

15 Jul 14:33
303d517
Compare
Choose a tag to compare
v3.3.0-beta2.final Pre-release
Pre-release

Pre-release build of Roslyn-analyzers based on Microsoft.CodeAnalysis 3.3.0 NuGet packages. Works with VS 2019 16.3 or later.

Contains following important changes on top of v3.0.0 release

The new security rules CA2350-CA2356 can help find vulnerabilities related to DataSet and DataTable security guidance.

Feature

Editorconfig based file/directory level options configuration. See details here

Bug Fixes

Many bug fixes, including performance fixes.

Additional analyzers/fixers:

Added

  • Design
    • CA1002: Do not expose generic lists
    • CA1005: Avoid excessive parameters on generic types
    • CA1045: Do not pass types by reference
    • CA1046: Do not overload equality operator on reference types
    • CA1047: Do not declare protected member in sealed type -- Enabled by default
    • CA1070: Do not declare event fields as virtual -- Enabled by default
  • Naming
    • CA1700: Do not name enum values 'Reserved'
    • CA1713: Events should not have 'Before' or 'After' prefix -- Enabled by default
  • Performance
    • CA1805: Do not initialize unnecessarily -- Enabled by default
    • CA1830: Prefer strongly-typed Append and Insert method overloads on StringBuilder. -- Enabled by default
    • CA1831: Use AsSpan or AsMemory instead of Range-based indexers when appropriate -- Enabled by default
    • CA1832: Use AsSpan or AsMemory instead of Range-based indexers when appropriate -- Enabled by default
    • CA1833: Use AsSpan or AsMemory instead of Range-based indexers when appropriate -- Enabled by default
    • CA1834: Consider using 'StringBuilder.Append(char)' when applicable. -- Enabled by default
    • CA1835: Prefer the 'Memory'-based overloads for 'ReadAsync' and 'WriteAsync' -- Enabled by default
    • CA1836: Prefer IsEmpty over Count -- Enabled by default
  • Reliability
    • CA2014: Do not use stackalloc in loops. -- Enabled by default
    • CA2015: Do not define finalizers for types derived from MemoryManager -- Enabled by default
    • CA2016: Forward the 'CancellationToken' parameter to methods that take one -- Enabled by default
  • Security
    • CA2109: Review visible event handlers -- Enabled by default
    • CA2350: Do not use insecure deserialization with DataTable.ReadXml()
    • CA2351: Do not use insecure deserialization with DataSet.ReadXml()
    • CA2352: Unsafe DataSet or DataTable in serializable type can be vulnerable to remote code execution attacks
    • CA2353: Unsafe DataSet or DataTable in serializable type
    • CA2354: Unsafe DataSet or DataTable in deserialized object graph can be vulnerable to remote code execution attacks
    • CA2355: Unsafe DataSet or DataTable type found in deserializable object graph
    • CA2356: Unsafe DataSet or DataTable type in web deserializable object graph
  • Usage
    • CA2247: Argument passed to TaskCompletionSource constructor should be TaskCreationOptions enum instead of TaskContinuationOptions enum. -- Enabled by default
    • CA2248: Provide correct 'enum' argument to 'Enum.HasFlag' -- Enabled by default
    • CA2249: Consider using 'string.Contains' instead of 'string.IndexOf' -- Enabled by default

Removed

  • Reliability
    • CA2010: Always consume the value returned by methods marked with PreserveSigAttribute -- Enabled by default

v2.9.10

14 Jul 23:47
d512b50
Compare
Choose a tag to compare

Release build of Roslyn-analyzers based on Microsoft.CodeAnalysis 2.9.0 NuGet packages. Works with VS 2017 15.9 or later.

Contains the following important changes on top of the v2.9.9 release.

New security rules to help find vulnerabilities related to DataSet and DataTable security guidance.

Bug fixes

  • CA3075: Fix false positives with XmlDocument on .NET Framework 4.5.2 or later

Added

  • Security
    • CA2350: Ensure DataTable.ReadXml()'s input is trusted
    • CA2351: Ensure DataSet.ReadXml()'s input is trusted
    • CA2352: Unsafe DataSet or DataTable in serializable type can be vulnerable to remote code execution attacks
    • CA2353: Unsafe DataSet or DataTable in serializable type
    • CA2354: Unsafe DataSet or DataTable in deserialized object graph can be vulnerable to remote code execution attacks
    • CA2355: Unsafe DataSet or DataTable in deserialized object graph
    • CA2356: Unsafe DataSet or DataTable in web deserialized object graph

v3.3.0-beta1.final

06 Jul 17:24
d752929
Compare
Choose a tag to compare
v3.3.0-beta1.final Pre-release
Pre-release

Pre-release build of Roslyn-analyzers based on Microsoft.CodeAnalysis 3.3.0 NuGet packages. Works with VS 2019 16.3 or later.

Contains following important changes on top of v3.0.0 release

Feature

Editorconfig based file/directory level options configuration. See details here

Bug Fixes

Many bug fixes, including performance fixes.

Additional analyzers/fixers:

Added

  • Design
    • CA1002: Do not expose generic lists
    • CA1005: Avoid excessive parameters on generic types
    • CA1045: Do not pass types by reference
    • CA1046: Do not overload equality operator on reference types
    • CA1047: Do not declare protected member in sealed type -- Enabled by default
    • CA1070: Do not declare event fields as virtual -- Enabled by default
  • Naming
    • CA1700: Do not name enum values 'Reserved'
    • CA1713: Events should not have 'Before' or 'After' prefix -- Enabled by default
  • Performance
    • CA1805: Do not initialize unnecessarily -- Enabled by default
    • CA1830: Prefer strongly-typed Append and Insert method overloads on StringBuilder. -- Enabled by default
    • CA1831: Use AsSpan or AsMemory instead of Range-based indexers when appropriate -- Enabled by default
    • CA1832: Use AsSpan or AsMemory instead of Range-based indexers when appropriate -- Enabled by default
    • CA1833: Use AsSpan or AsMemory instead of Range-based indexers when appropriate -- Enabled by default
    • CA1834: Consider using 'StringBuilder.Append(char)' when applicable. -- Enabled by default
    • CA1835: Prefer the 'Memory'-based overloads for 'ReadAsync' and 'WriteAsync' -- Enabled by default
    • CA1836: Prefer IsEmpty over Count -- Enabled by default
  • Reliability
    • CA2014: Do not use stackalloc in loops. -- Enabled by default
    • CA2015: Do not define finalizers for types derived from MemoryManager -- Enabled by default
    • CA2016: Forward the 'CancellationToken' parameter to methods that take one -- Enabled by default
  • Security
    • CA2109: Review visible event handlers -- Enabled by default
  • Usage
    • CA2247: Argument passed to TaskCompletionSource constructor should be TaskCreationOptions enum instead of TaskContinuationOptions enum. -- Enabled by default
    • CA2248: Provide correct 'enum' argument to 'Enum.HasFlag' -- Enabled by default
    • CA2249: Consider using 'string.Contains' instead of 'string.IndexOf' -- Enabled by default

Removed

  • Reliability
    • CA2010: Always consume the value returned by methods marked with PreserveSigAttribute -- Enabled by default

v3.0.0

27 Apr 23:41
39d189a
Compare
Choose a tag to compare

Release build of Roslyn-analyzers based on Microsoft.CodeAnalysis 3.0.0 NuGet packages. Works with VS 2019 or later.

Contains following important changes on top of v2.9.x releases

Bug Fixes

Tons of bug fixes

Additional analyzers/fixers:

Added

  • Design
    • CA1021: Avoid out parameters
    • CA1069: Enums values should not be duplicated -- Enabled by default
  • Reliability
    • CA2011: Avoid infinite recursion -- Enabled by default
    • CA2012: Use ValueTasks correctly -- Enabled by default
    • CA2013: Do not use ReferenceEquals with value types -- Enabled by default
  • Usage
    • CA2215: Dispose methods should call base class dispose -- Enabled by default

Changed

  • Security
    • CA5361: Do Not Disable SChannel Use of Strong Crypto -- Now disabled by default
    • CA5376: Use SharedAccessProtocol HttpsOnly -- Now disabled by default
    • CA5377: Use Container Level Access Policy -- Now disabled by default
    • CA5378: Do not disable ServicePointManagerSecurityProtocols -- Now disabled by default
    • CA5380: Do Not Add Certificates To Root Store -- Now disabled by default
    • CA5381: Ensure Certificates Are Not Added To Root Store -- Now disabled by default

v2.9.9

27 Apr 23:38
e5c68c9
Compare
Choose a tag to compare

Release build of Roslyn-analyzers based on Microsoft.CodeAnalysis 2.9.0 NuGet packages. Works with VS 2017.9 or later.

Contains the following important changes on top of the v2.9.8 release.

Fixes

  • CA2201: Performance improvement.
  • CA2212: Fix AD0001 crash.
  • CA3009: Treat System.Web.Security.AntiXss.AntiXssEncoder as a sanitizer.
  • CA5358: Renamed to "Review cipher mode usage with cryptography experts"
  • CA5360: Handles local functions.

v3.0.0-beta3.final

24 Mar 22:15
f902405
Compare
Choose a tag to compare
v3.0.0-beta3.final Pre-release
Pre-release

Pre-release build of Roslyn-analyzers based on Microsoft.CodeAnalysis 3.0.0 NuGet packages. Works with VS 2019 or later.

Contains following important changes on top of v2.9.x releases

Bug Fixes

Lot of bug fixes

Additional analyzers/fixers:

Added

  • Design
    • CA1021: Avoid out parameters
    • CA1069: Enums values should not be duplicated -- Enabled by default
  • Reliability
    • CA2011: Avoid infinite recursion -- Enabled by default
    • CA2012: Use ValueTasks correctly -- Enabled by default
    • CA2013: Do not use ReferenceEquals with value types -- Enabled by default
  • Usage
    • CA2215: Dispose methods should call base class dispose -- Enabled by default

Changed

  • Security
    • CA5361: Do Not Disable SChannel Use of Strong Crypto -- Now disabled by default
    • CA5376: Use SharedAccessProtocol HttpsOnly -- Now disabled by default
    • CA5377: Use Container Level Access Policy -- Now disabled by default
    • CA5378: Do not disable ServicePointManagerSecurityProtocols -- Now disabled by default
    • CA5380: Do Not Add Certificates To Root Store -- Now disabled by default
    • CA5381: Ensure Certificates Are Not Added To Root Store -- Now disabled by default

v3.0.0-beta2.final

24 Mar 18:08
6dc3658
Compare
Choose a tag to compare
v3.0.0-beta2.final Pre-release
Pre-release

Pre-release build of Roslyn-analyzers based on Microsoft.CodeAnalysis 3.0.0 NuGet packages. Works with VS 2019 or later.

Contains following important changes on top of v2.9.x releases

Bug Fixes

Lot of bug fixes

Additional analyzers/fixers:

Added

  • Design
    • CA1021: Avoid out parameters
    • CA1069: Enums values should not be duplicated -- Enabled by default
  • Reliability
    • CA2011: Avoid infinite recursion -- Enabled by default
    • CA2012: Use ValueTasks correctly -- Enabled by default
    • CA2013: Do not use ReferenceEquals with value types -- Enabled by default
  • Usage
    • CA2215: Dispose methods should call base class dispose -- Enabled by default

Changed

  • Security
    • CA5361: Do Not Disable SChannel Use of Strong Crypto -- Now disabled by default
    • CA5376: Use SharedAccessProtocol HttpsOnly -- Now disabled by default
    • CA5377: Use Container Level Access Policy -- Now disabled by default
    • CA5378: Do not disable ServicePointManagerSecurityProtocols -- Now disabled by default
    • CA5380: Do Not Add Certificates To Root Store -- Now disabled by default
    • CA5381: Ensure Certificates Are Not Added To Root Store -- Now disabled by default