This release introduces 3 new security-related rules for VB.NET and improves the precision of their existing C# versions by migrating them to the new symbolic execution engine.
This version also includes a new code fix and fixes for false negative issues.
Kudos to @Corniel for his contribution by implementing a codefix for S125 (SonarSource/sonar-dotnet#313)
New Rules
7560 - [VB.NET] New rule S2053: Hashes should include an unpredictable salt
7562 - [VB.NET] New rule S3329: Cipher Block Chaining IVs should be unpredictable
7565 - [VB.NET] New Rule S5773: Types allowed to be deserialized should be restricted
Improvements
7424 - [VB.NET] Merge rule S2373 onto S119 (S2373 is now deprecated)
313 - [C#] Rule S125: Add a code fix to remove the commented code
7547 - [C#, VB.NET] Fix S6588 FN: Rule should cover case with epoch ticks
9.5
Release 9.5 introduces 9 new rules for C# and VB.NET developers, providing guidelines and best practices for handling date and time operations within their applications.
These rules cover a wide range of topics, including time zone conventions, common pitfalls, date parsing and formatting, time arithmetic, and more.
This release includes also one additional security rule and introduces fixes for false negatives and false positives.
Thanks to @Corniel for his contribution by implementing a new codefix for S6610 (#7517) and fixing a FP in S6354 (#7504).
New Rules
Date & time
7080 - [C#, VB.NET] New rule S6588: Use DateTime(Offset).UnixEpoch instead of pointing to that date using the constructor
7085 - [C#, VB.NET] New rule S6566: Always use DateTimeOffset instead of DateTime
7083 - [C#, VB.NET] New rule S6561: Do not use DateTime.Now for benchmarking or timing operations
7081 - [C#, VB.NET] New rule S6562: Always set the DateTimeKind when creating a new DateTime object
7079 - [C#, VB.NET] New rule S6585: Don't hardcode the format provider when turning dates and times to string
7078 - [C#, VB.NET] New Rule S6580: Always use DateTime.Parse overloads with an IFormatProvider parameter
7077 - [C#, VB.NET] New rule S6575: Use TimeZoneInfo.FindSystemTimeZoneById instead of TimezoneConverter
7076 - [C#, VB.NET] New Rule S6563: Use UTC when recoding DateTime instants
7490|7086 - [C#, VB.NET] New rule S3363: Date and time should not be used as types for primary keys
Others
7290 - [C#] New rule S6640: Allowing unsafe code is security-sensitive
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps SonarAnalyzer.CSharp from 9.3.0.71466 to 9.6.0.74858.
Release notes
Sourced from SonarAnalyzer.CSharp's releases.
... (truncated)
Commits
1366be8
Update RSPEC before 9.6 release (#7654)14115ea
S5773: VB.NET implementation (#7623)be9ca30
Improve S5773: Support secondary issue location for partial methods (#7640)753ea36
Rename CFG NuGet to SonarAnalyzer.CFG (#7644)6379760
Bump protobuf-java from 3.23.1 to 3.23.4 (#7551)ee189b6
Bump classgraph from 4.8.160 to 4.8.161 (#7543)28ab634
GitHub workflow: Add CreateCardForIssueFromLabel from dev (#7637)287465d
Migrate S5773: Implement ShouldExecute (#7628)0b7202c
Migrate S5773: Implement the rule in the new SE (#7580)5558364
SE: Extract common functionality from S3329 and S2053 to a base class (#7627)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)