2009-03-11 3 views
1

Ich habe zum Beispiel einer if-Klausel, die immer falsch ist (nicht, dass die Variable FINAL sind) z.B .:Kann Eclipse nicht erreichbaren Code hervorheben?

public static final boolean FOO = false; 
if (FOO) { 
    doSomething(); 
} 

Ich will es in Eclipse grau dargestellt zum Beispiel sein. Im Grunde möchte ich, dass dies genau so funktioniert, wie Visual C++ dies für Makros tut, die unerreichbar sind.

Update: Ich möchte, dass es in Echtzeit angezeigt wird, genauso wie Eclipse Java kompiliert, wenn Sie Änderungen am Code vornehmen. Das sollte möglich sein, oder? Ich weiß, dass es diese toten Code-Tools gibt, um das später zu tun, aber das ist nicht das, was ich gerne mache.

Antwort

1

Zuerst sollten Sie sich bewusst sein, dass dies kurz davor ist, nicht berechenbar zu sein. Schauen Sie sich die halting problem an, wenn Sie mit diesem Thema nicht vertraut sind.

Zweitens gibt es Plug-Ins, die bei der Identifizierung von toten Code bis zu einer bestimmten berechenbaren Grenze, wie PMD helfen.

+0

Wie kann es Unberechenbar sein, wenn Visual C++ weiß, wie das mit Makros funktioniert? Du solltest sehen, dass ich von endgültigen Variablen spreche, die Laufzeit nicht geändert werden können. –

+0

Ihr Beispiel ist in der Tat berechenbar, und ich glaube, PMD kann diese Art von Codeblock identifizieren. Ich habe nur an die Berechnungsbeschränkungen dieser Funktion erinnert. –

+0

Jeder einfache Ausdruck, der vollständig auf Konstanten basiert, die sich nie ändern, nicht vor, während oder nach der Kompilierung, wird leicht bestimmt, entweder immer den 'wahren' Zweig oder den 'falschen' Zweig nach dem Kompilieren des Codes auszuführen. Natürlich liegt darin das Problem. – Arafangion

3

Die nächste Version von Eclipse (3.5) wird diese Funktionalität.

Aktuelle Zeit von 3,5 Meilenstein 4 bezugsfertig ist, wie in der

Eclipse 3.5 M4 - New and Noteworthy aufgeführt Sie können es jetzt von den neuesten Meilenstein mit (3.5M5)

Download von der eclipse downloads page

+1

Nicht ganz richtig. Zitieren Ihres Links: "Beachten Sie, dass ein toter Code, der auf eine if-Anweisung (konstante Variable) folgt, z. B. if (DEBUG), nicht gemeldet wird." –

+0

Ja, und genau das will ich. final DEBUG boolean ist ein sehr guter Anwendungsfall. –

Verwandte Themen