Question

J'essaie de tracer un graphique des dépendances entre les fichiers d'en-tête C à l'aide de graphviz.

En gros, ce que je fais est de consigner tout le #include qui apparaît et la condition (#if conditions je veux dire). Si un fichier en contient un autre, il devient son père dans le graphique et la condition potentielle est l'étiquette du bord.

J'obtiens un très gros graphique. Le problème provient des étiquettes de bord qui sont toujours horizontales (vous ne pouvez pas changer cela) et semblent toujours être alignées à gauche (j'ai essayé labelloc et labeljust mais cela ne change rien. Quel est le bon moyen de "centrer" l'étiquette d'un bord.

Pour éviter ce problème, j'ai essayé de rendre les conditions en tant que nœuds. Si Ah inclut Bh dans des conditions ANSI, il existe un lien entre Ah et ANSI, puis entre ANSI et Bh. Cela semble correct, mais le problème est que si Ch inclut Dh dans les mêmes conditions, je verrais un lien entre Ah et ANSI. , un de à Ch à ANSI; une de ANSI à B.h et une de ANSI à D.h. Le problème est que je ne sais pas si c'est A.h ou C.h qui inclut B.h. Existe-t-il un moyen de spécifier quelque chose comme passer par les nœuds (un lien de A.h à B.h qui passe sous ANSI peut-être en tirant parti de la transparence.)

Était-ce utile?

La solution

labelloc et labeljust n'ont pas de sens pour les bords. Voir ici , il est indiqué "GC". en tant que graphique, cluster ou "N" en tant que nœud, respectivement.

Vous pouvez toutefois envisager de générer des nœuds uniques pour chaque condition avec des étiquettes. Ensuite, il y aurait plusieurs nœuds avec différents "identificateurs de points", mais une même étiquette (texte de la condition), de sorte qu'il serait clair qu'il s'agisse de Ah ou de Ch . Bh . Je pense que vous serez satisfait des résultats, car vous avez déjà déclaré que tout semblait aller bien.

Bonne chance!

Autres conseils

J'ai eu beaucoup de succès en utilisant des nœuds uniques portant le même libellé, en fonction de ce que je représente. Un moyen intéressant d’obtenir l’illusion d’une étiquette de bord centrée selon vos besoins consiste à utiliser un nœud avec une forme = texte brut.

Vous pouvez également l'utiliser pour créer un point de jonction - attribuez un certain nombre d'arêtes au nœud en texte clair, comme indiqué ci-dessous:

digraph joins {

node [shape=box weight=bold fontsize=18 color=black fontcolor=black]
edge [color=black fontcolor=black ]
graph[size="6,4",ratio=fill,center=1]

tblXXMaster[shape=record label="tblXXMaster | <f0>intMasterXXNumber | <f1>boolXXsPrinting"] 
set[shape=plaintext label="sets flag"]
setandclear[shape=plaintext label="sets next value\nand clears flag"]
setandclear->tblXXMaster:f0
setandclear->tblXXMaster:f1

set->tblXXMaster:f1
use[shape=plaintext label="uses current\nnumber"]
tblXXMaster:f0->use
XX[shape=plaintext label="XXs\nflag"]
tblXXMaster:f1->XX

"wndManualReceipt\n.procOne"->setandclear
"wndManualDebit\n.procOne"->setandclear
"wndApproveXXs\n.procOne\n.d005TempSetBitToZero"->setandclear
"wndPrintXXs\n.procZero\n.procOne"->setandclear
"wndUnapproveXXs\n.procZero\n.procOne"->setandclear
"wndWriteXXForMultipleInvoices\n.procOne\n.d005TempSetBitToZero"->setandclear
"wndWriteManualXX\n.procOne\n.procZero"->setandclear

"wndConfirmXXPrint\n.applyLock"->set
"wndConfirmMultiInvoiceXXPrint\n.applyLock"->set

use->"wndConfirmXXPrint\n.nextNumber"
use->"wndConfirmManualXXPrint\n.nextNumber"
use->"wndConfirmMultiInvoiceXXPrint\n.nextNumber"
XX->"wndConfirmManualXXPrint\n.doPrint"
XX->"wndConfirmMultiInvoiceXXPrint\n.doPrint"
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top