Skip to content

Releases: SonarSource/sonar-dotnet

6.3

04 Aug 14:02
Compare
Choose a tag to compare
6.3

Bug

  • #416 - Fix S3881: Rule should not fail on partial classes
  • #526 - Fix S101: "Class Name" infinite loop when class name contains non-Latin Characters
  • #576 - Fix S100: infinite loop when class name contains non-Latin Characters
  • #587 - Fix S3966: Rule should not throw cast exception
  • #589 - Fix S3925: Call to 'base.GetObjectData' is not properly detected

False Positive

  • #174 - Update S101: A special case should be made for two-letter acronyms in which both letters are capitalized
  • #547 - Fix S3346: Rule raises FP on peach
  • #571 - Fix S2275: Rule should not trigger on space before alignment
  • #590 - Fix S1751: Rule should not raise on "retry on exception" pattern

Improvement

  • #320 - Update S100: Support custom dictionaries for adding names that will not raise issues
  • #565 - POC for analyzer running on Linux
  • #566 - Automate website release process
  • #591 - Update S3966: Rule should detect multiple call of Dispose on this
  • #600 - Update S2275: Rule should detect too big values for ArgumentIndex and Alignment
  • #607 - Update S3962: Ignore public static readonly fields
  • #608 - Update S112: Report if exceptions are actually thrown, not just created

New Feature

  • #254 - Rule S3985: Unused private classes should be removed
  • #541 - Rule S2114: Collections should not be passed as arguments to their own methods
  • #570 - Symbolic Execution Engine supports multiple constraints per Symbolic Value
  • #583 - Rule S1696: 'NullReferenceException' should not be caught
  • #584 - Rule S3693: Exception constructors should not throw exceptions
  • #585 - Rule S3717: Track use of "NotImplementedException"

6.3-RC1

02 Aug 12:10
Compare
Choose a tag to compare
6.3-RC1 Pre-release
Pre-release

6.2

02 Aug 07:51
Compare
Choose a tag to compare
6.2

False Positive

  • #504 - Fix S2386: Rule should not report when readonly field is initialized with null
  • #530 - Fix S3881: "Implement IDisposable correctly" should allow calling GC.SuppressFinalize(this) even when there is no destructor
  • #550 - Fix S3908: Rule should not report issues on classes that implement interfaces

Improvement

  • #516 - Update S927: C#: parameter names should match base declaration and other partial definitions
  • #519 - Rule S110: "filteredClasses" documentation should describe which delimiter to use or provide specific examples

New Feature

  • #164 - Rule S3900: Arguments of public methods should be validated against null
  • #209 - Rule S3966: Objects should not be disposed more than once
  • #497 - Rule S4070: Non-flags enums should not be marked with "FlagsAttribute"
  • #498 - Rule S4049: Properties should be preferred
  • #499 - Rule S4050: Operators should be overloaded consistently
  • #500 - Rule S4052: Types should not extend outdated base types
  • #501 - Rule S4060: Non-abstract attributes should be sealed
  • #502 - Rule S4061: "params" should be use instead of "varargs"
  • #503 - Rule S4047: Generics should be used when appropriate
  • #506 - Rule S3956: "Generic.List" instances should not be part of public APIs
  • #507 - Rule S1075: URIs should not be hardcoded
  • #508 - Rule S4069: Operator overloads should have named alternatives
  • #509 - Rule S4058: Overloads with a "StringComparison" parameter should be used
  • #510 - Rule S4059: Property names should not match get methods
  • #511 - Rule S4057: Locales should be set for data types
  • #512 - Rule S4055: Literals should not be passed as localized parameters
  • #513 - Rule S4056: Overloads with a "CultureInfo" or an "IFormatProvider" parameter should be used
  • #514 - Rule S3242: Method parameters should be declared with base types
  • #515 - Rule S1200: Classes should not be coupled to too many other classes (Single Responsibility Principle)
  • #517 - Rule S3649: User-provided values should be sanitized before use in SQL statements

Notes

6.2-RC1

14 Jul 08:52
Compare
Choose a tag to compare
6.2-RC1 Pre-release
Pre-release

6.1

05 Jul 12:25
Compare
Choose a tag to compare
6.1

Bug

  • #298 - Potential problem in CFG with continue statement in and do-while loop
  • #406 - SonarC# fails when parsing xUnit test results with empty tags
  • #462 - Fix S3897: Classes that provide "Equals()" should implement "IEquatable"
  • #489 - Provide better error message when using old version of Scanner for MSBuild

False Positive

  • #152 - Fix S2583: Rule should consider Nullable values
  • #376 - Fix S3897: Correctly recognize IEquatable implementations from base classes
  • #424 - Update S3427: "Method overloads" should not raise when methods differ by generic type arguments
  • #430 - Update S3237: Add exception for empty properties from interfaces
  • #431 - Fix S1944: don't raise issue on "as"
  • #472 - Fix S2386: Do not raise if the readonly field is initialized with a known immutable collection
  • #473 - Fix S4015: Rule should not raise on 'new' or 'override' members
  • #493 - Fix S2259: "Null pointer dereference" raises FP when a variable is initialized in catch(Exception) block

Improvement

  • #154 - Support many coverage reports
  • #235 - Update S1764: Comparing the same object with Object.Equals() method
  • #322 - Fail fast ITs if not on Windows
  • #380 - [Technical] Improve build scripts to allow building SonarC# on a dev box
  • #388 - Update S1479: "Switch with too many cases" should ignore empty, fall-through cases
  • #420 - S3897 is an unsafe suggestion in my opinion
  • #422 - default() should have a null or not null constraint on it
  • #455 - Add blocks for try-finally statements into CFG, ignoring catch clauses (happy path)
  • #467 - Add blocks in CFG for catch clauses and connect try-finally
  • #468 - Support nested try-catch blocks
  • #486 - Fix spelling errors

New Feature

  • #215 - Rule S3972: Conditionals should start on new lines
  • #433 - Rule S2221: "Exception" should not be caught when not required by called methods
  • #434 - Rule S4039: Interface methods should be callable by derived types
  • #436 - Rule S4041: Type names should not match namespaces
  • #437 - Rule S3927: Serialization event handlers should be implemented correctly
  • #461 - Rule S4035: Classes implementing "IEquatable" should be sealed

Notes

6.1-RC1

30 Jun 12:43
Compare
Choose a tag to compare
6.1-RC1 Pre-release
Pre-release

6.0

30 Jun 14:31
Compare
Choose a tag to compare
6.0

Bug

  • #386 - Fix S1939: Extends and implements list entries should not be redundant
  • #423 - Fix Symbolic Execution: Invalid nameof() should be properly handled

False Negative

  • #317 - Update S2234: Add support for constructors

False Positive

  • #153 - Fix S1871: "Branches with same implementation" should ignore single line blocks
  • #297 - Fix S1940: "Inverted boolean checks" should not suggest inversion for Nullable
  • #343 - Fix S2681: Fix FP on try-catch block
  • #345 - Fix S1751: "Unconditional jump statements" should not raise if a conditional continue is detected
  • #347 - Fix S2589: "Gratuitous expressions" should not raise if expression is the condition of a loop and break is detected
  • #366 - Fix S3963: Should not raise issue when the static constructor does not assign any fields

Improvement

  • #220 - Process coverage reports only once for a solution
  • #346 - Update S2328: "GetHashCode should not reference mutable fields" should report once per method
  • #348 - Update S3904: "Assemblies should have version" should be code smell
  • #370 - Update S2387, Rule S4025: "Child class fields shadowing parent fields" should ignore "static" fields, field names that differ by case are handled by S4025
  • #374 - Drop MSBuild 12 support
  • #394 - Decrease plugin size
  • #438 - Update S1210: "Override Equals when implementing IComparable" should be code smell
  • #439 - Update S2743: "Static fields in generic types" should be code smell
  • #440 - Update S3220: "Method calls should not resolve ambiguously" should be code smell
  • #441 - Update S3881: "IDisposable should be implemented correctly" should be code smell
  • #442 - Update S3885: "Assembly.Load should be used" should be code smell
  • #443 - Update S3904: "Assemblies should have version information" should be code smell
  • #444 - Update S3925: "ISerializable should be implemented correctly" should be code smell

New Feature

  • #333 - Rule S2068: Credentials should not be hard-coded
  • #350 - Rule S4015: Inherited member visibility should not be decreased
  • #351 - Rule S4016: Enumeration members should not be named "Reserved"
  • #352 - Rule S4017: Method signatures should not contain nested generic types
  • #353 - Rule S4018: Generic methods should provide type parameters
  • #354 - Rule S4019: Base class methods should not be hidden
  • #356 - Rule S4022: Enums storage should be Int32
  • #357 - Rule S4023: Interfaces should not be empty
  • #359 - Rule S3906: Declare event handlers correctly
  • #360 - Rule S3908: Generic event handlers should be used
  • #361 - Rule S3909: Collections should implement the generic interface
  • #365 - Rule S1123: "Obsolete" attributes should include explanations
  • #383 - Rule S4026: Assemblies should be marked with NeutralResourcesLanguageAttribute
  • #384 - Rule S4027: Exceptions should provide standard constructor

Notes

6.0-RC1

15 Jun 12:55
Compare
Choose a tag to compare
6.0-RC1 Pre-release
Pre-release

5.11

02 Aug 08:00
Compare
Choose a tag to compare

Bug

  • #302 - Fix S2275: InvalidCastExteption when analyzing single argument method
  • #362 - Fix Sensors: Unit/Integration test results are skipped when module doesn't contain cs file

False Positive

  • #167 - Fix S1121: Assignments should not be made from within sub-expressions' should ignore chained assignments

Improvement

  • #277 - Update S3881: should require a call to base.Dispose(bool)
  • #296 - Update S3449: replace XML-encoded characters in description
  • #309 - Update S3776: Disable by default because it is a parametrized rule
  • #325 - Update RSPEC metadata before releasing 5.11
  • #328 - Deprecate S1145
  • #330 - Update S2589 and S2583: raise issues for "true" and "false" literals
  • #336 - Use the Category property from RSPEC to determine the rule type
  • #338 - Update S112: "Do not throw general exceptions" should be Code Smell
  • #339 - Update S1854: Dead Stores should be code smell
  • #340 - Update S2372: "Do not throw exceptions from property getters" should be Code Smell

New Feature

  • #173 - Rule S3346: Expressions used in "Debug.Assert" should not produce side effects
  • #250 - Rule S3981: Collection sizes and array lengths should not be tested against ">= 0"
  • #251 - Rule S3984: Exception should not be created without being thrown
  • #265 - Rule S3990: Assemblies should be marked as CLS compliant
  • #266 - Rule S3992: Assemblies should explicitly specify COM visibility
  • #267 - Rule S3993: Custom attributes should be marked with "System.AttributeUsageAttribute"
  • #268 - Rule S3994: URI Parameters should not be strings
  • #269 - Rule S3995: URI return values should not be strings
  • #270 - Rule S3996: URI properties should not be strings
  • #271 - Rule S3997: String URI overloads should call "System.Uri" overloads
  • #274 - Rule S3998: Threads should not lock on objects with weak identity
  • #275 - Rule S4000: Pointers to unmanaged memory should not be visible
  • #279 - Rule S4002: Disposable types should declare finalizer
  • #280 - Rule S4004: Collection properties should be readonly
  • #281 - Rule S4005: "System.Uri" argument should be passed instead of string

Notes

5.11-RC2

29 May 14:48
Compare
Choose a tag to compare
5.11-RC2 Pre-release
Pre-release
Fixing test coverage