La maggior parte degli strumenti di analisi del codice statico che analizzano le dipendenze di classe generano coppie di classi di dipendenza in cui ciascuna coppia rappresenta una dipendenza diretta tra due classi. Date queste coppie di dipendenze, è semplice calcolare il numero di dipendenze dirette di una particolare classe. Tuttavia, se dobbiamo calcolare il numero di dipendenze indirette di una classe, mi sono reso conto che l'algoritmo è piuttosto complesso. Permettetemi di chiarire cosa intendo per dipendenza indiretta:
Abbiamo seguito le coppie di classe di dipendenza diretta :
La classe A dipende dalla classe B
La classe B dipende dalla classe C
La classe B dipende dalla classe D
In questo caso, la classe A dipende direttamente dalla classe B e indirettamente dalle classi C e D.
Definirei il numero di dipendenze dirette per la classe A come 1 e il numero di dipendenze indirette per la classe A come 2.
Vorrei calcolare le dipendenze indirette per ogni classe nei sistemi che analizzo.
La complessità deriva principalmente dalle dipendenze cicliche.
Ad esempio, se dovessimo calcolare il numero di dipendenze indirette per la classe A:
Scenario 1:
A - > B
B - > C
C - > D
D - > B
Scenario 2:
A - > B
B - > C
B - > D
C - > E
D - > F
E - > G
F - > G
G - > H
Scenario 3:
A - > B
B - > C
C - > A
Questo può essere risolto usando la teoria dei grafi? Ad esempio, rappresentano tutte le coppie di dipendenze utilizzando un grafico diretto e calcolano la somma ricorsiva di outdegrees dei nodi adiacenti. Altre idee sono ben accette.
Fammi sapere qual è il modo migliore per ottenerlo.