Esistono strumenti per visualizzare i metodi modello/classe e il loro utilizzo?

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

  •  09-06-2019
  •  | 
  •  

Domanda

Ho rilevato una vasta base di codice e vorrei avere una panoramica di come e dove vengono utilizzate determinate classi e i relativi metodi.

Esiste qualche buon strumento che possa in qualche modo visualizzare le dipendenze e disegnare un simpatico albero delle chiamate o qualcosa di simile?

Il codice è in C++ in Visual Studio se ciò aiuta a restringere la selezione.

È stato utile?

Soluzione

Ecco alcune opzioni:

L'ultimo, doxygen, è più uno strumento di documentazione automatica, ma è in grado di generare grafici delle dipendenze e diagrammi di ereditarietà.Inoltre è distribuito sotto licenza GPL, a differenza dei primi due che non sono gratuiti.

Altri suggerimenti

Quando ho usato Doxygen ha prodotto un elenco completo di chiamanti e chiamati.Penso che tu debba accenderlo.

Davide, grazie per i suggerimenti.Ho trascorso il fine settimana provando i programmi.

Doxygen sembra essere il più completo dei 3, ma lascia ancora alcune cose a desiderare per quanto riguarda i chiamanti dei metodi.

Tutti e 3 sembrano avere problemi con i modelli C++ a vari livelli.CC-Rider si è semplicemente bloccato nel bel mezzo dell'analisi e CodeDrawer non mostra molte delle relazioni.Doxygen ha funzionato piuttosto bene, ma anch'esso non ha trovato e mostrato tutte le relazioni e invece mi ha sommerso con un sacco di riferimenti macro finché non li ho filtrati.

Quindi, forse dovrei chiarire un po' "grande base di codice" per eventuali altri suggerimenti:>100.000 righe di codice complessivamente distribuite su più di 100 file modello più diversi file di classe effettivi che mettono insieme il tutto.

Eventuali altri strumenti là fuori, che potrebbero essere all'altezza del compito e potrebbero fare meglio (in modo più approfondito)?Oh e nello specifico:qualcosa che capisca le interfacce IDL e COM?

Quando ho usato Doxygen ha prodotto un elenco completo di chiamanti e chiamati.Penso che tu debba accenderlo.

L'ho fatto ovviamente, ma come ho già detto, doxygen non considera le interfacce tra gli oggetti come sono definite nell'IDL.Mostra "solo" le chiamate dirette C++.

Non fraintendermi, è già sorprendente ciò che fa, ma non è ancora completo dal mio punto di vista di alto livello, cercando di comprendere bene come tutto si incastra.

In Java inizierei con JDepend.In .NET, con NDepend.Non conosco il C++.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top