Repository navigation
Releases: openrewrite/rewrite-static-analysis
Releases · openrewrite/rewrite-static-analysis
Release list
2.46.0
What's Changed
- UsePortableNewlines: skip escaped backslashes and CRLF by @greg-at-moderne in #1086
- Stop
FixStringFormatExpressionsfrom rewriting \n to %n by @greg-at-moderne in #1087 - TernaryOperatorsShouldNotBeNested support for assignemnts and declara… by @greg-at-moderne in #1088
- Don't use CLI's Go RPC binary in tests by @greg-at-moderne in #1091
- Refactoring: use ListUtils more by @greg-at-moderne in #1090
- TernaryOperatorsShouldNotBeNested not to mangle primitive numeric types by @greg-at-moderne in #1089
- Add RemoveUnnecessaryBitwiseOperation recipe by @Jammy-Louie in #1085
- AnnotateNullableMethods to skip JS sources by @greg-at-moderne in #1093
- MissingOverrideAnnotation: only apply to Java and Groovy sources by @timtebeek in #1094
- Limit
ObjectFinalizeCallsSuperto Java, Groovy by @greg-at-moderne in #1095 doNotChangeDifferentRecordPatternstest case forRemoveDuplicateConditionsby @greg-at-moderne in #1097- InterruptedExceptionHandling: rename unnamed
_multi-catch variable b… by @greg-at-moderne in #1096 - Advertise RSPEC-S2970 on
FindIgnoredCheckReturnValueby @Jammy-Louie in #1098 - Match fully qualified System.out and class literals by type by @jkschneider in #1099
- Use the parent cursor for the visited tree and new ids for nested copies by @jkschneider in #1100
- Tell the block's visit about default-only switches in a cursor message, not a marker by @jkschneider in #1101
- Write literals, catches and && chains as the parser builds them by @jkschneider in #1102
- Merge every closed resource of a try in one pass in UseTryWithResources by @knutwannheden in #1105
- Keep close order and resource scope when merging closes in UseTryWithResources by @knutwannheden in #1106
- Keep the method type in sync with the return type in UseCollectionInterfaces by @knutwannheden in #1107
- Add FindNonCaseLabelsInSwitch recipe (
RSPEC-S1219) by @Jammy-Louie in #1108 - Upgrade to Gradle 9.8.2 by @jkschneider in #1110
- Preserve raw cast on non-parameterized subtype argument in
RemoveRedundantTypeCastby @shukla-pranjal in #1109 - AnnotateRequiredParameters, CatchClauseOnlyRethrows and ReplaceStackWithDeque remove the imports they leave unused by @knutwannheden in #1113
- Set Java version marker directly in
InstanceOfPatternMatchTestby @timtebeek in #1114 - Preserve comments before unwrapped else blocks by @martinfrancois in #992
- ObjectFinalizeCallsSuper: declare the overridden finalize() exceptions when adding super.finalize() by @martinfrancois in #969
- Correct recipe display names, descriptions and option descriptions (M9) by @timtebeek in #1118
- Tighten recipe preconditions (M8 from #1115) by @timtebeek in #1121
- B3:
EmptyBlockkeepsfinallystatements andswitchselector side effects, and leavessynchronizedalone by @timtebeek in #1117 - Correct RSPEC tags and declare Sonar effort estimates (M10) by @timtebeek in #1119
- SimplifyArraysAsList: do not unwrap primitive arrays (C16 from #1116) by @timtebeek in #1125
- B5:
RedundantFileCreationonly unwrapsnew File(String)by @timtebeek in #1124 - A7 + B6: scope follow-up visitors to what each recipe changed by @timtebeek in #1122
- C1:
NoValueOfOnStringTypekeeps oneString.valueOfwhen both concatenation operands arevalueOfcalls by @timtebeek in #1127 - C17:
SimplifyBooleanExpressionkeeps== trueon Kotlin calls returningBoolean?by @timtebeek in #1126 - C2:
NoEqualityInForConditionflips the operator when the loop variable is on the right by @timtebeek in #1128 - Add IsEmptyCallOnMaps recipe by @neil-mushell in #1112
- A7 + B6 follow-up: side effects, comments and formatting scope by @timtebeek in #1123
- Register warmJavaScriptRpcCache without the deprecated registering delegate by @timtebeek in #1130
- Use
excludedBoundsinCommonDeclarationSiteTypeVariancesby @timtebeek in #1131 - Preserve nonzero long field initializers at full width by @jkschneider in #1141
- Preserve NaN semantics when simplifying negated comparisons by @jkschneider in #1142
- Preserve Float double constructor conversions (1116 C7) by @jkschneider in #1143
- EqualsAvoidsNull: keep the null check before contentEquals by @timtebeek in #1138
- Keep the null check before
contentEqualsinEqualsAvoidsNullby @timtebeek in #1133 - Clean up
@Issuelinks in tests (M14) by @timtebeek in #1135 - Fix
FinalizePrivateFieldsfor initializer reads, Kotlinvarand Groovy (C9) by @timtebeek in #1139 - Add a delegating
equals(Object)inCovariantEquals(A8 of #1116) by @timtebeek in #1134 - Load every YAML recipe in a test (M13) by @timtebeek in #1136
- Remove stale
@Incubatingannotations (M15) by @timtebeek in #1137 - Skip JavaScript/TypeScript sources in
RemoveExtraSemicolonsby @ds-xdev in #1145 - Resolve stale disabled tests, fold language variants and tidy test names (M12) by @timtebeek in #1144
- Don’t leave a null body when removing the only statement of a brace-less if or loop by @greg-at-moderne in #1149
- Fix
ReplaceStringBuilderWithStringliteral conversion,CharSequenceseeds and Kotlin output by @greg-at-moderne in #1150 - Remove
//noinspectionlines, IDE-only suppressions and comments that restate the code (M6) by @timtebeek in #1146 - Replace
assert, useJavaIsoVisitorandListUtils, and remove dead code (M7) by @timtebeek in #1147 - C11:
UseJavaStyleArrayDeclarationsonly rewrites declarations with matching dimensions by @Niloyyy in #1132 - Keep labelled
continueand the comments of a removedreturn;(B9 from #1116) by @tashen247 in #1148 - Leave a
Stackas it is when rewrite-analysis cannot follow where it flows, as its last release cannot through an anonymous class by @jkschneider in #1151
New Contributors
- @shukla-pranjal made their first contribution in #1109
- @ds-xdev made their first contribution in #1145
- @tashen247 made their first contribution in #1148
Full Changelog: v2.45.0...v2.46.0
2.45.0
What's Changed
- Add FindMainWithThrowsClause recipe (RSPEC-S2096) by @steve-aom-elliott in #1072
- Fix serialVersionUID for generic Serializable classes by @LouisDeconinck in #1056
- Add some scala() assertions to selected recipe tests by @greg-at-moderne in #1073
- Null-safety for space in RemoveExtraSemicolons by @greg-at-moderne in #1076
- Run MoveFieldAnnotationToType only on Java sources by @myhau in #1077
- Preserve the comments on a cast declaration
InstanceOfPatternMatchremoves by @jkschneider in #1078 - Remove ignored getter calls in
NewStringBuilderBufferWithCharArgumentandUnnecessaryThrowsby @timtebeek in #1081 - Remove imports left unused after RemoveMethodsOnlyCallSuper runs by @motlin in #1082
- Add FindIgnoredCheckReturnValue recipe by @timtebeek in #1080
- FindIgnoredCheckReturnValue: skip calls on the current instance in AssertJ assertion constructors by @timtebeek in #1084
- Fix InstanceOfPatternMatch: don't replace cast after variable reassignment by @devsuyash-Hq in #1083
- Keep Java
Runtime.execreplacements out of non-Java sources by @martinfrancois in #990
New Contributors
- @LouisDeconinck made their first contribution in #1056
- @myhau made their first contribution in #1077
- @devsuyash-Hq made their first contribution in #1083
Full Changelog: v2.44.0...v2.45.0
2.44.0
What's Changed
- Add FindWaitWithMultipleLocksHeld (Sonar S3046) by @steve-aom-elliott in #1059
- Add FindSystemAndRuntimeExitCalls recipe (RSPEC-S1147) by @steve-aom-elliott in #1058
- Add FindThreadGroupUsages recipe (RSPEC-S3014) by @steve-aom-elliott in #1063
- FallThrough: don't add a break after a guarded early exit by @Niloyyy in #1008
- NoDoubleBraceInitialization: don't retarget invocations inside nested anonymous classes by @Niloyyy in #1035
- DeclarationSiteTypeVariance: skip @OverRide methods when the supertype is unresolved by @Niloyyy in #1036
- Track taint through derived locals in FindNewExceptionWithoutCause by @knutwannheden in #1065
- UnwrapRepeatableAnnotations: only unwrap container annotations by @Niloyyy in #1064
- Only remove catch clauses backed by complete type information in UnnecessaryCatch by @knutwannheden in #1066
- Add UnnecessaryFinalInTryWithResources by @sullis in #1046
- fix: treat unresolved call sites as possible throw sites in UnnecessaryThrows by @knutwannheden in #1067
- ForLoopIncrementInUpdate: do not move increment skipped by continue by @koppor in #1062
- Collapse MethodNameCasing edit phase to single traversal by @greg-at-moderne in #1069
- FinalizePrivateFields not to run for JavaScript sources by @greg-at-moderne in #1070
- Add regression test for RemoveRedundantTypeCast on generic method in Stream.map by @timtebeek in #1071
New Contributors
Full Changelog: v2.43.0...v2.44.0
2.43.0
What's Changed
- Preserve
@Nullableparameters inAnnotateRequiredParametersby @timtebeek in #897 - Don't rewrite MinimumSwitchCases when the selector's type is unresolved by @neil-mushell in #1031
- Keep casts on
nullarguments that select an inherited overload by @jkschneider in #1033 - NoValueOfOnStringType: keep String.valueOf when the argument can be null by @Niloyyy in #1022
- Re-generate recipes.csv by @greg-at-moderne in #1037
- exclude JS sources from ExplicitLambdaArgumentTypes by @greg-at-moderne in #1041
- JavaScript: safety guard for Identifier cast in ExplicitThis by @greg-at-moderne in #1040
- FinalizeMethodArguments only for Java, Groovy by @greg-at-moderne in #1039
- Mark RemoveRedundantTypeCast as Java-only by @greg-at-moderne in #1038
- UseLambdaForFunctionalInterface to handle empty variable declarations… by @greg-at-moderne in #1042
- Resolve org.openrewrite build plugins from the Code Genome Project by @kmccarp in #1047
- Fix ClassCastException in InterruptedExceptionHandling on Kotlin sources by @greg-at-moderne in #1045
- Fix init of RemoveInstanceOfPatternMatch by @greg-at-moderne in #1044
- Narrow down TypecastParenPadStyle to Java only by @greg-at-moderne in #1043
- Fix UseLambdaForFunctionalInterface for varargs by @greg-at-moderne in #1048
- Prevent infinite recursion and StackOverflowError in ExplicitLambdaArgumentTypes by @greg-at-moderne in #1049
- SimplifyElseBranch not to produce el if for Python by @greg-at-moderne in #1051
- RemoveInstanceOfPatternMatchVisitor to handle other expressions too by @greg-at-moderne in #1054
Full Changelog: v2.42.0...v2.43.0
2.42.0
What's Changed
- BooleanChecksNotInverted not to alter Python chained comparisons by @greg-at-moderne in #1010
- Less eager changes in WriteOctalValuesAsDecimal by @greg-at-moderne in #1011
- Do not apply diamond operator when nested inference would fail by @timtebeek in #1013
- Limit ExplicitInitialization recipe to Java, C#, Groovy by @greg-at-moderne in #1015
- Setup Go RPC binary for tests by @greg-at-moderne in #1014
- Remove redundant
super()calls and upper case hexadecimal digits by @timtebeek in #1016 - Exclude Go from RemoveUnusedLocalVariables by @greg-at-moderne in #1017
- Test for if-with-initializer in Go by @greg-at-moderne in #1018
- Add Go tests for selected 7 recipes by @greg-at-moderne in #938
- Python: fix whitespace handling for SimplifyBooleanReturn by @greg-at-moderne in #1019
- Go: NoRedundantJumpStatements not to alter return statements with exp… by @greg-at-moderne in #1020
- Gate ReplaceStringConcatenationWithStringValueOf to Java+Groovy only by @greg-at-moderne in #1021
- Go: don't convert octal literals when used for file permissions by @greg-at-moderne in #1023
- RemoveRedundantTypeCast: keep casts on signature-polymorphic methods by @timtebeek in #1025
- Inline nested visitor classes into
getVisitor()by @timtebeek in #1026 - Inline
UseStringReplaceVisitorintogetVisitor()by @timtebeek in #1027 - Inline precondition-wrapped nested visitor classes by @timtebeek in #1028
- Drop rewrite-analysis from ReplaceCollectionToArrayArgWithEmptyArray by @timtebeek in #1029
- Only run data flow analysis on
Stackvariables inReplaceStackWithDequeby @timtebeek in #1030
Full Changelog: v2.41.1...v2.42.0
2.41.1
What's Changed
- Add
RemoveDuplicateAnnotationsby @timtebeek in #1000 - Revert "Skip the JavaScript RPC tests when their npm package is unavailable" by @timtebeek in #1001
- Do not remove
catch (Exception e)covering a checked exception by @timtebeek in #1003 - UnnecessaryExplicitTypeArguments: retain witness when enclosing method has dependent type parameters by @Niloyyy in #998
- Add recipe optimizing map iteration by @sambsnyd in #1004
- WhileInsteadOfFor not to run for Go code by @greg-at-moderne in #999
- Keep annotated and
strictfpoverrides that only call super by @martinfrancois in #988
New Contributors
Full Changelog: v2.41.0...v2.41.1
2.41.0
What's Changed
- Pre-install the JavaScript RPC npm package before running tests by @timtebeek in #956
- UnnecessaryExplicitTypeArguments: retain witness for a return-only ty… by @neil-mushell in #958
- Do not delete expressions that may have side effects by @timtebeek in #959
- OpenRewrite recipe best practices by @timtebeek in #960
- UseLambdaForFunctionalInterface: only convert when the anonymous class implements the SAM by @timtebeek in #962
- ReplaceStringBuilderWithString: wrap
char[]appends inString.valueOfby @martinfrancois in #977 - RemoveMethodsOnlyCallSuper: keep synchronized and deprecated overrides by @martinfrancois in #971
- Make sure ModifierOrder doesn't alter Python's def quasi-modifier by @greg-at-moderne in #981
- NullableOnMethodReturnType: only move annotations applicable to TYPE_USE by @martinfrancois in #968
FallThroughto work only for Java files by @greg-at-moderne in #982- Retry a failed npx warm, and survive a machine without Node by @timtebeek in #984
- Make
DefaultComesLastapply only to Java by @greg-at-moderne in #983
New Contributors
- @martinfrancois made their first contribution in #977
Full Changelog: v2.40.0...v2.41.0
2.40.0
What's Changed
- Retain UnnecessaryThrows on overridable methods (#939) by @timtebeek in #940
- Qualify
thisfor outer-class methods in ReplaceLambdaWithMethodReference by @timtebeek in #942 - FixStringFormatExpressions: don't strip args with no matched specifiers by @neil-mushell in #943
- UnnecessaryExplicitTypeArguments: retain load-bearing witness in argument position on instance methods too by @neil-mushell in #946
- Set Develocity
projectIdto "openrewrite" by @timtebeek in #947 - Add recipe for finding public methods missing javadoc by @sambsnyd in #948
- Add recipes for migrating off a variety of legacy collection types by @sambsnyd in #949
- exception-without-cause by @sambsnyd in #950
- Do not wrap operators onto a new line in Kotlin sources by @vlsi in #936
- Do not remove casts from raw types to their parameterized form by @timtebeek in #954
- Forward Code Genome Project publish credentials to
ci-gradle.ymlby @jkschneider in #955
New Contributors
- @neil-mushell made their first contribution in #943
- @vlsi made their first contribution in #936
Full Changelog: v2.39.0...v2.40.0
2.39.0
What's Changed
- Fix UseStringCaseInsensitiveOrder lambda matching by @timtebeek in #933
- Keep (Object) cast on array argument at varargs position by @timtebeek in #935
- Python: add Python tests for selected 7 recipes by @greg-at-moderne in #929
- Consolidate UseStringCaseInsensitiveOrder into a single Refaster template by @timtebeek in #937
Full Changelog: v2.38.0...v2.39.0
2.38.0
What's Changed
- Fix
UseTryWithResourcesmoving resource out of scope for catch block by @timtebeek in #921 - Fix
MinimumSwitchCasescrash on Java 21 sealed-interface pattern switch by @timtebeek in #922 - Fix RemoveUnusedPrivateMethods deleting methods called with raw collection arguments by @habiibullahm in #898
- Add UseStringCaseInsensitiveOrder by @steve-aom-elliott in #923
- Add 7 cross-language code quality recipes by @jkschneider in #853
- Fix
RemoveRedundantTypeCastremoving cast that gives avarlambda its target type by @timtebeek in #925 - Tests for Kotlin, Groovy, TS for cross-language code quality recipes by @greg-at-moderne in #928
- Add RemoveUnreachableMultiCatchAlternative by @steve-aom-elliott in #926
- Use unnamed variable for unused try-with-resources resource on Java 21+ by @timtebeek in #930
New Contributors
- @habiibullahm made their first contribution in #898
Full Changelog: v2.37.0...v2.38.0