2014-09-02 7 views
6

recente ho iniziato a lavorare con flusso di dati di analisi API fornite da Roslyn e trovare i valori presentati in campo e posizioni WrittenInside campo un po 'ambiguo.Roslyn dati di analisi del flusso - valori ambigui per WrittenInside e delle posizioni dei campi

Considerate sotto frammento di codice nel metodo Main

1. int[] lcolSample = new int[10] { 0, 1, 2, 3, 4, 0, 1, 2, 3, 4}; 
2. for (int lintCount1 = 0; lintCount1 < 10; lintCount1++) 
3. { 
4.  Prog1(lintCount1); 
5.  int[] lcolSample1 = new int[10] { 0, 1, 2, 3, 4, 0, 1, 2, 3, 4 }; 
6.  lintCount3 = lintCount3 + 100; 
7.  lintCount1 = lintCount1 + 2; 
8.  lcolSample[lintCount1-1] = lcolSample1[lintCount1] + 100; 
9. } 
  1. Se eseguo DFA su per il nodo del ciclo, con conseguente oggetto l'analisi del flusso di dati non mostra mai lcolSample [] nel campo WrittenInside come simbolo che è scritto all'interno per ciclo continuo. Il motivo è che viene dichiarato al di fuori del nodo su cui viene eseguita l'analisi Dataflow. Ma, il campo ReadInside mostra questo simbolo. C'è un modo per conoscere tutti i simboli che sono stati modificati/scritti all'interno di un dato nodo anche se sono dichiarati al di fuori del nodo su cui viene eseguito DFA?

  2. lintCount1 variabile è scritto due volte (dichiarazione 2 e 7) e leggere due volte. La proprietà Locations su lintCount1 mostra solo il luogo in cui è dichiarata (dichiarazione 2). C'è un modo per trovare tutte le posizioni in cui è scritto lintCount1? Trova tutti i riferimenti di quel simbolo darebbe tutte le posizioni in cui viene utilizzato il simbolo, ma ho bisogno delle posizioni in cui è scritto ma non letto.

Questa è la mia prima domanda su questo forum. Si prega di chiedere altri dettagli se le informazioni fornite sopra non sono sufficienti. Grazie in anticipo ..

Analisi
+0

'lcolSample' non è mai scritto all'interno del ciclo. Tuttavia, si legge sulla linea 8. – JoshVarty

+0

modifica dei dettagli della realizzazione di cui da una variabile non è la stessa modificando la variabile. – SLaks

+0

@JoshVarty - sorry .. il mio errore .. riga modificata 8 - è stato concepito per essere come questo – Sreenath

risposta

4

flusso di dati oggetto non mostra mai lcolSample [] nel campo WrittenInside come simbolo che è scritto all'interno per ciclo

Sì, perché quel simbolo non è scritto all'interno del ciclo (cioè non c'è lcolSample = whatever lì). Un elemento dell'array rappresentato dal simbolo lcolSample è scritto nel loop, che è molto diverso. Non so come trovare tali scritture utilizzando l'analisi del flusso di dati di Roslyn.

Proprietà di posizioni su lintCount1 mostra solo il luogo in cui è stato dichiarato (istruzione 2). C'è un modo per trovare tutte le posizioni in cui è scritto lintCount1?

L'oggetto DataFlowAnalysis ti dà solo i simboli, l'accesso ai loro Location s non ha molto senso (perché quella posizione non ha nulla a che fare con l'analisi del flusso di dati).

Per me, sia le domande suonano come funzionalità richieste ragionevoli, si potrebbe desiderare di farli on the Roslyn repo.