2011-10-13 16 views
5

Ecco il frammento di codice:Eclipse: contraddicendo avvertimenti

class MyClass { 
    private native void foo(); 
} 

Per quanto sopra, Eclipse (vale a dire, 3.7.0) dà un avvertimento

Il metodo foo() dal tipo MyClass è mai usato localmente

Va bene, ma quando provo ad eliminare l'avviso:

class MyClass { 
    @SuppressWarnings("unused") 
    private native void foo(); 
} 

Si lamenta

@SuppressWarnings unnecesary ("non utilizzato")

Quindi, c'è un modo per farlo smettere di lamentarsi?

Aggiornamento

Ci scusiamo per l'informazione incompleta - questo avviso viene visualizzato solo in un progetto AspectJ. Una volta creato un semplice progetto Java e inserito la mia classe, tutto funziona correttamente.

Per quanto ho capito, AspectJ utilizza il proprio compilatore, quindi questo avviso deve essere generato da esso. Sto utilizzando strumenti di sviluppo AspectJ plug-in:

Version: 2.1.3.e37x-20110628-1900 
AspectJ version: 1.6.12.20110613132200 
+0

Divertente, non ho il secondo avviso (in Eclipse 3.5) – Shlublu

+0

... e non vedo il primo avviso - "Il metodo foo() dal tipo MyClass non viene mai utilizzato localmente". Strano! –

+0

puoi provare 'Progetto> Pulisci' e quindi fare una ricostruzione. Forse il primo avvertimento è un pennarello stagnante .. –

risposta

1

All'interno di un progetto Java, questo produce nessun avviso:

class MyClass { 
    private native void foo(); 
} 

Questo, tuttavia, produce un Unnecessary @SuppressWarnings("unused") avvertimento:

012.

All'interno di un progetto AspectJ, il primo esempio produce un avviso The method foo() from the type MyClass is never used locally e il secondo esempio produce lo stesso avviso di un progetto Java. Questo è probabilmente un bug di AspectJ. Suggerirei di sollevare un problema sul bugzilla di AspectJ.

https://bugs.eclipse.org/bugs/

Il compilatore AspectJ è una forcella del compilatore JDT da Eclipse 3.3. Quindi, è probabile che questo bug fosse originariamente in Eclipse 3.3. Ora che Java 7 è disponibile, AspectJ migrerà probabilmente a Eclipse 3.7 o 3.8 e raccoglierà la correzione dal compilatore JDT. Ma vale comunque la pena sollevare un insetto.

+0

Sì, sembra un bug Eclipse/AspectJ, quindi ho archiviato un problema: https://bugs.eclipse.org/bugs/show_bug.cgi?id=213755. – Andy

0

Ho appena provato e non ho ricevuto il "superfluo ..." warning. Sei sicuro che l'avvertimento sia stato emesso dal compilatore java e non da qualche altro strumento come checkstyle o findbugs?

In ogni caso, ci sono alcune situazioni in cui un metodo privato non utilizzato ha senso.

+0

Sfortunatamente, è davvero un caso in cui non c'è modo di evitare di dichiarare metodi privati ​​non utilizzati. – Andy

0

Funziona per me. Sto gestendo Eclipse Indigo come te.

2

L'elenco di @SuppressWarnings è specifico del compilatore. In Eclipse,

inutilizzato è macro per unusedArgument, unusedImport, unusedLabel, unusedLocal, unusedPrivate e unusedThrown

La lista completa è qui: the list of valid @SuppressWarnings supported in Eclipse

+0

Per essere più precisi, @SuppressWarnings non è specifico di Eclipse. Tuttavia, l'elenco di avvertimenti soppresso da quell'annotazione è specifico del compilatore. –

Problemi correlati