Release notes - SonarJava - 8.41
Feature
SONARJAVA-4647 java:S120: Update the location where the rule is raising an issue
SONARJAVA-6304 Create rule S8218: Instant APIs should only use supported temporal units
SONARJAVA-6780 Create rule S9354: "Comparable.compareTo()" and "Comparator.compare()" should not use subtraction on numerical fields
SONARJAVA-6783 Create rule S9345: Classes with throwing constructors should be protected against Finalizer attacks
SONARJAVA-6786 Create rule S9346: Integer values should not be cast to long for use as timestamps
SONARJAVA-6788 Create rule S9361: Duplicate keys or elements should not be passed to immutable collection factory methods
SONARJAVA-6818 Update RSPEC before 8.41 release
SONARJAVA-6823 Port rule S909: "continue" should not be used in loops
SONARJAVA-6824 Create rule S9358: Conditional expressions should not duplicate operations in both branches
SONARJAVA-6826 Create rule S9359: Octal escape sequences should not be followed by digits
SONARJAVA-6827 Create rule S9357: Anonymous classes on functional interfaces should be lambdas
SONARJAVA-6839 Create rule S9362: hashCode() and equals() should use consistent fields
SONARJAVA-6840 Create rule S9363: Invalid time-zone IDs should not silently fall back to GMT
SONARJAVA-6842 Create rule S9364: Local variables should not span switch case groups
SONARJAVA-6843 Create rule S9365: Copy constructors should initialize all fields
False Positive
SONARJAVA-6820 S9355: ignore Eclipse (non-Javadoc) override comments
SONARJAVA-6838 S9354: ignore subtraction of operands with a provably bounded range
SONARJAVA-6853 S3329: Fix false positive when cipher.init uses a non-final variable initialized to DECRYPT_MODE
Maintenance
SONARJAVA-6819 Prepare next development iteration 8.41.0
SONARJAVA-6828 Add AGENTS.md to provide guidance to agents making changes to rules
SONARJAVA-6829 Update dependency com.google.guava:guava to v33.7.0-jre
SONARJAVA-6831 Update dependency jdx/mise to v2026.8.8
SONARJAVA-6837 Update dependency com.google.guava:guava to v33.7.1-jre
SONARJAVA-6849 Update dependency jdx/mise to v2026.8.9
SONARJAVA-6850 Fix SonarQube QG
SONARJAVA-6851 Update dependency org.springframework:spring-expression to v7.0.9
SONARJAVA-6852 Update SonarSource/sonar-scanner-engine monorepo to v13.9.0.4593
SONARJAVA-6858 Update dependency jdx/mise to v2026.8.10
SONARJAVA-6860 Upgrade the minimum Java version to 21
SONARJAVA-6862 Update rule metadata
SONARJAVA-6864 Fix all 60 open SonarQube issues on master
SONARJAVA-6866 Fix S9358: Move conditional expressions inside operations