mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-25 02:21:17 +07:00
This patch alters the `getRedundantStringBuilderToStringProblem` method with more sophisticated algorithm to detect unnecessary freestanding `StringBuilder#toString` calls. If the call is a part of a polyadic expression it checks if there is at least one string operand (either a constant literal or a local variable or a constant variable or a method call) and based on that information it detects redundant `StringBuilder#toString` calls. Signed-off-by: Nikita Eshkeev <nikita.eshkeev@jetbrains.com> GitOrigin-RevId: e09ea8b8829ad9e28e8ff1bcfad34cf6b191aa6b
54 lines
1.7 KiB
Java
54 lines
1.7 KiB
Java
// "Fix all 'Redundant String operation' problems in file" "true"
|
|
|
|
class StringBuilderToString {
|
|
|
|
private static final String CONST_STRING_VAL = "Hello";
|
|
static String str() { return ""; }
|
|
|
|
void stringBuilderToStringSubstring() {
|
|
String s1 = new StringBuilder().toString();
|
|
/* 1 */
|
|
String s2 = new StringBuilder()/* 2 */.substring(1);
|
|
/* 1 */
|
|
String s3 = new StringBuilder()/* 2 */.substring(1, 4);
|
|
/* 1 */
|
|
String s4 = new StringBuilder()/* 2 */.substring(1, 4);
|
|
/* 1 */
|
|
int s5 = new StringBuilder()/* 2 */.substring(1, 4).length();
|
|
|
|
/* 1 */
|
|
System.out.println(new StringBuilder()/* 2 */);
|
|
/* 1 */
|
|
System.out.println(new StringBuilder()/* 2 */.substring(1));
|
|
/* 1 */
|
|
System.out.println(new StringBuilder()/* 2 */.substring(1, 3));
|
|
/* 1 */
|
|
System.out.println(new StringBuilder()/* 2 */.substring(1, 3).length());
|
|
System.out.println(new StringBuilder().substring(1, 3));
|
|
System.out.println(new StringBuilder().substring(1, 3).length());
|
|
}
|
|
|
|
void builder(StringBuilder sb) {
|
|
String s1 = sb.toString();
|
|
/* 1 */
|
|
String s2 = sb/* 2 */.substring(1);
|
|
/* 1 */
|
|
String s3 = sb/* 2 */.substring(1, 4);
|
|
/* 1 */
|
|
String s4 = sb/* 2 */.substring(1, 4);
|
|
/* 1 */
|
|
int s5 = sb/* 2 */.substring(1, 4).length();
|
|
|
|
/* 1 */
|
|
System.out.println(sb/* 2 */);
|
|
/* 1 */
|
|
System.out.println(sb/* 2 */.substring(1));
|
|
/* 1 */
|
|
System.out.println(sb/* 2 */.substring(1, 3));
|
|
/* 1 */
|
|
System.out.println(sb/* 2 */.substring(1, 3).length());
|
|
System.out.println(sb.substring(1, 3));
|
|
System.out.println(sb.substring(1, 3).length());
|
|
}
|
|
}
|