2013-03-08 4 views
9

Являясь частью обычного статического анализа моей программы, я хотел бы проверить, что классы, вероятно, будут иметь здравые методы toString(). Вероятно, не то, что каждый класс реализует их, но, возможно, что ни один конкретный конкретный класс не использует реализацию ObjecttoString().Убедитесь, что классы Java реализуют toString()

Есть ли набор инструментов для линтов, который проверяет это? В настоящее время я использую FindBugs и CheckStyle; Я не нашел очевидного способа проверить, используя любой из них. Я также смотрю на добавление PMD к моему набору из линта и также будет открыт для чего-то в Sonar. Поэтому я бы предпочел сделать это, используя инструмент уже в моем сундуке для инструментов, но если мне нужно добавить еще один инструмент, я это рассмотрю.

+1

Я бы использовал CheckStyle и создал собственное правило. Похоже на правильное правило - вы должны внести свой вклад в базу с открытым исходным кодом. – Bohemian

+3

А, больше правил! Это как стриптиз-клуб. – irreputable

ответ

4

Вы можете сделать это с помощью проверки 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> 

это, даже признает закомментированный toString() методы, как нет. Я попробовал его с помощью Checkstyle 5.6 и eclipse-cs, но он также должен работать с более ранними версиями.

+0

Это довольно близко, спасибо. Он не охватывает случай, когда класс наследует отлично обслуживаемый 'toString()' (например, от 'AbstractList'), но это может быть то, что мне нужно. –

Смежные вопросы