Лично я использую PMD и Findbugs:
Есть много совпадений между этими двумя,но вы можете настраивать пользовательские наборы правил и правила для них обоих, а также можете кодировать свои собственные правила, если хотите.
К сожалению, что любые инструменты статического анализа могут сделать в отношении обнаружения потенциальных проблем с исключительными состояниями, так этонесколько ограничен.Тем не менее, оба эти инструмента указали на проблемы в коде, над которым я работал, который мог бы потратить много времени на отладку, если бы клиент обнаружил проблему после того, как мы выпустили.
[ПРАВИТЬ] Вохватить динамическую часть кода, использовать EclEmma и юнит-тесты.EclEmma использует Emma внутри, что можно использовать и без Eclipse.