2013-03-08 12 views
9

W ramach regularnej analizy statycznej mojego programu, chciałbym sprawdzić, czy klasy najprawdopodobniej będą miały rozsądne metody toString(). Prawdopodobnie nie jest tak, że każda klasa je implementuje, ale może to, że żadna z istniejących klas konkretnych nie używa Object implementacji toString().Sprawdź, czy klasy Java implementują toString()

Czy istnieje zestaw narzędzi Lint, który sprawdza to? Te, których obecnie używam, to FindBugs i CheckStyle; Nie znalazłem oczywistego sposobu sprawdzenia przy użyciu którejkolwiek z tych metod. Patrzę również na dodanie PMD do mojego zestawu tekstylnego i będę również otwarty na coś z Sonaru. Więc wolałbym to zrobić za pomocą narzędzia już w mojej skrzyni narzędziowej, ale jeśli muszę dodać jeszcze jedno narzędzie, rozważę to.

+1

Chciałbym użyć CheckStyle i utworzyć niestandardową regułę. Brzmi jak dobra zasada - powinieneś wnieść ją do bazy kodu open source. – Bohemian

+3

Ah, więcej reguł! To jak klub ze striptizem. – irreputable

Odpowiedz

4

Można to zrobić za pomocą czeku 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> 

to nawet rozpoznaje zakomentowanych toString() metody jak nie obecny. Próbowałem go używając Checkstyle 5.6 i eclipse-cs, ale powinien również działać we wcześniejszych wersjach.

+0

To jest bardzo blisko, dzięki. Nie obejmuje przypadku, w którym klasa dziedziczy doskonale obsługiwane 'toString()' (np. Z 'AbstractList'), ale może być tym, czego potrzebuję. –

Powiązane problemy