2013-08-27 10 views
5

Se esiste una libreria .NET (C#/F #) open source per l'analisi statica astratta? Attualmente sono interessato all'algoritmo di propagazione costante.Libreria di propagazione costante per .NET

Dovrebbe essere astratto (linguaggio indipendente) e open source perché voglio usarlo come base per l'implementazione dell'algoritmo personalizzato.

Grazie.

+0

Insistete sull'open source? –

risposta

2

La libreria Mono.Cecil è quasi quello che vuoi. È open source, il linguaggio è astratto e, come bonus, è super lucido, veloce e stabile.

Ma non è esattamente quello che vuoi perché Cecil non analizza il codice sorgente C#, VB.NET o F #, ma analizza i file degli assembly (dll ed exe) e il codice IL contenuto negli assembly. Per molte aree di analisi statica sarebbe sufficiente, ma per una propagazione costante (suppongo si intenda una costante letterale come const string STR = "MyString"; o const int INT = 12345;) c'è una perdita di informazioni in fase di compilazione poiché il valore costante è codificato al posto dell'uso costante. Cecil non è adatto per l'analisi Abstract Syntax Tree.

Puoi anche guardare Microsoft Roslyn. Contrariamente a Cecil, Roslyn analizza il codice sorgente C# e VB.NET, è molto adatto per l'analisi Abstract Syntax Tree, ma non è open source, non supporta F #, ed è certamente soggetto a modifiche finché non diventerà RTM, io dire l'anno prossimo con Visual Studio 2014, (ma questa è solo una mia ipotesi).

+0

Grazie per la risposta. Tutte le biblioteche sono molto interessanti. Ma trovo più astrazione di alto livello. – gsv

+0

Cosa intendi con "Trovo più astrazione di alto livello"? –

+0

Siamo spiacenti. Una parte della risposta è stata persa. Voglio dire che cerco di trovare qualcosa come Pranlib per ocaml (https://code.google.com/p/ocaml-pranlib/): l'insieme di analisi implementato per strutture di dati astratte, indipendenti dal linguaggio. – gsv

1

Si dovrebbe dare un'occhiata al Common Compiler Infrastructure: codice e componenti AST project. Fornisce un modello a oggetti per eseguire analisi statiche su assiemi .NET in un formato indipendente dalla lingua.

Aggiornamento

Il CCI progetti sono concepiti più come librerie per il compilatore e utensili autori, piuttosto che l'utilizzo out-of-the-box.

Forse stai cercando qualcosa di più come Mono.Gendarme che è un motore di analisi statica open source, simile a FxCop. Viene gestito come parte della raccolta di progetti Mono-Tools.

+0

Grazie. È una buona idea. Qualche analisi è stata implementata o pianificata? – gsv

+0

@gsv Non penso che ci sia anche se chiederei al manutentore del progetto sui piani per il progetto. In realtà non penso che il progetto CCI sia adatto a te, penso che tu stia cercando qualcosa come il progetto Mono.Gendarme. Vedi la mia modifica. –