diffplug / diffplug/spotless

faster -PspotlessIdeHook with configure-on-demand

Abierto
#1,101 0 comentarios 1 reacción 0 asignados Ver en GitHub
enhancement
Lenguaje dominante
Java
Estrellas
5.6k
Forks
559
Merge medio
1 d 14 h
PR fusionados (30 d)
43

Descripción

Right now, the IDE hook works like this

```
spotlessApply -PspotlessIdeHook=${ABSOLUTE_PATH_TO_FILE}
```

But for large multiproject projects we could make it significantly faster with (note the leading colon)

```
:spotlessApply -PspotlessIdeHook=${ABSOLUTE_PATH_TO_FILE} --configure-on-demand
```

but only if we modified this code https://github.com/diffplug/spotless/blob/48723eb15b3e6b0ada0841bd78e4dd271af9507f/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessExtensionImpl.java#L54-L56

by adding something like:

```java
if (project == rootProject) {
String ideHookPath = (String) project.property(IdeHook.PROPERTY);
project.gradle.settingsEvaluated { settings ->
// the code below works only for root with children, needs to also handle children with children
ProjectDescriptor owningProject = null;
ProjectDescriptor rootDescriptor = settings.rootProject
for (ProjectDescriptor child : rootDescriptor.children) {
if (ideHookPath.startsWith(child.projectDir.absolutePath)) {
owningProject = child;
}
}
if (owningProject != null) {
project.evaluationDependsOn(owningProject.path)
}
}
}
```

In this way we can avoid evaluating all the `spotlessApply` tasks and instead only evaluate the root project and, if necessary, the project which contains the file in question.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Empieza en plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessExtensionImpl.java, en las líneas referenciadas, y después revisa cómo la evaluación de la configuración de Gradle y los descriptores de proyecto representan los proyectos secundarios anidados. Compara la invocación actual de spotlessApply -PspotlessIdeHook con la forma propuesta con dos puntos inicial y --configure-on-demand. Se considera terminado cuando el hook del IDE evalúa únicamente el proyecto raíz y el proyecto al que pertenece el archivo objetivo, incluidos los proyectos anidados.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
build-system
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.