Я обратился бы к руководству по проектированию .NET на этом: http://msdn.microsoft.com/en-us/library/ms229013.aspx
существует много причин использовать интерфейсы, но я также нахожу, что они часто злоупотребляются по неправильным причинам. Интерфейсы обеспечивают намного больше гибкости при работе с типами значения и невероятно полезны при работе с наборами, и т.д., но при разработке иерархии классов для моих собственных проектов, я всегда пытаюсь думать о простоте сначала, и интерфейсы часто приводят к (излишне) более сложным ситуациям.
Мое эмпирическое правило состоит в том, чтобы реализовать каждый интерфейс BCL, который имеет смысл, и только добавьте мои собственные интерфейсы в мои проекты, когда это на самом деле обеспечивает что-то очень ценное. Вместо того, чтобы иметь IWidgetManager, IWidgetManager2, и т.д. У меня очень был бы абстрактный класс WidgetManager и методами бетона реализации по мере необходимости.
О цели findbugs: check в документации написано:
Сбой сборки, если в исходном коде были какие-либо нарушения FindBugs. Отчет XML по умолчанию помещается в целевой каталог с ошибками. Дополнительную документацию по параметрам FindBugs см. В Руководстве по FindBugs.
Так что это именно та цель, которую вы ищете.
<build>
<plugins>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
...
</configuration>
</plugins>
</build>