Как сгенерировать блок-схему из кода C, используя Doxygen

Я новичок в Doxygen, у меня мало сомнений по этому поводу

  1. Можем ли мы сгенерировать блок-схему из кода C, используя Doxygen?
  2. Если да, нужен ли какой-нибудь плагин? На самом деле я установил GraphViz для CallGraph.
  3. Если есть какая-либо ссылка для создания блок-схемы с использованием Doxygen, пожалуйста, поделитесь здесь?
  4. Если нет, есть ли какой-нибудь инструмент, который сгенерирует как документацию, так и блок-схему, используя код C?

Пожалуйста, ответьте мне, если знаете. Заранее спасибо.

2 ответа

AFAIK, Doxygen не генерирует блок-схемы. Блок-схемы сегодня бесполезны, потому что они всегда слишком велики, чтобы их можно было прочитать (они использовались в 1950-х и 1960-х годах, когда компьютеры и программы были намного меньше). Любая практическая программа имеет блок-схему не менее тысячи узлов, и это нечитаемо, поэтому бесполезно.

С 1960-х годов мы используем структурированное программирование, чтобы избежать необходимости в блок-схемах. Вспомните статью Дейкстры 1968 года.

Обратите внимание на несколько вещей: множество простых макросов C соответствуют некоторой части (больше, чем один узел) потоковых диаграмм.

Возможно, вы захотите график потока управления. Но даже он слишком велик для того, чтобы его можно было прочитать (поэтому на практике вам могут понадобиться некоторые средства масштабирования). Вам не нужен этот CFG, потому что на практике он тоже слишком большой.

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

Но вам не нужно генерировать блок-схемы (они не читаются на практике).

Если вашей документации нужна блок-схема, ваш код спроектирован неправильно. Чтобы объяснить некоторый код, подумайте о написании псевдокода в вашей документации. Или используйте концепции более высокого уровня (например, автоматы, обход дерева и т. Д.). Самое большее (но это, как правило, бесполезно) добавить несколько очень упрощенных потоковых диаграмм в вашу документацию (тогда, конечно, вам нужно нарисовать эту идеализированную потоковую диаграмму самостоятельно).

Как уже упоминалось @albert,

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

https://sourceforge.net/p/moritz/discussion/572218/thread/6fad0579/?limit=25

Мориц является "дополнением" к известному инструменту doxygen. Он генерирует диаграммы функций и методов nassi shneiderman в исходном коде ac / C++ в виде html-файлов, которые могут быть включены в документацию программного обеспечения или просто добавлены в HTML-браузер. Особенности Морица:

  1. Мориц является "аддоном" к известному инструменту doxygen.
  2. Мориц поддерживает создание диаграмм, таких как nassi shneiderman или uml-подобных диаграмм активности
  3. Используется для многих языков программирования, таких как C/C++, Python, Matlab или Pascal.
  4. в качестве консольного приложения Moritz может использоваться как один инструмент в цепочке инструментов, управляемых пакетным или шел-скриптом
  5. Подробная настройка с помощью дополнительного xml-файла.

ШАГ 2:

Настройка конфигурации обязательна для создания файла точек.

ШАГ 3:

Из файла DOT мы можем сгенерировать блок-схему, используя Graphviz.

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