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 !!!