Я пытаюсь нарисовать график зависимостей между заголовочными файлами C с помощью graphviz.
По сути, я регистрирую все появляющиеся #include и условия (я имею в виду #if conditions). Если файл включает в себя еще один, он становится его отцом в графе, а потенциальным условием является метка края.
Получается довольно большой график. Проблема связана с краевыми метками, которые всегда горизонтальны (вы не можете это изменить) и всегда кажутся выровненными по левому краю (я пробовал labelloc и labeljust, но это ничего не меняет. Каков правильный способ «центрировать» этикетка одного края.
Чтобы избежать этой проблемы, я попытался отобразить условия как узлы. Если Ah включает Bh при условии ANSI, будет ссылка от Ah к ANSI, а затем от ANSI к Bh .. Это выглядит нормально, но проблема в том, что если Ch включает Dh при том же условии, я бы увидел ссылку от Ah к ANSI , один от до Ch до ANSI; один из ANSI в B.h и один из ANSI в D.h. Проблема в том, что я не знаю, включает ли B.h A.h или C.h. Есть ли способ указать что-то вроде прохода через узлы (ссылка от A.h на B.h, которая проходит под ANSI, возможно, использует прозрачность).