Разобраться в новом коде

После непродолжительного поиска я нашел несколько скриптов, которые рисуют такой граф. На вопрос в твиттере мне подсказали ещё несколько вариантов: doxygen и скрипт graph-llvm-ir для LLVM IR.

Все найденные варианты работают примерно одинаково: строят синтаксическое дерево и на его основе рисуют картинку с графом. При ближайшем рассмотрении выяснилось, что код pycflow2dot давно не обновлялся и не работает с последними версиями питоновских модулей. codeviz тоже давно не обновлялся и у меня не получилось его попробовать. А вот Doxygen оказался очень простым в использовании. Нужно выполнить команду doxygen -g, которая создаст шаблон конфига, потом включить в этом конфиге опции HAVEDOT, EXTRACTALL, EXTRACTPRIVATE, EXTRACTSTATIC, CALL_GRAPH и запустить doxygen Doxyfile в директории с исходниками. После успешного выполнения программа создаст две директории: latex и html. В первой будут исходники для сборки pdf документа, а во второй документация для просмотра в браузере. Для теста я запускал doxygen в репозитории проекта CRIU (~67 KLOC) и создание документации заняло 4 минуты. Для каждого исходного файла создается отдельный раздел с документации и там можно посмотреть и описания функций, если они аннотированы в коде, и графы взаимосвязей функций. Пользоваться удобно.

Теги: softwareopensourcefeed