diffplug / diffplug/spotless

Gradle spotlessCheck task gets stuck if java text blocks are used

Open
#1,655 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
5.6k
Forks
559
Avg merge
1d 14h
Merged PRs (30d)
43

Description

**summary of problem**
When java text blocks (multi line strings) are used in the code and when indentWithTabs(2) and indentWithSpaces(4) both the rules are included then the gradle task gets stuck

**gradle or maven version**
gradle: 7.6.1

**spotless version**
6.17.0

operating system and version
MacOS Ventura 13.1

**spotless config**
```
spotless {
format 'misc', {
target '*.gradle', '*.md', '.gitignore'

trimTrailingWhitespace()
indentWithTabs() // or spaces. Takes an integer argument if you don't like 4
endWithNewline()
}
java {
googleJavaFormat()
indentWithTabs(2)
indentWithSpaces(4)
formatAnnotations()
removeUnusedImports()
trimTrailingWhitespace()
}
}
```

test repo: https://github.com/sujeet100/spotless-bug

output of ./gradlew spotlessCheck --debug
`2023-04-05T11:38:16.945+0530 [DEBUG] [org.gradle.api.internal.tasks.execution.TaskExecution] Executing actions for task ':spotlessJava'.
2023-04-05T11:38:16.946+0530 [INFO] [org.gradle.api.Task] Not incremental: removing prior outputs
2023-04-05T11:38:16.946+0530 [DEBUG] [org.gradle.internal.file.impl.DefaultDeleter] Deleting /Users/sujit/projects/personal/spotless-bug/build/spotless/spotlessJava
2023-04-05T11:38:16.947+0530 [DEBUG] [org.gradle.api.Task] Applying format to /Users/sujit/projects/personal/spotless-bug/src/main/java/com/example/spotlessbug/SpotlessBugApplication.java and writing to /Users/sujit/projects/personal/spotless-bug/build/spotless/spotlessJava/src/main/java/com/example/spotlessbug/SpotlessBugApplication.java
2023-04-05T11:38:16.959+0530 [DEBUG] [org.gradle.api.Task] Applying format to /Users/sujit/projects/personal/spotless-bug/src/main/java/com/example/spotlessbug/Test.java and writing to /Users/sujit/projects/personal/spotless-bug/build/spotless/spotlessJava/src/main/java/com/example/spotlessbug/Test.java
2023-04-05T11:38:24.386+0530 [LIFECYCLE] [org.gradle.cache.internal.DefaultFileLockManager]
2023-04-05T11:38:24.386+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2023-04-05T11:38:24.386+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2023-04-05T11:38:24.387+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
2023-04-05T11:38:24.387+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2023-04-05T11:38:24.387+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2023-04-05T11:38:24.387+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
2023-04-05T11:38:34.386+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2023-04-05T11:38:34.386+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2023-04-05T11:38:34.386+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
2023-04-05T11:38:34.386+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2023-04-05T11:38:34.387+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2023-04-05T11:38:34.387+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
2023-04-05T11:38:44.386+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2023-04-05T11:38:44.387+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2023-04-05T11:38:44.387+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
2023-04-05T11:38:44.388+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2023-04-05T11:38:44.388+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2023-04-05T11:38:44.388+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
2023-04-05T11:38:46.920+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Daemon worker: acquired lock on worker lease
2023-04-05T11:38:46.921+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Daemon worker: released lock on worker lease
2023-04-05T11:38:46.921+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker: acquired lock on worker lease
2023-04-05T11:38:46.921+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker: released lock on worker lease
2023-04-05T11:38:46.921+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 10: acquired lock on worker lease
2023-04-05T11:38:46.921+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 10: released lock on worker lease
2023-04-05T11:38:46.921+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 9: acquired lock on worker lease
2023-04-05T11:38:46.922+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 9: released lock on worker lease
2023-04-05T11:38:46.922+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 8: acquired lock on worker lease
2023-04-05T11:38:46.922+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 8: released lock on worker lease
2023-04-05T11:38:46.922+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 7: acquired lock on worker lease
2023-04-05T11:38:46.922+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 7: released lock on worker lease
2023-04-05T11:38:46.922+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 4: acquired lock on worker lease
2023-04-05T11:38:46.922+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 4: released lock on worker lease
2023-04-05T11:38:46.922+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 6: acquired lock on worker lease
2023-04-05T11:38:46.922+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 6: released lock on worker lease
2023-04-05T11:38:46.922+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 5: acquired lock on worker lease
2023-04-05T11:38:46.922+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 5: released lock on worker lease
2023-04-05T11:38:46.923+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 3: acquired lock on worker lease
2023-04-05T11:38:46.923+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 3: released lock on worker lease
2023-04-05T11:38:46.923+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 2: acquired lock on worker lease
2023-04-05T11:38:46.923+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 2: released lock on worker lease
2023-04-05T11:38:46.923+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 11: acquired lock on worker lease
2023-04-05T11:38:46.923+0530 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker Thread 11: released lock on worker lease
2023-04-05T11:38:54.386+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2023-04-05T11:38:54.386+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2023-04-05T11:38:54.386+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
2023-04-05T11:38:54.387+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2023-04-05T11:38:54.387+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2023-04-05T11:38:54.387+0530 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
<==-----------> 16% EXECUTING [42s]
> :spotlessJava

`
The gradle task gets stuck

Contributor guide

Open the contributing guide

Research direction

Start with the linked test repository and run ./gradlew spotlessCheck using the reported Gradle and Spotless versions. Reproduce the hang with Java text blocks and both indentWithTabs(2) and indentWithSpaces(4), then trace the Spotless Java formatting path involved. Done means the command completes and the regression is covered by a reproducible test.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.