feat(spotless/gradle-plugin): Allow `SpotlessApply` to notify when/what work was done
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Ambito
- build-system
Direzione di ricerca
Inizia con il task Gradle SpotlessApply e il relativo comportamento didWork, quindi esamina come vengono tracciati i file copiati durante l'esecuzione. Il lavoro è completato quando il task espone o segnala quali file sono stati modificati solo quando è stato eseguito del lavoro, con il comportamento verificato dai test pertinenti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hello Spotless team! We're very thankful for your work on this tool. Seeking review on a proposed feature that we are happy to help incorporate into the project if it sounds like a desirable enhancement.
TL;DR:
We'd like to expose information on which files were auto-fixed by SpotlessApply to propagate that information to our developer experience
Problem Statement
Our current team's workflow is as such for running Spotless:
- On CI, our invocation of
gradle buildrunsspotlessCheck, as is configured by default. All failures are reported by CI and require manual updates - In local use cases,
gradle buildwill instead runspotlessApplyto automatically fix issues. This is biased toward improving the UX during local development
In this case, the developer experience is enhanced by the automatic fixing, however it is less clear when spotlessApply is run on the user's behalf.
It would be preferable to do something more targeted. In this case, we'd prefer to have SpotlessApply (or a finalizer task) only print information in the event that Spotless performed work.
[!NOTE]
In an ideal world, we'd also be able to show the violations that were fixed during the auto-fix phase, such that we could demonstrate to developers "there were X and Y issues, and we've auto-fixed them". This may be out of scope of this more immediate enhancement, but may be interesting to provide.
(Potential) Design
Enhance the SpotlessApply task to output a simple report containing a manifest of all files it copied in on the most recent execution. This output location can be exposed by the task for the specific gradle build, read, and used to provide a more detailed listing of the edited files.
Note: Theoretical Workaround
We've attempted what we thought would be a suitable workaround for the time being:
// build.gradle.kts (or in convention plugin)
tasks.withType<SpotlessApply>() {
doLast {
if(didWork) {
logger.lifecycle("code auto-formatted by spotlessApply")
}
}
}
Unfortunately, even for cases where there are no changes to any of the source files, the SpotlessApply task is still labeled as didWork == true. If we should file this separately as a "bug", please let us know!
- Lingua principale
- Java
- Stelle
- 5.7k
- Fork
- 560
- Merge medio
- 1g 13h
- PR unite (30g)
- 43
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di diffplug/spotless
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 66/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
Tutte le issue di diffplug/spotless
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
infinispan/infinispan#18150 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
opensearch-project/k-NN#3597 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100