grep с регулярными выражениями, и немного смекалки — самый лучший набор инструментов.
Говорю, как человек, кому нередко приходилось что-то искать в огромных проектах, о которых заранее было известно только их предназначение, да используемый язык программирования.
Живой пример: только вчера закончил писать курсовую, где в качестве практики фиксил небольшой баг в GUI текстового редактора Yi на Haskell
(в котором я на момент написания этих слова разбираюсь чуть ниже среднего). Поскольку я не знаю ни архитектуры, не API, а в существующих статьях про интерфейс редактора нет ни слова, большая часть работы выглядела следующим образом:
- Войти в директорию, в которой предположительно — исходя из ее названия — находится интригующая меня часть кода
- Пойдя от обратного, спросить себя, как могла бы быть реализована та часть, которая меня сейчас интересует
- Найти в своих рассуждениях ключевые моменты, перевести их в ключевые слова, которые могли бы быть упомянуты в именах переменных/функций, комментариях, частично или полностью
- grep'нуть ключевые слова по коду, и пробежаться глазами по имеющимся линиям; особо интересные моменты просмотреть, открыв в текстовом редакторе
- Спросить, собрал ли я достаточно информации для понимания проблемы и возможного фикса; если нет, goto §2