Внутренний формат файлов Visual Studio .ncb.
Я решил, что мне действительно нужно получить блок-схемы для обратного проектирования некоторого кода, который я унаследовал. У меня нет версии Team VS, поэтому я не могу использовать встроенные возможности Team с Visio. Поэтому я подумал, что я буду анализировать файлы.ncb (Информация о парсере) и составлять диаграммы с точками (из graphviz.org). Как трудно это может быть? Но я не могу найти документацию по внутренностям этого файла.
Я действительно не хочу использовать коммерческое приложение для создания блок-схем. И все бесплатные надстройки, которые я видел, предполагают, что я использую C# или VB. Тем не менее, я использую C и C++.
Я попробовал Microsoft "Visual Studio Learning Pack", в котором есть инструмент "Блок-схема визуального программирования". Но, похоже, он не работает с C++. Так близко!
Итак, есть ли у кого-нибудь указатели на формат файла или другие предложения (будьте вежливы!)?
2 ответа
Я не думаю, что у вас есть много шансов проанализировать файлы NCB. Они представлены в собственном двоичном формате, который изменяется и может меняться в каждой версии Visual Studio. Из того, что я где-то читал, возможно, что в VS2010 NCB будет отброшен, а информация о intellisense будет сохранена в обычной базе данных с использованием SQL Server Express.
Другой вариант, который вы могли бы рассмотреть, - это использовать какой-то другой инструмент, который анализирует ваш код и строит диаграммы и диаграммы UML. Doxygen делает это в некоторой степени, и есть множество коммерческих инструментов, которые также делают. У меня есть некоторый личный опыт работы с Rational Rose (который, возможно, уже не существует) и инструмент под названием Вместе. Этот список может помочь
Для структурного анализа в смысле "кто называет что", "кто наследует / перегружает где" и "кто читает / записывает глобальные переменные", я однажды использовал DeHydra (проект Mozilla) для анализа, а yed (www.yworks.com) для отображение графика. Оба бесплатны.
Dehydra работает под Linux и требует, чтобы ваш код прошел компиляцию gcc. Это не слишком серьезное препятствие, поскольку VC может генерировать make-файлы, которые можно модифицировать вручную для gnu make. В моем случае потребовалось некоторое исправление включаемых файлов, но я наконец смог получить нужную информацию.
У меня ушло 3 дня, чтобы заставить DeHydra работать, еще 2 дня, чтобы настроить make-файл и еще 3 дня, чтобы адаптировать код JavaScript, который внутри DeHydra извлекает необходимую информацию.
DeHydra + Javascript теперь обеспечивает в одном компиляторе запуск файла graphml, содержащего структуру кода, которую можно напрямую отображать и интерактивно манипулировать в yed.