То, в чем должен помочь хороший инструмент, просматривать/следовать код C? [закрытый]

Существует несколько способов моделирования того, что вы хотите:


1) Поверните двоичные файлы к примерам

Примеры и тесты построены с помощью dev-dependencies, поэтому вы можете перенести эти зависимости в этот раздел. Библиотека не будет зависеть от них.

# File structure
conformal/
    Cargo.toml
    src/
        lib.rs
    examples/        # <-- the `ucitest` is
        ucitest.rs   # <-- moved to here
# Cargo.toml

[dependencies]
kdtree = { path = "../kdtree" }
rand = "0.3"

[dev-dependencies]  # <-- move the examples-only dependencies here
serde = "1"
csv = "0.15"
crossbeam = "0.3"
num_cpus = "1"

[lib]
name = "conformal"

[[example]]         # <--- declare the executable
name = "ucitest"    # <--- as an example

Для запуска двоичного файла используйте:

cargo run --example ucitest

2) Дополнительные зависимости с требуемыми функциями

Зависимости могут быть сделаны опционально , поэтому другим ящикам, которые зависят от вашей библиотеки conformal, не потребуется их загружать.

Начиная с Rust 1.17, бинарные файлы могут объявить, что они требуют некоторых дополнительных функций, которые должны быть включены, что делает эти библиотеки «необходимыми только для двоичных файлов».

# Cargo.toml

[dependencies]
kdtree = { path = "../kdtree" }
rand = "0.3"

serde = { version = "1", optional = true }          # <-- make 
csv = { version = "0.15", optional = true }         # <-- all of
crossbeam = { version = "0.3", optional = true }    # <-- them
num_cpus = { version = "1", optional = true }       # <-- optional

[lib]
name = "conformal"

[features]
build-binary = ["serde", "csv", "crossbeam", "num_cpus"]

[[bin]]         
name = "ucitest"    
required-features = ["build-binary"]     # <--

Обратите внимание, что вам необходимо вручную передать --features build-binary при создании двоичных файлов:

cargo run --features build-binary --bin ucitest

3) Сделать двоичные файлы как свой собственный пакет

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

# File structure
conformal/
    Cargo.toml
    src/
        lib.rs
    ucitest/          # <-- move ucitest
        Cargo.toml    # <-- into its own
        src/          # <-- package.
            main.rs 
# ucitest/Cargo.toml 

[dependencies]
conformal = { version = "0.1", path = "../" }   # <-- explicitly depend on the library
serde = "1"
csv = "0.15"
crossbeam = "0.3"
num_cpus = "1"

12
задан Ira Baxter 22 August 2009 в 20:18
поделиться

26 ответов

Вы ничего не можете получить лучше, чем SourceInsight.

13
ответ дан 2 December 2019 в 03:08
поделиться

Я нахожу идентификатор Utils довольно удобный. Это похоже на мгновенный рекурсивный grep. Существует набор рецептов энергии для движения с ним.

0
ответ дан 2 December 2019 в 03:08
поделиться

cscope. (требуемый к модификации другое сообщение объема, но у меня еще нет кармы).

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

действительно простое использование: $ cscope-R

, если Вы не знаете vi, затем изменяют Вашего РЕДАКТОРА и переменные окружения СРЕДСТВА ПРОСМОТРА Вашему предпочтительному редактору.

0
ответ дан 2 December 2019 в 03:08
поделиться

Даже если Вы не разработчик, идут для Исходное Понимание

И если Вы, это - НЕОБХОДИМАЯ ВЕЩЬ:)

0
ответ дан 2 December 2019 в 03:08
поделиться

Я использую эти , Понимают для C++ . Это - очень удобный инструмент для контакта с большими объемами кода. Это также может вычислить статистику кода и потянуть граф вызовов. Должен иметь!

0
ответ дан 2 December 2019 в 03:08
поделиться

Я имел большой успех с помощью doxygen. Для лучших результатов (особенно при создании документации для C++) устанавливают graphviz и включают в doxygen конфигурационном файле.

Это автоматически генерирует карты зависимости и диаграммы классов, которые связаны с остальной частью документации HTML.

0
ответ дан 2 December 2019 в 03:08
поделиться

cscope всегда был моим фаворитом. Существует также cbrowser, но я не попробовал его. ctags также используется много.

0
ответ дан 2 December 2019 в 03:08
поделиться

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

0
ответ дан 2 December 2019 в 03:08
поделиться

Я использую IDE Anjuta. Не плохо. Не уверенный, как это выдерживает сравнение с Eclipse IDE.

0
ответ дан 2 December 2019 в 03:08
поделиться

Я не использовал его непосредственно, но я использовал сайты, созданные с lxr, и думал это очень удобный. Это преобразовывает Ваш проект в и файлы HTML с номером строки, на которые перекрестно ссылаются, с помощью ссылок, чтобы перекрестно сослаться на имена функций и имена файлов. Существуют некоторые примеры источника проектов, индексированного с ним здесь .

не кажется, что существует версия, более новая, чем 2006, но это может все еще работать на то, что Вы хотите.

0
ответ дан 2 December 2019 в 03:08
поделиться

Любой IDE будет хорошо работать. Netbeans и Eclipse являются базирующимся Java, но имеют плагины для C/C++

0
ответ дан 2 December 2019 в 03:08
поделиться

Я поддерживаю использование doxygen.

Этот инструмент генерировал javadoc как набор страниц HTML, позволив индексировать весь код, просматривать в нем (где эта функция используется, и которой функцией...), как Вы может сделать в IDE. Очень легко заставить его работать.

я имел однажды для поддержания 2 000 файлов кода C 15-летнего проекта C. Мне потребовался час для индексации кода с doxygen предоставление другим разработчикам со сгенерированным документом. (Я знаю, эта фраза походит на добавление, но это верно... Это - действительно хороший инструмент)

А замечательный инструмент, который работает над всеми подобными языкам C.

1
ответ дан 2 December 2019 в 03:08
поделиться

Doxygen замечателен. Я должен был объяснить несколько оснований унаследованного кода, что я никогда не вовлекался в прежде, и это было фантастически для этого (даже при том, что кодовые базы не были зарегистрированы с помощью формата Doxygen).

1
ответ дан 2 December 2019 в 03:08
поделиться

ctags очень полезен. Существует два включенные шага. Первый показ программа ctags на всем Вашем источнике и включает каталоги. Это создает файл, названный 'тегами' в локальном каталоге. ctags *.c *.h сделал бы прекрасный, если весь Ваш источник находится в единственном каталоге. Когда Вы работаете с источником в нескольких каталогах, может стоить выполнить ctags в нескольких местоположениях. Затем в vi, с Вашим курсором на любой функции, определенный тип или переменная используют ctl-] для движения в определение того объекта. Используйте завершающие теги при использовании emacs.

1
ответ дан 2 December 2019 в 03:08
поделиться

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

1
ответ дан 2 December 2019 в 03:08
поделиться

Vim и Ctags работает на меня.

2
ответ дан 2 December 2019 в 03:08
поделиться

Doxygen может генерировать набор веб-страниц, которые включают исходный браузер. Не совсем столь же необычный как IDE, но все, в чем требуется, является веб-браузером.

7
ответ дан 2 December 2019 в 03:08
поделиться

Я делаю немного в пространстве ядра и продолжаю возвращаться объем.

, Например:

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-объему, Он помогает мне сохранить задачу сфокусированной.

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

Всего наилучшего Вам.

3
ответ дан 2 December 2019 в 03:08
поделиться

Eclipse IDE способен к работе с C/C++ в дополнение к Java. Существует рецензия о том, как настроить Eclipse для разработки C/C++ на сайте Работ Разработчика IBM.

редактирование: , Почему это было провалено? Это - действительный ответ. Eclipse с дополнением C/C++ позволит автору вопроса делать то, что он желает сделать. Я не единственный для предложения, все же другие не были провалены. Итак, почему этот был провален?

5
ответ дан 2 December 2019 в 03:08
поделиться

Я услышал удивительные вещи приблизительно OpenGrok. Я знаю, что другая команда в моем месте работы использует его, и они находят его очень handly. С его веб-сайта:

OpenGrok является быстрым и применимым поиском исходного кода и механизмом перекрестной ссылки. Это помогает Вам искать, перекрестно сослаться и переместиться по своему исходному дереву. Это может понять различные форматы программного файла и истории управления версиями как Подвижный, Мерзавец, SCCS, RCS, CVS, Подрывная деятельность, Teamware, ClearCase, По необходимости и Базар. Другими словами, это позволяет Вам grok (глубоко понимают), открытый исходный код, отсюда имя OpenGrok. Это записано в Java.

7
ответ дан 2 December 2019 в 03:08
поделиться

Я использую Vim с ctags и taglist плагины. Можно переместить курсор в имя переменной, и с сочетанием клавиш он возьмет Вас к объявлению переменной (и назад). Taglist также покажет обзор всех функций, классы и т.д. на боковой панели.

8
ответ дан 2 December 2019 в 03:08
поделиться

IntelliJ довольно хорош как исходный браузер в соответствии с Linux. Это получено действительно хорошая поддержка перехода между источником и объявлениями функции. Не попробовали его кодом C/C++, но это работает хорошо с Ruby и Java.

0
ответ дан 2 December 2019 в 03:08
поделиться

Мне нравится бесплатный программный инструмент GNU global .

0
ответ дан 2 December 2019 в 03:08
поделиться

Откройте Doxygen и установите EXTRACT_ALL в YES. Это просто мощно и легко. Как только он вам понравится, вы сможете придерживаться его на всех платформах и языках.

http://www.doxygen.org

1
ответ дан 2 December 2019 в 03:08
поделиться

Можно найти систему поиска исходного кода с учетом языка на Поисковая машина исходного кода SD . Он может работать со многими языками одновременно. Поиск шаблонов может выполняться на определенном языке, или шаблоны на разных языках (например, «найти идентификаторы, связанные с налогом»). Благодаря чувствительности к языковым токенам количество ложных срабатываний уменьшается, экономия времени пользователя. Он понимает C, C ++, C #, COBOL, Java, ECMAScript, Java, XML, Verilog, VHDL и ряд других языков.

0
ответ дан 2 December 2019 в 03:08
поделиться

Я использую Source-Navigator (TM) из здесь . Это впечатляет и очень помогает. Он написан на Tcl / Tk, доступен как исполняемый файл для Windows и как исходный код, готовый для построения на * nix.

0
ответ дан 2 December 2019 в 03:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: