Как вы находите конкретную функциональность в большой базе кода?

Я был очарован функцией "Вставить вкладку для поиска" в хроме, поэтому, естественно, я хотел посмотреть, как именно она была реализована в коде.

Небольшой фон для тех, кто не знаком с этим. После перехода на какой-либо сайт, скачайте wikipedia и выполнив поиск, хром запомнит имя переменной запроса и позволит вам нажать вкладку и выполнить поиск по сайту непосредственно из адресной строки. Ухоженная!

Проблема в том, что кодовая база для хрома огромна, и мне не удавалось найти метод/функцию, которая обрабатывает это.

Как вы приближаетесь к большой базе кода, когда ищете реализацию определенной функциональности? Любые трюки для сужения? Предпочтительно, чтобы не требовалось создавать программное обеспечение с помощью отладочных символов и после потока через программу.

Ответ 1

Ни один размер не подходит для любого подхода к этой проблеме. Но для этого я попробую:

  • Если есть уникальные сообщения, связанные с операцией, grep все исходные файлы для этой строки. Общим недостатком этого метода является то, что сообщения могут собираться из частей внутри приложения, поэтому часто полезно использовать grep для уникальной короткой фразы - или даже одного слова - для идентификации источника сообщения. Как только текст будет найден, тогда поиск того, что ссылки часто требует большего поиска текста.

  • Выполнение трассировки из легкодоступной точки, например, для обработки команд и цикла отправки. Я бы поискал ключевой случай Tab и следил за тем, куда он ведет.

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

Ответ 2

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

Приложите приложение для сбора пробного покрытия. Выполните те функции, которые вам интересны. Запишите, что выполнено. Выполните что-то подобное, но не то же самое, что и функциональность. Запишите это. Возьмите установленную разницу по охвату. Diff выбирает код, относящийся к интересующей функциональности, за исключением кода, который является общим для аналогичной функциональности.

Ответ 3

Запросить команду Chromium. Они не дают точек или бронзовых пикселей, но они определенно являются авторитетными и правильными людьми, чтобы задавать такие вопросы.