Ответ 1
Я рекомендую OpenGrok. Есть несколько других движков, здесь их быстрый обзор.
Кодовая база, над которой я работаю, огромна, и grepping занимает около 20 минут. Я ищу хорошую веб-поисковую систему исходного кода.. что-то вроде интранет-версии koders.com.
Единственное, что я нашел, это Krugle Enterprise Edition, который не публикует свои цены... и если вы должны спросить, вы не можете себе это позволить.
Мне бы очень понравилась простая старая поисковая система, без множества других колоколов.
Источником является в основном ASP.NET/C# и Javascript.
Я рекомендую OpenGrok. Есть несколько других движков, здесь их быстрый обзор.
20 минут возмутительно! В эти дни я работаю с базой исходного кода в миллион + строк, а grepping занимает всего несколько секунд (я использую ack). Наши домашние каталоги хранятся на файловом сервере и монтируются поверх NFS, а для ускорения grepping мы делаем это при входе в файловый сервер. Я не уверен, сколько времени занимает NFS, но это, безусловно, дольше.
Мы также выполняем операции управления версиями во время входа в файловый сервер по тем же причинам.
В Linux я использую GNU ID Utils. Они имеют схожие функции с grep, но работают с индексом, поэтому они невероятно быстры. Вы запускаете mkid для создания индекса, а затем одну из других утилит, таких как "gid", которая является версией grep grep для ID Tools в grep по индексу. У меня есть работа cron, которая иногда запускает mkid.
Инструменты ID работают также и с Windows, либо с cygwin, либо как стандартная программа Windows
Lxr отлично работает на больших базовых кодах, как это доказано с помощью linux kernel. Я думаю, что это только для C (вы не указали используемые языки).
Если у вас такой исходный код, вам может понадобиться немного времени, чтобы настроить поисковую систему, чтобы проиндексировать ее. Я бы порекомендовал Lucene - ее бесплатную, быструю, довольно легко настроить мощный индекс для любого контента для тех, у кого есть опыт программирования.
Поскольку вы говорите "grepping", я предполагаю, что вы не заинтересованы в решениях из командной строки.
Инструмент типа ctags будет индексировать и искать С# и JavaScript-кодовые базы (среди многих других).
Что очень удобно в ctags, так это то, что он может быть объединен с vim с помощью плагина taglist, чтобы разрешить просмотр исходного кода или с помощью vim omnicomplete, чтобы включить завершение кода.
Я использовал cs2project какое-то время, это поисковая система с открытым кодом С# на основе Lucene.NET. К сожалению, он больше не разрабатывается.
Я использовал OpenGrok раньше и был доволен этим. Другой вариант:
См. наш Поисковая система исходного кода SD. Язык знает и обрабатывает многие языки (C, С++, С#, Java, ObjectiveC, PHP, VB.net, VB6, Ada, Fortran, COBOL,...). Занимает 2,8 секунды для поиска в Linux Kernal (7,3 миллиона строк, 18000+ файлов).
Поскольку язык знает, он может игнорировать элементы langauge, не относящиеся к вашему поиску (например, игнорировать комментарии, форматирование и пробелы, если вас интересует только идентификатор или выражение). Он может выполнять поиск внутри идентификаторов, строк и комментариев. У этого есть полный вариант поиска строкового выражения, если вы действительно хотите это сделать.
Он использовался для систем из 10 миллионов миллионов строк кода, и в одном случае мы знаем о системе с более чем миллионом файлов.
У меня была аналогичная проблема. Я работаю в компании-разработчике программного обеспечения, где проект включает сценарии С#, С++, asp.net, db и даже исходный код vb6 (да, это головная боль, компилирующая несколько проектов vb6, когда нет концепции решения, как в более поздней версии визуальной студии...)
Я использую Visual Studio 2010, но мне пришлось использовать сторонний текстовый редактор для поиска в сценариях db и исходном коде vb6.
Я провел некоторое исследование и нашел KodeEx (http://kodeex.com) и был доволен. Это инструмент поиска исходного кода на основе индекса. Вам не нужно ничего строить (как, например, другие люди предложили вам с Lucene. Lucene - хороший проект с открытым исходным кодом, кстати =)). Просто установите его и дайте ему индексировать ваши проекты. После этого он обычно возвращает результат в течение нескольких секунд.
Возможно, вам стоит потратить некоторое время и/или деньги в редактор или среду IDE, которая поддерживает маркировку символов. Вам нужно всего лишь пройти один проход по всему дереву источника, чтобы пометить его, а затем редактор использует поиск по индексу или поиск по карте, чтобы найти определение символа или ссылки.
Некоторые примеры редакторов или IDE, которые поддерживают тегирование, - Eclipse, Visual Studio, SlickEdit. Некоторые IDE могут вызывать функцию Symbol Browser или что-то подобное.