2011-10-21 3 views
3

Мне нужно удалить некоторые методы в большом проекте Java, и мне было интересно, есть ли инструменты, которые помогли бы мне это сделать. Я бы в основном указал подпись и исходную папку, в которой все методы сопоставления будут удалены.Как автоматически удалить методы в java-коде

Это не такая вещь существует, тогда я напишу сценарий.

+0

Как вы ожидаете, что ваш скрипт не сломает весь код, который он меняет? Можно было бы предположить, что код, вызывающий этот метод, делает это по какой-либо причине или это просто метод побочного эффекта, который больше не нужен? –

+0

Использовались ли методы для переопределения метода, который вы удалили? – aioobe

+0

Дополнительная информация: мы хотели бы сделать некоторые очистки, удалив основные методы в пакетах, где они неприменимы. Они были написаны только для неофициального тестирования. – RaySF

ответ

-1

Я искал быстрых решений и не нашел, я использовал различные инструменты, чтобы получить там:

  1. Grep, чтобы найти все файлы, содержащие основные методы, которые я хотел удалить
  2. поиска/замены в этих файлах, чтобы сделать эти методы частных
  3. Eclipse, очистка только с одним правилом: удалить неиспользуемые частные методы

It сделал работу с незначительным побочным эффектом удаления других неиспользуемых частных методов. Это не имеет большого значения в контексте этого проекта, так как почти все файлы ранее были сохранены с помощью действия сохранения, удаляющего неиспользуемые частные методы.

Спасибо всем за вход, он может быть применим позже.

0

Вы говорите о "источник преобразования", и Google поворачивает вверх существование BeautyJ для Java:.

http://beautyj.berlios.de/

«BeautyJ может преобразовать исходный код Java в XML и обратно BeautyJ вводит формат XJava, в котором хранятся классы или интерфейсы и их члены вместе с связанным исходным кодом и комментариями Javadoc в одном файле XML. BeautyJ открывает широкий спектр возможностей для автоматической структурирования исходного кода Java либо его API Sourclet, либо путем преобразования источника Java кода в XML и допускать любые внешние преобразования (например, с помощью XSLT) ».

Не знаете, насколько ваш случай настолько прост, что сценарий будет лучше, чем проблема с обучением использованию такой программы. Хотя может быть целесообразно получить его в вашей toolchain для других целей.

1

Если вы используете eclipse или другую мощную среду IDE, у вас может быть встроенная поддержка для этого. См. I can't delete a method using eclipse refactoring?, чтобы получить то, что вы хотите.

1

Сегодня существует несколько способов добиться этого. Например, вы можете сообщить компилятору Eclipse, чтобы дать вам AST (см. my blog for an example). Вы можете перемещаться по AST, чтобы найти методы и удалить узлы для изменения источника.

Это упрощает сохранение кода. Используя форматировщик кода Eclipse, вы можете очистить форматирование впоследствии.

Проекты, подобные MoDisCo, сделайте еще один шаг, проанализировав весь проект и предложив вам способы поиска всего. Я только что обнаружил, что документация для MoDisCo не очень полезна, когда вы новичок.

0

Наш DMS Software Reengineering Toolkit с его Java Front End может быть использован для этого.

DMS анализирует языки (используя его передние концы, в данном случае Java), создает таблицы AST и таблиц символов и предоставляет средства для управления АСТ на основе пользовательского анализа. В этом случае OP хочет предоставить сигнатуру метода (предположительно с контекстом, в котором она должна интерпретироваться, поскольку в противном случае типы, используемые в сигнатуре, не могут быть определены), посмотрите, что подпись в таблице символов, найдите точку объявления (это в таблице символов) как узел AST, а затем применить правило перезаписи, которое заменяет объявление пустой декларацией.

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