Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NET的常量传播库_C#_.net_F#_Static Analysis - Fatal编程技术网

C# NET的常量传播库

C# NET的常量传播库,c#,.net,f#,static-analysis,C#,.net,F#,Static Analysis,是否存在用于抽象静态分析的开源.NET(C#/F#)库?目前我对常数传播算法感兴趣 它应该是抽象的(独立于语言)和开源的,因为我想将它用作定制算法实现的基础 谢谢。图书馆几乎就是你想要的。它是开源的、语言抽象的,并且作为奖励,它是超级精巧、快速和稳定的 但这并不完全是您想要的,因为Cecil不分析C#、VB.NET或F#源代码,而是分析程序集中包含的程序集文件(dll和exe)和IL代码。对于许多静态分析区域来说,这已经足够了,但是对于常量传播(我猜您是指像conststring STR=“My

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

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

谢谢。

图书馆几乎就是你想要的。它是开源的、语言抽象的,并且作为奖励,它是超级精巧、快速和稳定的

但这并不完全是您想要的,因为Cecil不分析C#、VB.NET或F#源代码,而是分析程序集中包含的程序集文件(dll和exe)和IL代码。对于许多静态分析区域来说,这已经足够了,但是对于常量传播(我猜您是指像
conststring STR=“MyString”
constint int int=12345;
)这样的文字常量,由于常量值是硬编码的,而不是常量用法,因此在编译时会丢失信息。塞西尔也不适合分析


你也可以看看。与Cecil相反,Roslyn解析C#和VB.NET源代码,非常适合进行分析,但它不是开源的,不支持F#,并且在成为RTM之前肯定会有所更改,我想明年使用Visual Studio 2014(但这只是我的猜测).

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

更新

CCI项目更多地被设计为编译器和工具作者的库,而不是现成的使用


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

谢谢您的回答。所有的图书馆都很有趣。但是我发现更多的高级抽象。你说的“我发现更多的高级抽象”是什么意思?对不起。部分答案丢失了。我的意思是,我试图找到一些类似pranlib for ocaml()的想法:为抽象的、与语言无关的数据结构实现的分析集。谢谢。这是个好主意。是否实施或计划了任何分析?@gsv我认为没有,尽管我会询问项目维护人员项目的计划。事实上,我不认为CCI项目适合你,我认为你正在寻找类似Mono.宪兵项目的东西。看我的编辑。你坚持开源?