Почему doxygen не создает граф вызовов моего кода на c++?

Я загрузил исходный код со следующего сайта: https://github.com/ApolloAuto/apollo/blob/master/modules/control/integration_tests/simple_control_test.cc, и я хочу проанализировать, как модули кода взаимодействуют друг с другом. Поэтому я поискал в Интернете и обнаружил, что Doxygen может делать такие вещи. Я выполнил в точности шаги, описанные здесь: https://www.youtube.com/watch?v=mgVgZjaeNkw Однако, когда я перехожу к папке «html», как показано в приведенном выше руководстве, и нажимаю на файл index.html, я получаю следующее:

The results that Oxygen returns

Как видите, здесь нет вкладки файлов (как на видео) или какой-либо информации о коде. Я что-то забыл? Что я могу сделать?

Добро пожаловать, пожалуйста, укажите подробности. Прочтите Как спросить и Минимальный, полный и проверяемый пример. В этом случае очень важно знать: документирован ли код? Какие настройки вы использовали в Doxyfile, отличные от стандартного Doxyfile?

albert 13.09.2018 19:07

«Изучите C++ и ...» - знайте, что это простой проект многолетний. И если вы хотите «изучить C++ хорошо», то это с легкостью, проект на 5+ лет (обучение / выполнение на постоянной основе) - C++ - большой зверь с сложный, и его сложно освоить.

Jesper Juhl 13.09.2018 19:21

Хорошо, спасибо за комментарии! Я приведу минимальный, полный и проверяемый пример, как только смогу. Я знаю, что изучение C++ - это многолетний проект. Но что делать, если ваша задача - понять несколько сотен тысяч строк кода, которые не документированы? Что ж, я стараюсь изо всех сил ...

Michael 13.09.2018 20:28

Установлен ли в вашей системе graphviz? Насколько я помню, это требуется doxygen, если вы хотите генерировать графы вызовов.

GSIO01 14.09.2018 07:49

Да, у меня установлен graphviz. Спасибо, что подняли этот вопрос (отредактировал мой вопрос)!

Michael 17.09.2018 19:34
5
5
1 102
1

Ответы 1

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

Обязательные настройки для ДА:

  • HAVE_DOT
  • CALL_GRAPH
  • CALLER_GRAPH
  • ИЗВЛЕЧЬ ВСЕ
  • EXTRACT_PRIVATE
  • EXTRACT_PACKAGE
  • EXTRACT_STATIC
  • EXTRACT_LOCAL_CLASSES
  • EXTRACT_LOCAL_METHODS
  • EXTRACT_ANON_NSPACES
  • РЕКУРСИВНЫЙ

значение этих переменных можно найти в руководстве по doxygen (также для многих других возможностей).

Я только что провел тест в корневом каталоге, создав здесь файл конфигурации doxygen по умолчанию (Doxyfile):

  • doxygen -g

и отредактировал файл:

  • установить INPUT = apollo-master/modules/common
  • другие переменные, упомянутые выше, кроме RECURSIVE - YES

Я запустил doxygen (doxygen) и запустил результаты: html\index.html в Windows в системе * nix с Firefox firefox html/index.html, набрал в «окнах поиска doxygen» (вверху справа) ExportFlags и нажал на результат, и я получил документацию по функции. ExportFlags, включая вызов и график вызывающих.

Спасибо, Альберт! Действительно, для некоторых из этих переменных не задано ДА. Однако сейчас они есть, и это не решило проблему. Я понимаю, что такое минимальный, полный, проверяемый пример. Однако мне довольно сложно предоставить его здесь. Единственное, что я мог бы предоставить, это полный исходный код (о котором я пока ничего не знаю). Это открытый исходный код: github.com/ApolloAuto/apollo/blob/master/modules/control/… Что еще я могу предложить, чтобы задать лучший вопрос? Заранее большое спасибо.

Michael 13.09.2018 20:49

На основании комментария GSIO01: получаете ли вы какие-либо предупреждения / сообщения об ошибках (кроме, конечно, «недокументированных»?). Кроме того, я вижу, что вы ссылаетесь на тестовый модуль (integration_tests), лучше сначала взгляните на сам исходный код, тестовая среда, вероятно, использует некоторые настройки макросов, которые трудно понять вначале.

albert 14.09.2018 09:55

Поскольку вы также новичок в C++, не лучше сразу начинать работу с таким сложным кодом. Чтобы получить MCVE, нужно начать с 1 или 2 небольших файлов, чтобы кое-что заработало и получить опыт работы с некоторыми инструментами.

albert 14.09.2018 09:57

Спасибо за комментарии, Альберт. Нет, предупреждений я не получаю. Все работает как положено, просто я не получаю информации о структуре кода. И спасибо за совет, чтобы сначала посмотреть на это самому. Учитывая тот факт, что мой вопрос, похоже, пока отложен (что мне грустно, учитывая, что я описываю все, что знаю о проблеме, но это не тема, верно?), Я все сделаю рука. Я ничего не знаю о файлах, даже если, например, файл "integration_tests", по сути, является тестовым модулем. В любом случае спасибо!

Michael 17.09.2018 19:40

Кстати, могу ли я использовать любой файл, чтобы начать с этих 1, 2 маленьких файлов, чтобы набраться опыта? Или файлы действительно должны быть связаны друг с другом (что означало бы, что мне нужно найти два таких файла или создать такие файлы))?

Michael 17.09.2018 19:47

Я бы начал с файлов в одном каталоге, например. common и медленно расширяйте это с помощью некоторых подкаталогов, возможно, также посмотрите параметр конфигурации "РЕКУРСИВНЫЙ"

albert 17.09.2018 19:55

Смотрите мои дополнения к ответу.

albert 17.09.2018 20:12

Спасибо, Альберт. Начну с общего и дам знать ...

Michael 18.09.2018 22:42

Я только что узнал, что программа сделана на разных языках. Прежде, чем я начну и потрачу много времени, чтобы познакомиться с Doxygen. Ограничивается ли Doxygen анализом одного конкретного языка?

Michael 18.09.2018 22:50

Альберт, как мне создать файл конфигурации кислорода по умолчанию? Что вы сделали, так это создали файл и записали в него следующие строки, верно?

Michael 18.09.2018 23:41

как мне создать файл конфигурации кислорода по умолчанию? Что вы сделали, так это создали файл и записали в него строку с «INPUT =» и строку для каждой из других переменных «= YES», верно?

Michael 18.09.2018 23:47

Я попробовал это сейчас только с общим модулем, и я получил еще несколько результатов. Может быть, это связано с тем, что в других файлах есть и другие языки?

Michael 19.09.2018 00:07

Пожалуйста, ознакомьтесь с руководством по doxygen, особенно с основными материалами. Здесь вы также увидите, как вызвать doxygen, модификацию поддерживаемых языков Doxyfile (и создание версии по умолчанию). также doxygen --help может вам помочь.

albert 19.09.2018 07:36

Другие вопросы по теме