Python: Gerando Diagrama de Dependências

O Graphviz (http://www.graphviz.org/) é um daqueles programas que não param de me surpreender. Volta e meia encontro algum programa fazendo uso legal dele de alguma forma legal e inesperada. Buscando algumas ferramentas para analisar código, encontrei o site (http://www.tarind.com/depgraph.html) de Toby Dickenson, que tem dois scripts para gerar um diagrama de dependências em scripts Python.

Os scripts do site podem ser usados diretamente como estão para gerar os diagramas. As instruções são simples e listadas no site. Um único detalhe interessante de mencionar é que ele sugere no passo 2 uma customização mais ampla do script via programação para melhorar a apresentação dos diagramas.

Eu usei os dois scripts sem programar nada, mas a apresentação pode melhorar bastante meramente incluindo alguns módulos na lista exclude, dentro do script “py2depgraph.py”.

Mexendo no ‘depgraph2dot.py’, dá para aumentar a altura do diagrama. Isso pode ser útil, pois programas com muitos módulos podem ficar muito compridos e dificultar a leitura. Para fazer isso experimente aumentar o valor retornado pela função alien nesse script. Teste os resultados com valores entre 1 e 10.

Se o seu programa utiliza muitos pacotes diferentes, também pode ser interessante colorir as arestas que saem de cada módulo. Para isso acrescente as seguintes linhas na rotina edge_attributes:

if self.colored:
   a.append('color="%s"' % self.color(k,type))

isso facilita muito a compreensão do diagrama quando muitas arestas se cruzam.

Ainda pretendo tentar entender melhor o programa e o próprio Graphviz de uma maneira geral. É uma ferramenta muito poderosa.

Deixe uma resposta

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s