Поиск списка ключевых слов из текстовых файлов в папках - PullRequest
1 голос
/ 18 ноября 2011

Я собрал список имен объектов БД, по одному имени в строке, в текстовом файле. Я хочу знать для каждого имени, где оно используется. Целевой поиск - это группа папок, содержащих подпапки исходных кодов.

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

В идеале это должно быть настольное приложение Windows. Я не использовал grep раньше.

Ответы [ 3 ]

1 голос
/ 18 ноября 2011

использовать grep (есть тонны порта этой команды для окон, поиск в Интернете).

в конце концов, используйте AgentRansack.

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

Я создал пакет служб SSIS для загрузки моих файлов с исходным кодом 500+, которые распределены по папкам некоторой глубины, принадлежащим нескольким проектам, в таблицу, с 1 строкой в ​​1 строке из файлов (всего 10K + строк).

Затем я сделал против него оператор выбора, перекрестно применяя таблицу, в которой хранится список из 5 КБ + ключевые слова объектов БД, с помощью RegEx для MS-SQL, http://www.simple -talk.com / SQL / T-SQL-программирование / CLR-сборка-регулярные выражения-функция-для-SQL-Server по образцу / . На выполнение запроса ушло почти 1,5 часа.

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

enter image description here

insert
    dbo.DbObjectUsage
select
    do.Id as DbObjectId,
    fl.Id as FileLineId
from 
    dbo.FileLine as fl -- 10K+
cross apply
    dbo.DbObject as do -- 5K+
where 
    dbo.RegExIsMatch('\b' + do.name + '\b', fl.Line, 0) != 0
0 голосов
/ 18 ноября 2011

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

Если бы у вас был идентификатор "foo", следующий запрос нашел бы все упоминания:

 I=foo

Для C и Java вы можете ограничить типы доступа к идентификаторам: Использовать, Чтение, Запись или Определения.

  D=bar*

найдет только объявления идентификаторов, которые начинаются с букв "bar".

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

'int' I=*baz* '['

для C найдет объявления для любого имени переменной, которое содержит буквы "baz" и явно объявит массив.

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

Это приложение для Windows. Он поддерживает широкий спектр языков: C #, C ++, Java, ... и многие другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...