Доработать код на Python для генерации dot-файла

10 000 руб. за проект
01 ноября 2020, 13:44 • 6 откликов • 113 просмотров
Необходимо доработать код проекта на Python, доступный по ссылке:
https://drive.google.com/drive/folders/1adx8KVQM-a...

Программа собирает информацию о структуре исходника на C++ для вывода в dot-файл, на основе которого затем формируется граф потока управления. Чтобы получить последний, применяется утилита dot (dot -Tpng testout.dot -o test.png). В рамках заказа требуется:
1) улучшить отображение элементов результирующего графа для каждой из охватываемых на текущий момент инструкций (if/else, for, do, while, case, switch). Посмотрим на пример графа в png-файле: в текущей версии программа не обеспечивает качественного представления потока управления в исходнике. Пути из if/else сливаются в одну линию вместо того, чтобы демонстрировать ветвление с учётом выполнения/невыполнения условия. Т.е. само проверяемое условие должно быть отображено в эллипсе или прямоугольнике, из которого выходят ветви (аналогичных улучшений требует switch/case). Пока ни для одной из инструкций не достигается представление её блока с использованием фигур, фактически весь поток управления сведён к одной непрерывной линии. В целевом решении обнаружение каждого нового блока, вводимого перечисленными инструкциями, должно добавлять в dot-файл информацию об этом участке потока с приведением параметров shape, label, width, height. В результате, открыв png-файл, можно будет почти мгновенно определить структуру кода и все трассы выполнения с точками входа и окончания работы программы. Подробности уровня геометрии и цветов сейчас не актуальны, обсудим после отклика;
2) расширить набор поддерживаемых инструкций возвратными break и continue с соблюдением визуального удобства и корректности результата.