Какие инструменты существуют для аудита изменений в интерфейсах Java?

Кто-нибудь знает какие-либо инструменты, которые могут суммировать изменения в интерфейсах Java между различными версиями? (По интерфейсу я имею в виду открытую функциональность типов в целом, а не конкретную конструкцию языка.)

Что бы я хотел, это какая-то программа, которая принимает две версии одного и того же пакета или дерева пакетов и выводит что-то вроде:

  • Конструктор (String, int) удален в классе Thing
  • Конструктор (String), устаревший по классу OtherThing
  • Метод void setId (String) добавлен в класс SomethingElse

или что-то более сложное, выше всего лишь мои первоначальные мысли. Решение может работать на байт-код или на источник, я не против.

Ответ 1

Clirr - это инструмент, который проверяет библиотеки Java на двоичную и исходную совместимость со старыми версиями.

Apache Commons использует его, он создает отчеты вроде этого (для Commons Lang).

Ответ 2

Посмотрите japitools. Эти инструменты используются проектом GNU Classpath для сравнения их API для совместимости подписи с различными версиями библиотек классов Sun Java.

Ответ 3

Вы можете реализовать свой собственный инструмент, используя отражение, особенно если вы хотите изучить различные изменения вашего кода. Он также работает с байт-кодом.

Ответ 4

Я использовал JDiff doclet в прошлом для этого. В зависимости от того, что вы делаете, это может быть болью для настройки, но я думаю, что задача Ant работает достаточно хорошо.