Skip to content

9.8

Compare
Choose a tag to compare
@Tim-Pohlmann Tim-Pohlmann released this 21 Aug 14:10
· 999 commits to master since this release
c1515ba

This release completes our effort to migrate all our symbolic execution rules from our old to our new engine: S2583 and S2589 are now migrated and see significant improvements. Also, they are now available for VB.NET. This being the last analyzer to migrate means that the engines don't run in parallel anymore, which significantly reduces analysis time.

On top of that, our TokenTypeAnalyzer got a rework, which also improves performance in terms of analysis time and memory usage.

This new release supports a new taxonomy for issues and hotspots that better reflects the characteristics of Clean Code.

New Rules

  • 7648 - [VB.NET] S2589: Boolean expressions should not be gratuitous
  • 7647 - [VB.NET] S2583: Conditionally executed code should be reachable

Improvements

  • 7646 - [C#] Migrate S2583/S2589 to the new Symbolic Execution engine (C#)
  • 7369 - [C#] UtilityAnalyzer: Move to a syntax based classification of identifiers in the token type utility analyzer
  • 7697, 7803 - Update RSPEC before 9.8 release

False Positives

  • 7789 - [C#] Fix S2583/S2589 FP: Do not raise when condition is in the body of a lock statement.
  • 2496 - [C#] Fix S2583,S2589 FP: with nullable struct - update symbolic execution engine
  • 5601 - [C#] Fix S2583 FP: Variable change not detected inside a loop
  • 5002 - [C#] Fix S2583 FP: Property pattern match in else-if condition
  • 4755 - [C#] Fix S2583 FP: When using nullable boolean in if-elseif-else.
  • 4559 - [C#] Fix S2583 FP: User-defined explicit/implicit casts
  • 3288 - [C#] Fix S2583 FP: Invocation argument constraints should be independent
  • 2411 - [C#] Fix S2583 FP: confusing message for Guid comparison - should trigger S2589 instead
  • 739 - [C#] Fix S2583 FP: Condition evaluates to constant - false positive when casting floating point numbers
  • 7489 - [C#] Fix S2589 FP: Deconstructing a tuple in foreach loop
  • 7096 - [C#] Fix S2589 FP: || and property patterns
  • 5221 - [C#] Fix S2589 FP with nullable value types
  • 3910 - [C#] Fix S2589 FP and FN: Conditional access and pattern matching
  • 3565 - [C#] Fix S2589 FP: with StringSegment and literal null
  • 3353 - [C#] Fix S2589 FP: ref parameters in multithreading

False Negative

  • 6745 - [C#, VB.NET] Fix S2589 FN: Detect comparison between constant values
  • 4515 - [C#] Fix S2583 FN: Local functions