Intellij Plugin breaks method inlining and variable extraction from inside if condition
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- java
- Bereich
- developer-experience, tooling
Rechercherichtung
Beginne mit der Java-Reproduktion im Issue und untersuche die Wechselwirkung der Formatierung des IntelliJ-Plugins mit dem Inlining von Methoden und der Extraktion von Variablen innerhalb einer if-Bedingung. Reproduziere die Transformation bei aktiviertem Plugin und vergleiche sie mit dem Ergebnis bei deaktiviertem Plugin; abgeschlossen ist die Aufgabe, wenn das Refactoring kein unnötiges if (true) mehr einfügt, keinen Fehler meldet und die Formatierung nicht mehr beschädigt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Consider the following code and try inlining isEmpty2:
import java.util.Collection;
import java.util.List;
public class InliningWithJavaFormat {
static boolean isEmpty(Collection<?> c) {
return c == null || c.isEmpty();
}
static boolean isEmpty2(Collection<?> c) {
return isEmpty(c);
}
public static void main(String[] args){
var pojo = new MyPojo();
if (pojo != null && !isEmpty2(pojo.getCollection())) {
System.out.println("empty");
}
}
static class MyPojo {
Collection<String> getCollection() {
return List.of();
}
}
}
Not only does it fail (without reporting it), but it adds an additional if (true):
public static void main(String[] args){
var pojo = new MyPojo();
if (pojo != null && !isEmpty2(pojo.getCollection())) {
if (true) {
System.out.println("empty");
}
}
}
with the plugin disabled, it works:
public static void main(String[] args){
var pojo = new MyPojo();
if (pojo != null) {
Collection<?> c = pojo.getCollection();
if (!isEmpty(c)) {
System.out.println("empty");
}
}
}
(not the ideal result but at least it does not fail)
In addition, when I do that on my actual project I get an error notification from the plugin and the formatting gets broken:
(I did not try to reproduce this with an MRE, I guess it is a side effect of the first issue)
- Vorherrschende Sprache
- Java
- Sterne
- 6.2k
- Forks
- 936
- Ø Merge
- 6 Min.
- Gemergte PRs (30 T.)
- 3
Entwicklungsumgebung
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus google/google-java-format
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
google/google-java-format#1094 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Complementary TeamupsOffen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 15/100
google/google-java-format#1450 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
google/google-java-format#1439 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 62/100
google/google-java-format#1436 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 48/100
google/google-java-format#1428 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in google/google-java-format
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
openhab/openhab-core#5847 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
apache/parquet-java#3820 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
beehive-lab/jllm#187 ·