2013-03-13 1 views
6

Мы пытаемся перенести нашу очень большую базу кода с Guava 11 на Guava 14 и хотели бы поймать использование удаленных или устаревших API. Может ли FindBugs выполнить такую ​​проверку? Если да, то как?Может ли FindBugs использоваться для обозначения кода, который использует метод, который был включен в черный список?

ответ

4

Одним из решений было бы просто использовать компилятор Java Oracle javac для этого.

Удаленные методы в API приведут к ошибкам компилятора, если они используются, поэтому их можно найти путем компиляции кода.

Устаревшие методы могут быть найдены с использованием опции javac -deprecation. Подробнее на -deprecation здесь: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/javac.html

+0

Наша кодовая база представляет собой обширный лес модулей с (в настоящее время) неизвестными зависимостями и различными способами построения самих себя. Если бы Guava 14 был выброшен, многие сборки будут разбиты (возможно, с ошибками времени выполнения) и не могут быть исправлены до тех пор, пока их зависимости не будут исправлены. –

+0

Так в чем проблема? Теперь вы знаете, какие зависимости нужно исправлять. –

+0

Я не уверен, что понимаю проблему. Вам не нужно «проходить через Гуаву 14». Просто сделайте компиляцию локально, прежде чем совершать что-либо. – uldall

1

Вы также можете использовать PMD Sourceforge для выполнения этой задачи. Существуют правила, позволяющие находить устаревшие методы

1

Один аспект, который, я считаю, не будет охватывать, если вы не можете изменить сторонний код, чтобы добавить @Deprecated аннотации. Если вы просто хотите, чтобы избежать метод, который не был помечен как устаревший, вы можете использовать этот плагин, который я написал для FindBugs:

https://github.com/Grundlefleck/FindBugs4Deprecating3rdParty

Там очень мало документации, поэтому вам может понадобиться, чтобы исследовать немного самостоятельно. Это позволяет избегать настроек и классов в файле свойств. Я использую его для отмены org.junit.Assert.assertThat.