.NET Compiler Platform ("Roslyn") Analyzers v3.3.0 Release Notes

Release Date: 2020-08-10 // over 3 years ago
  • ๐Ÿš€ 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-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