Как автоматически удалить методы в коде Java - PullRequest
3 голосов
/ 21 октября 2011

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

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

Ответы [ 5 ]

1 голос
/ 21 октября 2011

Если вы используете eclipse или другую мощную IDE, возможно, у вас есть встроенная поддержка для этого.См. Я не могу удалить метод, использующий рефакторинг Eclipse? , чтобы узнать, чего вы хотите.

1 голос
/ 21 октября 2011

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

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

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

0 голосов
/ 23 октября 2011

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

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

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

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

0 голосов
/ 21 октября 2011

Для этого можно использовать наш инструментарий реинжиниринга программного обеспечения DMS с интерфейсом Java .

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

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

0 голосов
/ 21 октября 2011

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

http://beautyj.berlios.de/

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

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

...