Existem ferramentas para visualizar métodos de modelo/classe e seu uso?

StackOverflow https://stackoverflow.com/questions/35745

  •  09-06-2019
  •  | 
  •  

Pergunta

Assumi uma grande base de código e gostaria de obter uma visão geral de como e onde certas classes e seus métodos são usados.

Existe alguma boa ferramenta que possa de alguma forma visualizar as dependências e desenhar uma bela árvore de chamadas ou algo semelhante?

O código está em C++ no Visual Studio, se isso ajudar a restringir qualquer seleção.

Foi útil?

Solução

Aqui estão algumas opções:

O último, doxygen, é mais uma ferramenta de documentação automática, mas é capaz de gerar gráficos de dependências e diagramas de herança.Também é licenciado sob a GPL, ao contrário dos dois primeiros, que não são gratuitos.

Outras dicas

Quando usei o Doxygen, ele produziu uma lista completa de chamadores e destinatários.Eu acho que você tem que ligá-lo.

Davi, obrigado pelas sugestões.Passei o fim de semana testando os programas.

Doxygen parece ser o mais abrangente dos 3, mas ainda deixa algumas coisas a desejar em relação aos chamadores de métodos.

Todos os três parecem ter problemas com modelos C++ em graus variados.O CC-Rider simplesmente travou no meio da análise e o CodeDrawer não mostra muitos dos relacionamentos.O Doxygen funcionou muito bem, mas também não encontrou e mostrou todas as relações e, em vez disso, me sobrecarregou com muitas referências de macro até que eu as filtrei.

Então, talvez eu deva esclarecer um pouco a "grande base de código" para eventuais outras sugestões:>100 mil linhas de código no geral espalhadas por mais de 100 arquivos de modelo, além de vários arquivos de classe reais reunindo tudo.

Alguma outra ferramenta disponível que possa estar à altura da tarefa e fazer melhor (de forma mais completa)?Ah, e especificamente:algo que entenda interfaces IDL e COM?

Quando usei o Doxygen, ele produziu uma lista completa de chamadores e destinatários.Eu acho que você tem que ligá-lo.

Claro que fiz isso, mas como mencionei, o doxygen não considera interfaces entre objetos conforme definidos no IDL.Ele "apenas" mostra chamadas diretas de C++.

Não me entenda mal, já é incrível o que faz, mas ainda não está completo na minha visão de alto nível, tentando entender como tudo se encaixa.

Em Java eu ​​começaria com JDepend.No .NET, com NDepend.Não sei sobre C++.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top