Иногда мне нужно изменить код OSS или код других людей (обычно C-based, но иногда С++/Java) и найти "grep" заголовки для типов, деклараций функций и т.д., когда я следую потоку кода и пытаюсь понять систему. Есть ли хороший инструмент, который существует для помощи в просмотре кода. Мне бы хотелось, чтобы можно было щелкнуть по типу и принять его в декларацию или щелкнуть по имени функции и перейти к ее реализации. Я нахожусь в linux box, поэтому ответы вроде "просто использовать Visual Studio" не обязательно будут работать для меня. Спасибо!
Что такое хороший инструмент для просмотра/просмотра кода C?
Ответ 1
Вы не можете получить ничего лучше, чем SourceInsight.
Ответ 2
Я использую Vim с ctags и taglist. Вы можете переместить курсор на имя переменной и с помощью комбинации клавиш он перенесет вас в объявление переменной (и обратно). Taglist также покажет обзор всех функций, классов и т.д. В боковой панели.
Ответ 3
Doxygen может генерировать набор веб-страниц, которые включают в себя исходный браузер. Не так красиво, как в IDE, но все, что ему нужно, это веб-браузер.
Ответ 4
Я слышал удивительные вещи о OpenGrok. Я знаю, что другая команда на моем месте найма использует ее, и они находят ее очень ручно. На своем веб-сайте:
OpenGrok - быстрый и удобный источник поиск кода и перекрестная ссылка двигатель. Это помогает вам искать, перекрестная ссылка и исходное дерево. Он может понимать различные программные форматы файлов и версии контрольные истории, такие как Mercurial, Git, SCCS, RCS, CVS, Subversion, Teamware, ClearCase, Perforce и Bazaar. В другими словами, он позволяет вам (глубоко понять) открытый источник, отсюда и название OpenGrok. это написанных на Java.
Ответ 5
Eclipse IDE может работать с C/C++ в дополнение к Java. Существует рецензия о том, как настроить Eclipse, для C/C++ разработки в IBM Developer Works сайта.
редактировать: почему это было отклонено? Это правильный ответ. Затмение с помощью дополнения C/C++ позволит автору вопроса делать то, что он хочет. Я не единственный, кто предложил, но другие не были отклонены. Так почему же за это проголосовали?
Ответ 6
Я немного разбираюсь в пространстве ядра и продолжаю возвращать область.
Например:
$cd/usr/src/redhat/BUILD/kernel-version
$cscope -R -p4
Find this C symbol:
Find this function definition:
Find functions called by this function:
Find functions calling this function:
Find this text string:
Change this text string:
Find this egrep pattern:
Find this file:
Find files #including this file:
Я обычно "живу" в c-сфере при работе над кем-то проектом elses. Я использую это, чтобы открывать файлы с помощью "gvim" (моя IDE), редактировать вещи, а затем "вернуться" в c-scope, Это помогает мне сфокусироваться на задаче.
Я считаю, что cscope можно настроить для работы с vim и emacs, хотя я видел, что люди также используют другие редакторы.
Удачи вам.
Ответ 7
Ответ 8
Если вы ищете что-то простое и вездесущее, попробуйте etags. Это не будет так хорошо, как тяжеловесные инструменты, но это почти все, и он работает с emacs. Используйте ctags для vi.
Ответ 9
ctags очень полезен. Есть два этапа. Сначала запустите программу ctags во всех источниках и включите каталоги. Это создает файл с именем 'tags' в локальном каталоге. ctags *.c *.h будет хорошо, если весь исходный код находится в одном каталоге. Когда вы работаете с источником в нескольких каталогах, может быть стоит запустить ctags в нескольких местах. Затем, в vi, с помощью курсора на любую функцию, определенный тип или переменная используйте ctl-], чтобы перейти к определению этого объекта. Используйте etags, если вы используете emacs.
Ответ 10
Я поддерживаю использование doxygen.
Этот инструмент генерировал javadoc-подобный набор html-страниц, позволяющий индексировать весь код, просматривать его (где используется эта функция и какой функцией...), как вы можете сделать в IDE. Сделать это очень легко.
Когда-то мне приходилось поддерживать 2000 файлов кода C 15-летнего C-проекта. Мне потребовался час, чтобы проиндексировать код с помощью doxygen и предоставить другим разработчикам сгенерированный документ. (Я знаю, эта фраза звучит как надстройка, но это правда... Это действительно хороший инструмент)
Прекрасный инструмент, который работает на всех C-подобных языках.
Ответ 11
Доксиген замечательный. Мне приходилось сталкиваться с несколькими устаревшими кодовыми базами, которые я никогда раньше не участвовал, и это было фантастично для этого (хотя базы кода не были документированы с использованием формата Doxygen).
Ответ 12
Перейдите на Doxygen и установите для EXTRACT_ALL значение YES. Это просто мощно и легко. Когда вы любите его, вы можете придерживаться его на всех платформах и языках.
Ответ 13
Если вы участвуете в проектах, в которых есть сочетание HLL-кода вместе с Assembly, я бы рекомендовал Opengrok, я недавно перешел на Opengrok и нашел, что это потрясающе, Opengrok + Firefox + Extensions - лучшая комбинация, на мой взгляд, несколько расширений firefox, таких как Scrapbook и т.д., позволяют вам изменять и добавлять заметки во время просмотра кода, опять же это в основном для "Просмотр" через код, а не для его изменения на лету.
Ответ 14
IntelliJ довольно хорош как исходный браузер под Linux. Он получил действительно хорошую поддержку для прыжков между объявлениями источника и функции. Не пробовал его с кодом C/С++, но он хорошо работает с Ruby и Java.
Ответ 15
Я не использовал его напрямую, но я использовал сайты, созданные с помощью lxr и считал это очень удобным. Он преобразует ваш проект в текстовые и перекрестные ссылки HTML файлов, используя ссылки на функцию перекрестных ссылок и имена файлов. Есть примеры источников, проиндексированных с ним здесь.
Не похоже, что существует версия более поздняя, чем 2006, но она все равно может работать по вашему желанию.
Ответ 16
Я использую Anjuta IDE. Неплохо. Не уверен, как он сравнивается с Eclipse IDE.
Ответ 17
Любая IDE будет работать нормально. Netbeans и Eclipse основаны на Java, но имеют плагины для C/С++
Ответ 18
Я использую kscope, который использует cscope в фоновом режиме, но также предоставляет списки функций и т.д. Похоже, что и для больших проектов, таких как linux, тоже хорошо. главная страница kscope содержит хорошее кратким описанием того, что он делает и чего не делает.
Ответ 19
cscope всегда был моим любимым. Существует также cbrowser, но я не пробовал. ctags также используется много.
Ответ 20
Я использую Понять для С++. Это очень удобный инструмент для обработки большого количества кода. Он также может вычислять статистику кода и рисовать график вызовов. Должно быть!
Ответ 21
У меня был большой успех с использованием doxygen. Для достижения наилучших результатов (особенно при создании документации для С++) установите graphviz и включите в своем конфигурационном файле doxygen.
Это автоматически создаст карты зависимостей и диаграммы классов, которые связаны с остальной документацией html.
Ответ 22
Даже если вы не разработчик, перейдите Источник Insight
И если вы, то его ДОЛЖНО ИМЕТЬ:)
Ответ 23
Cscope. (захотелось модифицировать другую должность, но у меня еще нет кармы).
- глобальный поиск и замена
- найти все места, которые функция вызывается
- найти все места, вызываемые функцией
- найти файлы, включая этот файл.
действительно простое использование: $cscope -R
если вы не знаете vi, а затем измените переменные среды EDITOR и VIEWER на ваш предпочтительный редактор.
Ответ 24
Я нашел ID Utils довольно удобно. Это похоже на мгновенный рекурсивный grep. Есть куча рецептов vim, чтобы пойти с ним.
Ответ 25
Я использую и как бесплатный инструмент GNU global.
Ответ 26
Поисковая система с исходным кодом, чувствительная к языку, может быть найдена на Поисковая система исходного кода SD. Он может обрабатывать многие языки одновременно. Поиски могут выполняться для шаблонов в определенном langauge, или шаблоны на разных языках (например, "найти идентификаторы с использованием TAX" ). Будучи чувствительными к токенам langauge, количество ложных срабатываний уменьшается, экономия времени для пользователя. Он понимает C, С++, С#, COBOL, Java, ECMAScript, Java, XML, Verilog, VHDL и ряд других языков.
Ответ 27
Я использую Source-Navigator (TM) из здесь. Это впечатляет и помогает. Он написан в Tcl/Tk, доступен как исполняемый файл для окон и как исходный код, готовый к созданию на * nix.