Поиск кода Google /* что нового? */

16.07.2008

Дмитрий Барашев, инженер Google Санкт-Петербург

"В какой же строке определяется этот метод? Их же тут тысячи! Может попробовать текстовый поиск? Это не определение, это вызов, это тоже вызов... а, вот он! Принимает параметром какой-то класс... А его где искать? В начале файла написано import com.example.*; Ну кто так делает?!"

Известно, что значительную часть своего рабочего времени программист тратит на чтение кода, своего или чужого. Как правило, чтение не ограничивается одним файлом. Требуется найти файл, в котором определен тот или иной класс или функция, требуется отыскать нужную строчку кода, и так далее. При больших объёмах исходников эта задача становится сложной, и программисты всегда мечтают о том, чтобы поиск и навигация по коду были легче. Для исходников на локальной рабочей машине можно использовать всю мощь современных сред разработки, но вот просматривать открытый код, лежащий в больших количествах в репозиториях и архивах в сети, до недавнего времени было не так-то просто.

Мы обновили Поиск кода Google, добавив новые функции, улучшающие поиск и навигацию по коду. Первой из них является отображение структуры кода, написанного на Java, C, C++, C#, Python, JavaScript или Pascal. Структура показывается слева от текста файла в новой закладке, рядом с закладкой "Файлы".


Вторая добавленная функция позволяет ткнуть мышкой в include или import в коде на Java, C, C++ или Python и перейти прямиком к импортированному файлу, если он, конечно же, находится где-то рядом с текущим. А если не рядом, а где-то в сторонней библиотеке или, скажем, в заголовках ядра Linux, то мы выполним поиск файла с таким именем по всему проиндексированному коду.


Но что делать, если заимпортировано очень много файлов (например, при помощи import com.example.*; в Java) и просто невозможно отгадать где находится нужный класс? У нас теперь есть два новых поисковых оператора, class: и function:, которые позволяют применять регулярные выражения только к именам, соответственно, классов и функций. Вместе с оператором package: и новой радиокнопкой "Искать в...", которые сужают область поиска до содержимого заданного архива или репозитория, это отличный способ быстрее найти то, что нужно. Сравните, например, результаты поиска Shell во всем индексе и результаты поиска класса Shell в пакете SWT.

Мы продолжаем улучшать Поиск Кода Google и ждем ваших отзывов в нашей группе обсуждения.

3 comments:

Stoune комментирует...

Хорошо бы чтобы новые функции поддерживались google toolbar (Programmers Edition) на уровне кнопок для опций (ну и шорткаты конечно). Но это из раздела мечтаний.

Count Zero комментирует...

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

Gendalph комментирует...

Было бы не плохо внедрить вот это
http://googlerussiablog.blogspot.com/2008/08/blog-post.html (Удобный поиск)

чтобы не переключать раскладку, и транслит...