Releases: SonarSource/sonar-dotnet
Releases · SonarSource/sonar-dotnet
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
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
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
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
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
5.11
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
Fixing test coverage