Esiste uno strumento che rappresenta visivamente tutti i potenziali percorsi di un particolare pezzo di codice? [chiuso]

2

Come esempio di ciò di cui ho bisogno e perché lo voglio, sto provando a determinare in che modo un certo valore (CurTotal) viene impostato (erroneamente). Mi sono inventato questi appunti per cercare di capire solo cosa sta succedendo:

** CurTotal è dichiarato in frmEntry.SetTotalControlsProperties ().

CurTotal ottiene il suo valore all'interno di tale metodo da wrkFile.getAmount (), e txtCurTot viene infine assegnato a tale valore.

SetTotalControlsProperties () è chiamato: **

0) From the main (frmCentral) form's openfrmUPC() method
1) From frmEntry's overloaded constructor: public frmEntry(string DSDtablename, string recType, int QOne, int sDesc, int sList)
2) Conditionally from within DoSave(), which is called from btnSave_Click() and PrepareForPrinting()
3) From frmEntry's saveDSD(), which is called from DoSave(), which is called by btnSave_Click and PrepareForPrinting()
4) From frmEntry's saveINV(), which is called from DoSave(), which is called by btnSave_Click and PrepareForPrinting()
5) From frmEntry's btnClear_Click()

Quindi i più "interessanti" sono 0, 2 e 3 (non penso che l'attività fasulla osservata avvenga in saveINV (), sono quasi sicuro che non sia nel costruttore, e io sappi che non è in btnclearclick ()).

Quindi la mia testa sta nuotando meglio di Mark Spitz (o, per te giovani whippersnapper là fuori, Michael Phelps) hai mai sognato di affettare la pallottola attraverso l'acqua clorata.

Rendere le cose più maligne per me, non posso passare attraverso questo codice (Windows CE, in esecuzione in modalità Windows XP, nessun emulatore), tranne nel mio cervello saturo d'acqua *. Quindi chiedo: Esiste uno strumento che rappresenta visivamente tutti i potenziali percorsi da cui SetTotalControlsProperties () è chiamato / CurTotal è impostato? La cosa migliore sarebbe uno strumento che forniva un elenco di quale percorso il codice impiegava per raggiungere un punto designato.

Domanda secondaria: perché non c'è un tag "spaghetti"? La gente è stata arrestata per meno di questa nella Russia comunista.

  • Cue (o è "coda"?) TYA "Over the Hill" qui.

UPDATE

Nuove prove che ci sia davvero bisogno di uno strumento del genere:

Il metodo che imposta la quantità di CurTot, ovvero wrkFile.getAmount () , fa questo:

public double getAmount()
{
    if (tAmount < 0)
    {
        SetTotalItemsAndTotalAmt();
    }
    return tAmount;
}

SetTotalItemsAndTotalAmt () assegna vals in base a questa query:

string dynSQL = "SELECT * FROM workTables WHERE name = '" + name + "'";

.. e "nome" qui non è passato a SetTotalItemsAndTotalAmt, né è una var locale.

Arggghhhhhhhhh !!!

    
posta B. Clay Shannon 30.08.2013 - 00:13
fonte

1 risposta

6

So I ask: Is there a tool that visually represents all the potential routes from which SetTotalControlsProperties() is called/CurTotal is set?

Sembra che tu stia descrivendo la funzione Call Hierarchy trovata in diversi IDE, tra cui Visual Studio:

SenonpuoiutilizzareunIDEconquestafunzione,esistono strumenti separati che genera grafici delle chiamate .

Best of all would be a tool that provided a listing of just what route the code took to get to a designated spot.

Ogni buon debugger mostrerà uno stack di chiamate che puoi saltare dentro, che è esattamente quello che stai chiedendo qui.

SetTotalItemsAndTotalAmt() assigns vals based on this query:

string dynSQL = "SELECT * FROM workTables WHERE name = '" + name + "'";

Umm ... Little Bobby Tables alert !!!

    
risposta data 30.08.2013 - 01:40
fonte

Leggi altre domande sui tag