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

Open Office и этот код помогает мне :)

<?php
    set_time_limit(0);
    function MakePropertyValue($name,$value,$osm){
    $oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
    $oStruct->Name = $name;
    $oStruct->Value = $value;
    return $oStruct;
    }
    function word2pdf($doc_url, $output_url){
    //echo $output_url;
    //Invoke the OpenOffice.org service manager
    $osm = new COM("com.sun.star.ServiceManager") or die ("Please be sure that OpenOffice.org is installed.\n");
    //Set the application to remain hidden to avoid flashing the document onscreen
    $args = array(MakePropertyValue("Hidden",true,$osm));
    //Launch the desktop
    $oDesktop = $osm->createInstance("com.sun.star.frame.Desktop");
    //Load the .doc file, and pass in the "Hidden" property from above
    $oWriterDoc = $oDesktop->loadComponentFromURL($doc_url,"_blank", 0, $args);
    //Set up the arguments for the PDF output
    $export_args = array(MakePropertyValue("FilterName","writer_pdf_Export",$osm));
    //print_r($export_args);
    //Write out the PDF
    $oWriterDoc->storeToURL($output_url,$export_args);
    $oWriterDoc->close(true);
    }
    $output_dir = "C:/wamp/www/vineesh/";
    $doc_file = "C:/wamp/www/vineesh/vineesh.docx";
    $pdf_file = "vineesh.pdf";
    $output_file = $output_dir . $pdf_file;
    $doc_file = "file:///" . $doc_file;
    $output_file = "file:///" . $output_file;
    word2pdf($doc_file,$output_file);
    ?>
0
задан Easi Test 13 July 2018 в 04:55
поделиться

2 ответа

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

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

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

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

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

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

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

1
ответ дан Basile Starynkevitch 17 August 2018 в 13:39
поделиться
  • 1
    Я согласился, но это требование клиента – Easi Test 13 July 2018 в 05:18
  • 2
    Затем вам нужно обсудить с вашим клиентом, чтобы объяснить это ему и понять, что ему нужно действительно (моя догадка заключается в том, что ему не нужна блок-схема, но что-то еще, возможно, очень упрощенная блок-схема, которая не должна автоматически извлекаться из исходного кода, но рисоваться вручную ...). В противном случае, что бы вы ни производили, он не удовлетворит его – Basile Starynkevitch 13 July 2018 в 05:20
  • 3
    Да, спасибо за быстрый ответ – Easi Test 13 July 2018 в 05:21
  • 4
    Но генерация блок-схемы из программы реального размера занимает месяцы работы (и результат бесполезен) – Basile Starynkevitch 13 July 2018 в 05:23
  • 5
    Внешний пакет "Мориц" ( sourceforge.net/projects/moritz ) существует, что может создавать блок-схемы на основе результатов doxygen. – albert 13 July 2018 в 08:00
1
ответ дан kgsharathkumar 6 September 2018 в 09:32
поделиться
Другие вопросы по тегам:

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