是否有替代的.Net 4代码合同静态分析器?

9
似乎只有适用于.NET 4.0代码合同的静态分析器才会在Visual Studio的Team Suite版本中提供 - 这使得它远远超出了我的团队预算。 是否有任何替代方案(开源,免费或价格合理),可以为按照契约设计的代码提供类似的静态分析(不一定使用.net代码合同)?我猜答案可能是否定的,因为只有当BCL本身具有合同时,完全价值才会实现 - 但是否有任何部分实现的替代方案?
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
2
我不确定那是否是您想要的,但您可以看一下Frama-C和其C语言的ACSL注释语言。 与.NET合同相比,ACSL合同不可执行(无法使用运行时断言检查它们),但更适用于静态分析(它们更具表现力,允许编写完整规范并进行静态检查。至少在理论上)。

乍一看,这看起来非常令人印象深刻 - 特别是所有插件。特别是价值分析插件是我想使用的东西之一。我一定会去试试!我看到它是一个通用的工具集,适用于C系列中的任何内容 - 有没有关于它如何与C#配合或要避免的常见陷阱的经验? - FinnNk
@FinnNk 我不确定“C家族中的任何东西”......它只适用于C。最初的努力是为了处理关键的嵌入式C,所以完全忽略了将C#或其他语言与其自己的合同语法接口化的问题。由于在.NET合同方面仍然有很多事情发生,因此现在还为时过早,尽管听起来像是一个有趣的话题。 - Pascal Cuoq
@FinnNk 关于陷阱,您将很快发现,在价值分析插件中,ACSL支持是相当部分性的(即使在可以在自动前向传播静态分析中支持的ACSL子集中)。作为典型的限制,价值分析仍然不理解后置条件中的 \result。您看过Jessie的教程吗?它有一些完整的简单函数规范,表示为合同。http://frama-c.cea.fr/jessie_tutorial_index.html - Pascal Cuoq

0

我正在使用VS2010 Premium中的静态分析功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,