Використання indexing service для пошуку по ісходникам
Я давно помітив одну дивну річ - розробники не дуже часто користуються засобами швидкого пошуку по ісходникам. Це тим більше дивно, якщо врахувати той факт, що існує море доступних інструментів, в тому числі безліч Open Source проектів, присвячених індексування і пошуку. Я підозрюю, що це пов'язано з відсутністю зручного для користувача інтерфейсу. Переглядати вихідні в браузері - що може бути гірше? Думаю, що якби в Visual Studio була б галочка "індексувати вихідні файли", яка автоматично включала індексацію, то 9 з 10 розробників використовували б цю функціональність.
Фільтр для С ++ (С ++ IFilter) і відповідний GUI клієнт (Srch) входять до складу VC ++ PowerToys from GotDotNet. Власне кажучи, саме цю комбінацію (Indexing Service, C ++ IFilter і Srch) я використовую в повсякденній роботі, так що можна сказати, що ця інформація з перших рук.
Вся установка і настройка полягає в реєстрації фільтра (cxxfilt.dll) за допомогою regsvr32.exe і створенні Indexing Service каталогу в Computer Management:


В каталог додаються всі індексовані директорії:


Також має сенс дозволити індексування файлів з невідомими розширеннями у властивостях каталогу. Інакше файли на зразок "makefile" не проіндексовані:

Indexing Service також дозволяє автоматично налаштовувати віддалений доступ до проіндексованим файлів, що дуже зручно в разі, коли для індексування використовується виділений комп'ютер:

Після того, як Indexing Service проиндексирует всі файли можна спробувати пошукати що-небудь. Отже, запускаємо Srch, вибираємо потрібний каталог:

... і шукаємо, скажімо, "get_Arguments":

Інтерфейс цієї утиліти досить таки спартанський, проте, цілком функціональний. Подвійне клацання в списку знайдених файлів відкриває вікно з вихідним кодом:

Кнопки "Previous" та "Next" переміщають фокус між знайденими словами. Ctrl + Tab і Ctrl + Shift + Tab перемикають фокус між вікнами.
Утиліта підтримує розвинену мову запитів. Його короткий опис можна знайти в "довідкової системі" утиліти (якщо, звичайно, так можна назвати .chm файл з трьох сторінок. -) Наприклад, запит "@func get_Argument" знайде тільки файли, що містять визначення функції get_Argument:

Ось і все на сьогодні.