diffplug / diffplug/spotless

shortenFullyQualifiedTypes does not shorten all the fully qualified types

Open
#3,039 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
5.6k
Forks
559
Avg merge
1d 13h
Merged PRs (30d)
34

Description

## Summary

`shortenFullyQualifiedTypes` shortens a fully-qualified reference into the simple name of a type declared in the same compilation unit. The result does not compile.

## Reproducer

`spotless-gradle-plugin` 8.10.1, with `shortenFullyQualifiedTypes` as one of the steps:

### Test example 1:
```java
import java.lang.management.BufferPoolMXBean;
import java.util.List;

public class ClassA
{
public void methodA()
{
final List pools = java.lang.management.ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
}
}
```
#### Actual behavior of example 1:
Type `java.lang.management.ManagementFactory` used in code is not shortened.

### Test example 2:
```java
public class classB {
final List connectionProps = List.of(new CustomTypeProperty().name("host")
.type(pkg.models.CustomTypeProperty.TypeEnum.STRING));
}
```
#### Actual behavior of example 2:
Type `pkg.models.CustomTypeProperty` used in code is not shortened.

## Expected behavior
All FQT should be shortened.

FYI @maxandersen

Contributor guide

Open the contributing guide

Research direction

Start with the `shortenFullyQualifiedTypes` step in the spotless-gradle-plugin and reproduce the two Java examples from the issue using version 8.10.1. Trace why fully qualified references such as `ManagementFactory` and `pkg.models.CustomTypeProperty.TypeEnum` remain unchanged, then verify that all fully qualified types are shortened and the resulting code compiles.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system, tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.