ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
364780 Топик полностью
Evgeny_CD, Архитектор (28.10.2012 23:28 - 23:36, просмотров: 254) ответил Evgeny_CD на Сбылась мечта идиота! Визуализация графов прямо из БД. Neo4j -> БД, которая все хранит как граф, и встроенная поддержка GraphViz -->
На самом деле от графовой БД до всех моих супермегатулзов, которыми я тут моск ипу уже 6 или 7 лет, полшага. Берем совокупность строк C кода и говорим - "это - узел графа!". Парсим ее на теги. делим их на локальные (переменная внутри блока кода) и глобальные (для данного подмножества строк исходника). Задаем порты трех типов: * Прием управления - сюда можно войти (один порт) * Передача управления - отсюда можно выйти (несколько) * Вызов внешей сущности с возвратом (несколько) Заносим все в БД в свойства узла (ГОТОВЫЙ МЕХАНИЗМ ДЛЯ ЭТОГО ЕСТЬ!!!) - строки текста, внешние теги, порты. Берем совокупность узлов и говорим - "это файл исходника". Смотрим на список всех внешних тегов узлов и понимает, что есть локальные для данного файла теги, что глобальные. Прописываем связи между портами узлов. Визуализируем граф. Синтезируем файл исходника. Например, в свойствах узла ручкаи прописываем номер, который описывает его номер по порядку при генерации файла. Делаем карту файла - строки с такой по такую - узел #1 и т.д. Пишем скрипт практически для любого адекватного современного редактора, чтобы он по этой карте подсвечивал группу строк - узел. В одном окне открыт редактор, в другом - графю. Стоя на строке жмакаем хоткей - узел графа подсветился. Также подсвечиваем строки - порты внутри узла. Составляем карту портов на уровне файла. Это будут внешние по отношению к файлу теги - вызовы функций, константы, макросы и тайпдефы, которые изначально были заданы в другом файле. а теперь просто требуют включения хидера. Думаю, адеватный программер такое напитонит|натиклюет ваще за неделю. Оно будет неказисто, негламурно, но зато работать будет (в умелых руках) просто на порядок лучше, чем самый-самый "сликедит".