2010-05-20 4 views
1

В последнее время я очень расстроился, столкнувшись с огромным количеством устаревшего кода, с которым я пытаюсь ознакомиться.Существуют ли контекстно-зависимые инструменты поиска кода?

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

// Fixed functionality in foo() so don't need to handle this here any more 

Но другие гораздо труднее обнаружить вручную, так как они оказываются вызовы от других функций в модулях, которые только скомпилированные в некоторых случаях, или часть гораздо более крупного блока кода, который полностью равен #if 0 '.

Что бы я хотел, был бы инструментом поиска, который позволил бы мне найти термин и дать мне возможность включить или исключить прокомментированный код или код #if 0'd. Затем результаты поиска будут отображаться рядом со списком #defines, которые необходимы для того, чтобы этот фрагмент кода был релевантным.

Я работаю на языках C/C++, но кроме синтаксиса комментариев, я думаю, что методы должны быть более общеприменимыми.

Существует ли такой инструмент?

ответ

1

Не совсем то, что вам нужно, но я считаю это весьма удобным.

GrepWin - бесплатный визуальный инструмент «grep» для поиска файлов.

Я нахожу это очень полезно, потому что:

  • Его отдельное приложение (не блокирует мой редактор)
  • Ручки Регулярные выражения
  • Его быстрый
  • Можно указать, какие папки для поиска , и какие типы файлов (обрабатывает здесь также регулярное выражение)
  • Может ограничивать размер файла
  • Может включать поддиры (или исключать по регулярному выражению)
  • т.д.
+0

Это интересно, спасибо! – Vicky

1

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

+1

Обычно я использую Visual Studio, но это устаревший проект, который трудно построить в VS (исправьте меня, если я ошибаюсь, но вам не нужно реально создавать проект в VS, чтобы получить исходный просмотр работать?) Первоначально он был разработан с помощью какого-либо другого инструмента, к которому у меня нет доступа, и даже если я сделал это настолько старым, что сомневаюсь, что у него будет разумный исходный просмотр. Фактически, у меня есть большой беспорядок исходных и заголовочных файлов C/C++. Есть ли на самом деле какие-либо исходные браузеры (для Win или Linux), которые могли бы справиться с этим разумно, несмотря на отсутствие структуры? – Vicky

+0

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

Смежные вопросы