是否有模型检查软件(如Java Path Finder)但是对于C#?

时间:2013-09-03 19:37:56

标签: c# .net-4.5 model-checking jpf

<的修改> 关于这个问题是偏离主题和太基于意见,我会试着更清楚。我的目标是不确定是否存在这样的工具,我对什么是最好的工具的意见不感兴趣。当我写这个问题的时候,我花了很多时间在互联网上搜索,发现只有旧的死项目,但这样的java工具已经存在,我无法相信c#没有什么。 我认为这个问题与编程(代码验证)有关,并不是真的要求意见。此外,找到这些信息仍然不容易,我认为我的回答可以帮助节省一些人的时间。 也就是说,我不是stackoverflow的专家,如果你仍然认为问题/答案不适合网站随意删除它。 <的 /修改>

我找到了Moonwalker http://fmt.cs.utwente.nl/tools/moonwalker/,但最后一次更新已于2009年完成,我认为它不支持.net4.5(并且记录不完整)。

这个问题的答案提出CodeContracts作为一个模型检查工具Model checking tool c#,但我尝试过使用它,我认为它不是一个模型检查器,不像Java Path Finder for Java那样是。我想知道吗?可以像JPF一样使用吗?

我需要知道代码的某一部分是否以可能死锁的方式设计。让我们说这是一个学校的事情,即使我确定我的代码工作,我必须模型检查它。 (是的,我们被允许并鼓励他们在互联网上查看)。

2 个答案:

答案 0 :(得分:0)

正如用户@HighCore所说,经过大量的搜索后,我可以说,我所描述的成熟和最新的工具不存在。

答案 1 :(得分:0)

模型检查通常指的是显式方法,但是符号方法同样具有先进性,可以说更有能力建立实际代码的属性。

对于图灵完整语言,验证问题是不可判定的,因此模型检查工具通常接受功能较弱的语言作为输入,这意味着必须在检查之前将问题转换为该语言。这就是你没有遇到任何“C#模型检查工具”的原因。

您是否看过Boogie和C#类Dafny?这些主要用于使用Hoare logic进行注释。

或者,您可以考虑在(手动)将其转换为Promela后使用SPIN对C#解决方案进行模型检查。

列出了相关工具(例如C-> Promela翻译器)here