2013-03-08 19 views
9

Come parte della normale analisi statica del mio programma, vorrei verificare che le classi abbiano probabilmente metodi ponderati toString(). Probabilmente non tutte le classi li implementano, ma forse nessuna classe concreta e istantanea utilizza l'implementazione di toString() .Verificare che le classi Java implementino toString()

Esiste un kit di strumenti per la pulizia dei lint che consente di verificarlo? Quelli che attualmente utilizzo sono FindBugs e CheckStyle; Non ho trovato un modo ovvio per controllare utilizzando uno di questi. Sto anche cercando di aggiungere PMD alla mia suite di lan e sarei aperto a qualcosa anche in Sonar. Quindi preferirei farlo usando uno strumento già nella mia cassetta degli attrezzi, ma se dovessi aggiungere ancora un altro strumento lo prenderò in considerazione.

+1

Vorrei utilizzare CheckStyle e creare una regola personalizzata. Sembra una buona regola: dovresti contribuire al codice sorgente open source. – Bohemian

+3

Ah, più regole! È come uno strip club. – irreputable

risposta

4

È possibile eseguire questa operazione utilizzando il controllo Checkstyle Regexp:

<module name="Regexp"> 
    <property name="format" value="public\s+String\s+toString\s*()"/> 
    <property name="message" value="All classes must implement toString()"/> 
    <property name="ignoreComments" value="true"/> 
</module> 

questo ancora riconosce commentati-out toString() metodi come non presente. L'ho provato usando Checkstyle 5.6 ed eclipse-cs, ma dovrebbe funzionare anche con le versioni precedenti.

+0

Questo è abbastanza vicino, grazie. Non copre il caso in cui una classe eredita un 'toString()' perfettamente funzionale (ad esempio da 'AbstractList'), ma potrebbe essere proprio quello di cui ho bisogno. –

Problemi correlati