diffplug / diffplug/spotless

gradle: excluding spotlessJava should also exclude spotlessApply

Offen
#2,097 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Java
Sterne
5.6k
Forks
559
Ø Merge
1 T. 14 Std.
Gemergte PRs (30 T.)
43

Beschreibung

When running `gradle compileJava -xspotlessJava`, `spotlessApply` will still run. Since `spotlessApply` copies files from build/spotless/spotlessJava to the source tree, this can overwrite unsaved work in progress, making teams **lose valuable work** due to a simple misunderstanding. Since this is a silent overwrite, team might also not notice that changes have been made, allowing **bugs to enter the codebase**.

`spotlessApply` should only ever run when the files it copies were created as part of the same build, to ensure no work is lost.

This happened on a company project, so I cannot quickly produce a public repo, but I could if need be. The steps to reproduce would be (in a java project using the spotless plugin...):

```
git clone ...
cd ...
// assuming this will have some file that can be formatted
./gradlew compileJava
git reset --hard
git checkout other_branch
// assuming some file from earlier branch is different here

./gradlew compileJava -xspotlessJava
git diff
```

The last git diff should not have any changes. However, currently for me this overwrites the source file with the spotless output from the ./gradlew compileJava task.

Using gradle8, java17, spotless 6.25.0 on MacOs.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, die gemeldete Sequenz in einem Java-Projekt mit Gradle, Java 17 und Spotless 6.25.0 zu reproduzieren, insbesondere `./gradlew compileJava -xspotlessJava` gefolgt von `git diff`. Untersuche, wie `spotlessJava` und `spotlessApply` miteinander verbunden sind; als abgeschlossen gilt die Aufgabe, wenn das Ausschließen von `spotlessJava` den Quellbaum unverändert lässt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
build-system
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.