gsv*_*gsv 5 .net c# f# static-analysis
是否存在用于抽象静态分析的开源.NET(C#/ F#)库?目前我对常数传播算法很感兴趣.
它应该是抽象的(语言独立的)和开源的,因为我想用它作为自定义算法实现的基础.
谢谢.
Mono.Cecil库几乎就是您想要的。它是开源的,语言抽象,而且它的优点是超级精致、快速且稳定。
但这并不完全是您想要的,因为 Cecil 不分析 C#、VB.NET 或 F# 源代码,但它分析程序集文件(dll 和 exe)以及程序集中包含的 IL 代码。对于许多静态分析领域来说,这已经足够了,但对于常量传播(我猜你的意思是像const string STR = "MyString";or 之类的文字常量const int INT = 12345;),由于常量值是硬编码的而不是常量使用,因此在编译时会丢失信息。Cecil 也不适合抽象语法树分析。
您还可以查看Microsoft Roslyn。与 Cecil 相反,Roslyn 解析 C# 和 VB.NET 源代码,非常适合抽象语法树分析,但它不是开源的,不支持 F#,并且肯定会发生变化,直到它成为 RTM,我会说明年使用 Visual Studio 2014(但这只是我的猜测)。