首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET常量传播库

.NET常量传播库
EN

Stack Overflow用户
提问于 2013-08-27 19:35:24
回答 2查看 314关注 0票数 5

是否存在用于抽象静态分析的开源.NET (C#/F#)库?目前我对常量传播算法很感兴趣。

它应该是抽象的(独立于语言的)和开源的,因为我想使用它作为自定义算法实现的基础。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-08-28 01:33:32

Mono.Cecil几乎就是您想要的。它是开源的,语言抽象,作为一个额外的好处,它超级完美,快速和稳定。

但它并不完全是您想要的,因为Cecil不分析C#、VB.NET或F#源代码,但它分析程序集文件(dll和exe)和程序集中包含的IL代码。对于许多静态分析区域,这就足够了,但是对于常量传播(我猜您指的是文字常量,如const string STR = "MyString";const int INT = 12345;),会在编译时丢失信息,因为常量值是硬编码的,而不是常量的用法。Cecil也不适用于Abstract Syntax Tree分析。

你也可以看看Microsoft Roslyn。与塞西尔相反,Roslyn解析C#和VB.NET源代码,非常适合Abstract Syntax Tree分析,但它不是开源的,不支持F#,并且在明年的Visual Studio2014中可能会发生变化(但这只是我的猜测)。

票数 2
EN

Stack Overflow用户

发布于 2013-08-30 07:24:15

您应该看看公共编译器基础设施:代码和AST组件project。它提供了一个对象模型,用于以独立于语言的形式对.NET程序集进行静态分析。

更新

CCI项目更多地被设计为编译器和工具作者的库,而不是开箱即用的库。

也许您正在寻找更像Mono.Gendarme的东西,它是一个类似于FxCop的开源静态分析引擎。它是作为Mono-Tools项目集合的一部分进行维护的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18464278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档