diffplug / diffplug/spotless

Spotless confuses real code with simulated code in unit tests

Aperta
#2,997 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Java
Stelle
5.6k
Fork
559
Merge medio
1g 14h
PR unite (30g)
43

Descrizione

We have a project focused on the application of best practices and code correction using OpenRewrite. We have created a class to implement a custom Recipe that controls and corrects the use of the wildcard "*" in import groupings according to our internally defined standards.
We have a series of unit tests that use the testing libraries provided by OpenRewrite, in which we create code scenarios using string blocks:

```
String before =
"""
import java.util.List;
import java.util.ArrayList;
import java.util.regex.Pattern;
import java.util.Objects;
import java.util.Set;
import java.util.Map;
""";

String after =
"""
import java.util.*;
import java.util.regex.Pattern;
""";

rewriteRun(java(before, after));
```

The problem is that when we run the check command for the Maven plugin com.diffplug.spotless:spotless-maven-plugin:3.8.0, Spotless detects these strings as if they were actual code, despite the use of triple quotes -> """ string code """.

`OrderImportsCustomTest.java:L83 toggle(import java.util.*;) Do not use wildcard imports (e.g. java.util.*) - replace with specific class imports (e.g. java.util.List) as 'spotlessApply' cannot auto-fix this`

We have verified that this behavior only occurs in versions 3.7.0 and above. Version 3.6.0 correctly ignores this simulated code.
We have had to apply a workaround using // spotless:off, but we would like to know if there is a permanent solution to this behavior, which we believe is a false positive.

Poject Stack:
- Java 25
- Openrewrite 8.72.0
- Spottles Maven Plugin 3.8.0

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia da OrderImportsCustomTest.java alla riga 83 e riproduci il report usando le versioni 3.6.0, 3.7.0 e 3.8.0 del Spotless Maven plugin. Traccia il motivo per cui il Java text block viene trattato come source code durante il comando check, quindi verifica che l’import simulato venga ignorato mentre i wildcard imports reali continuino a essere segnalati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
build-system
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
52/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.