Интеллектуальный поиск файлов для окон, которые могут игнорировать пробелы и искать в коде? - PullRequest
3 голосов
/ 31 октября 2009

Кто-нибудь знает инструмент поиска на базе Windows, который прост в использовании и является программистом? дружелюбный.

Функции, которые я ищу:

Игнорировать пробелы в поиске

= способен найти

myTestFunction ( $parameter, $another_parameter, $yet_another_parameter )
{ doThis();

используя запрос

myTestFunction($parameter,$another_parameter,$yet_another_parameter){doThis();

без регулярных выражений.

Поиск кода "семантически" (для меня это должен быть PHP):

  • Искать только в комментариях
  • Поиск только по именам функций
  • Поиск параметров с именем $ xyz
  • Искать только в ( вставить здесь кодовую структуру )

Если вокруг нет никого, самое время его развить! :) Я открыл награду за это.

Ответы [ 7 ]

3 голосов
/ 23 ноября 2009

См. Наш SD Search Engine . Это чувствительная к языку поисковая система, предназначенная для поиска больших баз кода со специальными языковыми классификаторами для C, C ++, Java, C #, COBOL, JavaScript, Ada, Python, Ruby и многих других языков, включая ваш целевой язык PHP ( PHP4 и PHP5).

Я думаю, что он делает все, что вы просили.

Индексирует языковые элементы, поэтому поиск по большим базам кода выполняется очень быстро (Linux Kernal ~ ~ 7,5 млн строк -> 2,5 секунды). (Шаг индексации выполняется в Windows, но механизм отображения в Java.)

Хиты поиска отображаются в однострочном контекстном окне, в котором отображается номер файла и строки, а также строка с выделенным попаданием. При щелчках по попаданию открывается исходный код, вкладки расширяются соответствующим образом, и количество строк отображается правильно даже для языков, в которых есть правила подсчета нечетных строк (например, символы формы GCC WRT), с выделенной строкой совпадений и текстом попаданий. Нажатие в окне исходного кода запустит ваш любимый редактор файла.

Поскольку он понимает языковые элементы, он игнорирует пробелы, зависящие от языка. Он пропускает комментарии, если вы не настаиваете на их проверке. Таким образом, при поиске игнорируются пробелы, комментарии и границы строк (если язык считает, что границы строк - это пробелы, поэтому существуют сканеры, специфичные для языков). Язык запросов позволяет вам указать, какие языковые токены вы хотите (конкретные токены в кавычках или общие токены, такие как идентификаторы I, числа N, строки S, операторы O и пунктуация P) с ограничениями на значение токена, а также серию лексемы.

Ваш пример поиска:

 myTestFunction($parameter,$another_parameter,$yet_another_parameter){doThis(); 

будет выражаться поисковой системе точно как:

 I=myTestFunction '(' I ',' I ',' I ')' '{' I=dothis '(' ')' ';'

но, вероятно, было бы легче (меньше печатать) найти его как:

 I=myTest* ... I=dothis

где I = myTest * означает идентификатор, начинающийся с myTest , а ... означает "рядом".

Поисковая система также предлагает регулярные выражения поиска по тексту, если вы настаиваете. Таким образом, у вас все еще есть grep-подобные поиски (намного медленнее, чем индексированные поиски) но с окном попадания и окнами отображения источника тоже.

2 голосов
/ 21 ноября 2009

Я действительно успешно использую ack для такого рода вещей, особенно когда пытаюсь найти вещи в больших кодовых базах. Я запускаю его под Linux, но не вижу причин, по которым он не будет работать на Windows или Cygwin, по крайней мере. Проверьте это, я думаю, вы найдете, что это именно то, что вы ищете.

1 голос
/ 22 ноября 2009

Для поиска на рабочем столе Windows я использую Agent Ransack . Я использую это как замену для поиска Windows.

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

1 голос
/ 22 ноября 2009

Поиск кода "семантически" (для меня это должен быть PHP):

Для этого вы можете (и я думаю, следует) использовать некоторый пользовательский код, используя token_get_all()

См. Также доступные токены

Игнорировать пробелы в поиске

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

0 голосов
/ 23 ноября 2009

Я использую TextPad для поиска файлов кода в Windows. Он имеет очень удобную функцию поиска в файлах (Поиск / Поиск в файлах), и вы можете использовать регулярные выражения, которые должны отвечать любым требованиям поиска. В результатах поиска будет указано местоположение файла, номер строки и фрагмент этой строки.

0 голосов
/ 22 ноября 2009

Мне действительно нравится Crimson Editor , и он позволяет выполнять поиск в RegEx. Это помогло мне за последние шесть лет. Я думаю, что это будет соответствовать вашим потребностям. Попробуй.

0 голосов
/ 19 ноября 2009

Взгляните на Google Desktop API , в нем есть очень мощный набор методов для выполнения того, что вы ищете.

Конечно, требуется, чтобы у вас был установлен Google Desktop.

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

...