All Classes and Interfaces

Class
Description
Enables common behavior to JavaParser-based rules
Most AJavaparserAstMutator will trigger over an Expression
A single-node (i.e.
Most AJavaparserNodeMutator will trigger over an Statement
Deprecated.
Deprecated.
Helps building an IMutator which will process consecutive Statements in a BlockStmt
Turns 'i = i + 3;` into `i += 3;`
Turns '1F + 0.1F` into `(double) 1F + 0.1F`
Turns 'Arrays.asList("1", 2).stream()' into 'Arrays.stream("1", 2)'
Helps preparing rules
Migrate from 'm.size() == 0’ to ’m.isEmpty()'.
Deprecated.
Turns 'boolean b = (x > 1 ) ? true : callback.doIt() || true' into 'if (x > 1) { ...
Turns '!!someBoolean()' into 'someBoolean()'
Turns `throws RuntimeException` into ``
Helps mutating BinaryExpr
Turns 'float f = 2/3;` into `float f = (float)2/3;`
This mutator will apply all IMutator fixing a CheckStyle rules.
Turns 's.indexOf(subString) >= 0' into 'c.contains(subString)' in String
Turns `list.isEmpty() ? Optional.empty() : Optional.of(list.get(0))` into `list.stream().findFirst()`
Turns 'd == Double.NaN' into 'Double.isNaN(d)'
This mutator make it easy to composite multiple IJavaparserAstMutators in a single one.
cases inspired from #description
Turns '{}' into ''
Prevent relying .equals on Enum types
This mutator will apply all IMutator fixing ErrorProne rules.
See TestForEachAddToStreamCollectToCollectionCases
Turns `for(User user : users) { if(!isImportantCustomer(user)) { break; } attachDiscount(user); }` into `users.stream().takeWhile(user -> isImportantCustomer(user)).forEach(user -> applyDiscount(user));`
Turns `String key = ""; for (String value : values) { if (value.length() > 4) { key = value; break; } }` into `String key = values.stream().filter(value -> value.length() > 4).findFirst().orElse("");`
See TestForEachIfToIfStreamAnyMatchCases
Turns `for (String string : stringList) {System.out.println(string);}` into `stringList.forEach(s -> System.out.println(s));`
Turns 'ImmutableMap.of("k1", 0, "k2", 1)` into `ImmutableMap.builder().put("k1", 0).put("k2", 1).build()`
Turns 'Strings.repeat("abc", 3)` into `"abc".repeat(3)`
This mutator will apply all IMutator improving Guava usage.
Turns 's == null || s.isEmpty()` into `Strings.isNullOrEmpty(s)`
Deprecated.
An IMutator which can edit a JavaParser Node
An IMutator which can edit a JavaParser Node
Helps working with ImportDeclaration
This will turn qualified names into imports.
Helpers knowing what could be the impact of given rule
Formatter for Java
This class is dedicated to refactoring.
CleanThat as an IEngineStep.
This mutator will apply all IMutator fixing ErrorProne rules.
Migrate from JUnit4 to JUnit5/Jupiter.
Helps crafting LambdaExpr
Turns `.stream(s -> s.size())` into `.stream(String::size)`
Turns '.stream(s -> {return s.subString(0, 2)})' into '.stream(s -> s.subString(0, 2))'
Switch o.equals("someString") to "someString".equals(o)
Turns 'int i = 10;' into 'var i = 10'.
Turns `for (int i = 0 ; i < 10 ; i ++) {System.out.println(string);}` into `IntStream.range(0, 10).forEach(j -> System.out.println(j));`
Helps working with MethodCallExpr
Order modifiers according the the Java specification.
Helps working with NameExpr
NodeAndSymbolSolver<T extends com.github.javaparser.ast.Node>
As we may process cloned Node, and such Node has no CompilationUnit, we need to transport the SymbolSolver manually.
Turns `if (s != null) {...}` into `Optional.ofNullable(s).ifPresent(...)` BEWARE This case of application should be restricted, as a simple null-check is often simpler than an `Optional.ofNullable`, especially if the `thenStmt` does not depends on the nullable variable.
Turns 'Object.equals(1, 5)` into `1 == 5`
Turns 'Object.hashCode(1)` into `Integer.hashCode(1)`
Make easier processing on code-tree
Turns `optional.map(name -> name)` into `optional`
Turns '!o.isEmpty()' into 'o.isPresent()'
This may return an Optional result, or a rejection flag.
Turns `o.ifPresent(s -> { String subString = s.substring(1); System.out.println(subString); });` into `o.map(s -> s.substring(1)).ifPresent(subString -> { System.out.println(subString); });`
Turns `o.ifPresent(s -> { String subString = s.substring(1); System.out.println(subString); });` into `o.map(s -> s.substring(1)).ifPresent(subString -> { System.out.println(subString); });`
This mutator will apply all IMutator fixing a PMD rules.
Turns `new Double(d)` into `Double.valueOf(d)`
Turns `!strings.stream().anyMatch(p)` into `strings.stream().noneMatch(p)`
Turns 'c.removeAll(c)' into 'c.clear()' in Collection
Turns 'SomeClassWithConstructor(){super(); someMethod();}` into `SomeClassWithConstructor(){someMethod();}`.
Deprecated.
Helps working with ResolvedType
This mutator will apply all IMutator considered safe (e.g.
This mutator will apply all IMutator considered not-trivial.
This mutator will apply all IMutator considered safe (e.g.
Turns `!(a == 2)` into `a != 2`
Turns `boolean b=false; if(X) b=true;` into `boolean b=X;` BEWARE: One may argue this is a relevant change only if the boolean is not written after its initialization, hence if the boolean can be turned into a `final` variable.
Deprecated.
This mutator will apply all IMutator fixing a Sonar rule.
This mutator will apply all IMutator fixing SpotBugs rules.
Turns 's.filter(p).findAny().isPresent()' into 's.anyMatch(predicate)'
Turns `s.flatMap(r -> r.stream().filter(c -> c.isEmpty()))` into `s.flatMap(r -> r.stream()).filter(c -> c.isEmpty())`
Turns `stream.forEach(value -> { value.forEach(user -> { System.out.println(user); }); });` into `stream.flatMap(value -> value.stream()).forEach(user -> { System.out.println(user); });`
Turns `stream.map(name -> name)` into `stream`
Helps building mutators around Stream
This mutator will apply all IMutator improving Stream usage.
Turns `strings.forEach(s -> { if (s.length() >= 1) { System.out.println(s); } into `strings.filter(s -> s.length() >= 1).forEach(s -> { System.out.println(s); });`
Deprecated.
Turns `intStream.forEach(j -> { int c = s.charAt(j); sb.append(c); });` into `intStream.map(j -> s.charAt(j)).forEach(c -> sb.append(c))`
Turns `new String("StringLiteral")` into `"StringLiteral"`
Turns 's.indexOf(subString) >= 0' into 'c.contains(subString)' in String
Turns `s.replaceAll("abc", "")` into `s.replace("abc", "")`
Turns `"someString".toString()` into `"someString"`
Turns 'myThread.run()` into `myThread.start()`
Turns `Integer i = Integer.valueOf(2)` into `Integer i = 2` Turns `String i = Integer.valueOf(2).toString()` into `Integer i = Integer.toString(2)`
This will remove unnecessary fully qualified type reference, typically because given type if imported.
Collects the ImportDeclaration associated to a Node into a List
Remove unnecessary imports by analyzing ImportDeclaration and used tokens in current `.java` file.
Turns '.stream((s) -> s.subString(0, 2))' into '.stream(s -> s.subString(0, 2))'
Turns 'public static final someMethod();' into 'someMethod();' in interfaces
Turns `int i = 0;;` into `int i = 0;`
This mutator includes all IMutator considered unsafe as the produced code may be invalid due to generics.
Migrate from 'm.size() == 0’ to ’m.isEmpty()'.
Deprecated.
Deprecated.
Turns 's.indexOf("s")’ into ’s.indexOf('s')'.
Turns `Charset.forName("UTF-8")` into `StandardCharsets.UTF_8`
Migrate from 'm.length() == 0’ to ’m.isEmpty()'.
Turns '"a\r\n" + "b\r\n"’ into ’"""aEOLbEOL"""'
Turns 'int i = 1234567’ into ’int i = 1_234_567'
Helps working with VariableDeclarationExpr