Skip to content

Commit 69a5684

Browse files
committed
Remove wildcard imports
1 parent 2cc8c04 commit 69a5684

File tree

12 files changed

+88
-0
lines changed

12 files changed

+88
-0
lines changed

CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ This document is intended for Spotless developers.
1010
We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `1.27.0`).
1111

1212
## [Unreleased]
13+
* Added support for removing wildcard imports via `removeWildcardImports` step. ([#649](https://github.com/diffplug/spotless/issues/649))
1314

1415
## [3.1.2] - 2025-05-27
1516
### Fixed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.diffplug.spotless.java;
2+
3+
import com.diffplug.spotless.FormatterStep;
4+
import com.diffplug.spotless.generic.ReplaceRegexStep;
5+
6+
/** Removes any wildcard import statements. */
7+
public final class RemoveWildcardImportsStep {
8+
private RemoveWildcardImportsStep() {}
9+
10+
public static FormatterStep create() {
11+
// matches lines like 'import foo.*;' or 'import static foo.*;'
12+
return ReplaceRegexStep.create(
13+
"removeWildcardImports",
14+
"(?m)^import\\s+(?:static\\s+)?[^;\\n]*\\*;\\R?",
15+
"");
16+
}
17+
}

plugin-gradle/CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `3.27.0`).
44

55
## [Unreleased]
6+
* Added `removeWildcardImports()` step for Java, removing wildcard import statements. ([#649](https://github.com/diffplug/spotless/issues/649))
67

78
## [7.0.4] - 2025-05-27
89
### Fixed

plugin-gradle/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ spotless {
188188
importOrderFile('eclipse-import-order.txt') // import order file as exported from eclipse
189189
190190
removeUnusedImports()
191+
removeWildcardImports()
191192
192193
// Cleanthat will refactor your code, but it may break your style: apply it before your formatter
193194
cleanthat() // has its own section below
@@ -227,6 +228,16 @@ spotless {
227228
removeUnusedImports('cleanthat-javaparser-unnecessaryimport')
228229
```
229230
231+
### removeWildcardImports
232+
233+
```
234+
spotless {
235+
java {
236+
removeWildcardImports()
237+
}
238+
}
239+
```
240+
230241
### google-java-format
231242
232243
[homepage](https://github.com/google/google-java-format). [changelog](https://github.com/google/google-java-format/releases).

plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import com.diffplug.spotless.java.GoogleJavaFormatStep;
4141
import com.diffplug.spotless.java.ImportOrderStep;
4242
import com.diffplug.spotless.java.PalantirJavaFormatStep;
43+
import com.diffplug.spotless.java.RemoveWildcardImportsStep;
4344
import com.diffplug.spotless.java.RemoveUnusedImportsStep;
4445

4546
public class JavaExtension extends FormatExtension implements HasBuiltinDelimiterForLicense, JvmLang {
@@ -151,6 +152,10 @@ public void removeUnusedImports(String formatter) {
151152
addStep(RemoveUnusedImportsStep.create(formatter, provisioner()));
152153
}
153154

155+
public void removeWildcardImports() {
156+
addStep(RemoveWildcardImportsStep.create());
157+
}
158+
154159
/** Uses the <a href="https://github.com/google/google-java-format">google-java-format</a> jar to format source code. */
155160
public GoogleJavaFormatConfig googleJavaFormat() {
156161
return googleJavaFormat(GoogleJavaFormatStep.defaultVersion());

plugin-maven/CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `1.27.0`).
44

55
## [Unreleased]
6+
* Added `<removeWildcardImports />` step for Java, removing wildcard import statements. ([#649](https://github.com/diffplug/spotless/issues/649))
67

78
## [2.44.5] - 2025-05-27
89
### Changed

plugin-maven/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ any other maven phase (i.e. compile) then it can be configured as below;
210210
</importOrder>
211211

212212
<removeUnusedImports /> <!-- self-explanatory -->
213+
<removeWildcardImports /> <!-- drop any import ending with '*' -->
213214

214215
<formatAnnotations /> <!-- fixes formatting of type annotations, see below -->
215216

@@ -228,6 +229,12 @@ any other maven phase (i.e. compile) then it can be configured as below;
228229
</removeUnusedImports>
229230
```
230231

232+
### removeWildcardImports
233+
234+
```xml
235+
<removeWildcardImports/>
236+
```
237+
231238
### google-java-format
232239

233240
[homepage](https://github.com/google/google-java-format). [changelog](https://github.com/google/google-java-format/releases). [code](https://github.com/diffplug/spotless/blob/main/plugin-maven/src/main/java/com/diffplug/spotless/maven/java/GoogleJavaFormat.java).

plugin-maven/src/main/java/com/diffplug/spotless/maven/java/Java.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ public void addRemoveUnusedImports(RemoveUnusedImports removeUnusedImports) {
7676
addStepFactory(removeUnusedImports);
7777
}
7878

79+
public void addRemoveWildcardImports(RemoveWildcardImports removeWildcardImports) {
80+
addStepFactory(removeWildcardImports);
81+
}
82+
7983
public void addFormatAnnotations(FormatAnnotations formatAnnotations) {
8084
addStepFactory(formatAnnotations);
8185
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.diffplug.spotless.maven.java;
2+
3+
import com.diffplug.spotless.FormatterStep;
4+
import com.diffplug.spotless.java.RemoveWildcardImportsStep;
5+
import com.diffplug.spotless.maven.FormatterStepConfig;
6+
import com.diffplug.spotless.maven.FormatterStepFactory;
7+
8+
public class RemoveWildcardImports implements FormatterStepFactory {
9+
@Override
10+
public FormatterStep newFormatterStep(FormatterStepConfig config) {
11+
return RemoveWildcardImportsStep.create();
12+
}
13+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.diffplug.spotless.maven.java;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import com.diffplug.spotless.maven.MavenIntegrationHarness;
6+
7+
class RemoveWildcardImportsStepTest extends MavenIntegrationHarness {
8+
9+
@Test
10+
void testRemoveWildcardImports() throws Exception {
11+
writePomWithJavaSteps("<removeWildcardImports/>");
12+
13+
String path = "src/main/java/test.java";
14+
setFile(path).toResource("java/removewildcardimports/JavaCodeWildcardsUnformatted.test");
15+
mavenRunner().withArguments("spotless:apply").runNoError();
16+
assertFile(path).sameAsResource("java/removewildcardimports/JavaCodeWildcardsFormatted.test");
17+
}
18+
}

0 commit comments

Comments
 (0)