Подтвердить что ты не робот

Расширенный поиск Java Eclipse

Существует способ поиска объявлений или ссылок типов или методов, используя Search > Java в Eclipse. Но как насчет указания более сложных критериев поиска, например:

  • Найти все ссылки класса B в подклассах класса A.
  • Найти все методы, называемые insert *, в классах, реализующих интерфейс я и/или в пакетах с именем com.foo. *. service.

Я работаю над очень большой базой кода, и подобные запросы могут очень помочь. Просматривая Eclipse Marketplace, ближайшая вещь, которую я мог найти, - SEA-QL, но даже не удается создать индекс всех проектов в рабочей области.

Любые предложения?

4b9b3361

Ответ 1

То, что вы просите, звучит замечательно для меня - я не знаю никакой встроенной функциональности, которая легко даст то, о чем вы просите. Возможно, кто-то предложит плагин.

Однако, вы считали комбинацию: - "Рабочие наборы" - Обычные выражения - Сохраненные поисковые запросы

чтобы облегчить боль?

Предложение для вашего второго примера: Создайте "рабочий набор", содержащий пакеты com.foo. * Выполняйте поиск "Файл" (не Java) с помощью параметра Регулярные выражения, поиск в файлах типа *.java для чего-то вроде:

implements.*I.*\R.*insert

Вы можете сделать регулярное выражение более или менее явным в зависимости от сигнатуры метода метода "insert".

Сохранение поисков позволит вам создать (и поделиться) библиотеку часто используемых выражений.

Я взломал этот пример из другого вопроса SO и некоторых блогов: Полезное регулярное выражение для поиска Eclipse и Eclipse Regex находит и заменяет среди других.

У вас также будет дополнительное преимущество в использовании навыков Regex (что-то, что я знаю, мне нужно сделать самому!)

Кстати, какую платформу управления версиями вы используете? Существуют доступные инструменты поиска (думаю, Google), которые вы можете подключить к некоторым системам управления версиями. Например, я использую этот инструмент: SVN Query, и я уверен, что есть другие. Это также не чистое решение того, что вы просите. Извините, у меня нет прямого ответа! Надеюсь, у кого-то есть полезное предложение!