diffplug / diffplug/spotless

Spotless confuses real code with simulated code in unit tests

Ouverte
#2,997 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Java
Étoiles
5.7k
Forks
561
Merge moyen
1 j 14 h
PR mergées (30 j)
43

Description

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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par OrderImportsCustomTest.java à la ligne 83 et reproduisez le rapport avec les versions 3.6.0, 3.7.0 et 3.8.0 du Spotless Maven plugin. Suivez pourquoi le Java text block est traité comme du source code pendant la commande check, puis vérifiez que l’import simulé est ignoré tandis que les wildcard imports réels sont toujours signalés.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
build-system
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
52/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.