I want to find a way to find a way to visualize our architecture so we can identify "upward" references
Il punto è che l'utilizzo di qualsiasi tipo di strumento richiede un certo investimento (almeno il tuo tempo per padroneggiare quello strumento, il che significa probabilmente settimane di sforzi).
E ciò vale solo per una base software abbastanza "grande" (quindi se il volume totale del codice sorgente è di poche centinaia di migliaia di linee sorgente, potrebbe non valerne la pena, al di là di ciò che già conosci e utilizzi).
Is there an automated or semi automated way to do that? The codebase is a mixed java / C# / c++ / ansi-c codebase
Supponendo che lo sforzo sia utile (e non ne sono sicuro) si potrebbero prendere in considerazione diversi analizzatori di codice sorgente statici esistenti o configurarne o crearne uno sopra le basi esistenti (come grep, ack , ctags, GCC MELT -un linguaggio di dominio specifico per personalizzare GCC compiler-, Frama-C o Clang - framework di analizzatori di codici C statici-, Furfante , ecc ...)
Il punto è che scegli & l'apprendimento di qualsiasi strumento richiede probabilmente almeno un mese del tuo lavoro. Solo tu puoi sapere se vale la pena provare (certamente sì se la base di codice totale è superiore a un milione di righe, e probabilmente non se è inferiore a una linea di centomila).
Molto probabilmente (in particolare se si ha software che mescola diversi linguaggi di programmazione, ad esempio un codice C ++ chiamato dal codice C #) è necessario personalizzare, combinare o personalizzare diversi strumenti esistenti per le proprie esigenze. Ciò aumenta lo sforzo richiesto per diversi mesi.
BTW, potresti prendere in considerazione l'esecuzione di qualcosa al momento del commit del controllo della versione. Se stai utilizzando git , considera di avere alcuni ganci .
NB: tutti i prodotti sopra menzionati sono software libero o open source
PS: se intendi utilizzare (o provare) GCC MELT assicurati di contattarmi, poiché è il mio lavoro.