OpenJML中的程序化静态检查

时间:2015-02-26 13:22:11

标签: java static-analysis jml

OpenJML手册(http://jmlspecs.sourceforge.net/OpenJMLUserGuide.pdf)暗示可以通过编程方式对Java编译单元进行静态检查。

不幸的是,静态检查的手动输入(第5.2.4节)是空的,似乎没有给出具体的例子。

有人知道一个简单的例子吗?

1 个答案:

答案 0 :(得分:1)

不幸的是,我无法帮助您使用OpenJML,即使在手册的新版本中,您引用的部分也是空的。

但是,您可以尝试其他工具,例如KeY program verifier,您可以使用KeY作为前端或programmatically as a back-end来静态地证明您的JML注释是正确的。所提到的页面上的代码,提供了KeY的符号执行API的程序化用法,乍一看可能看起来非常令人生畏,但它包含了许多你可能实际上不需要的样板,因为可用的所有选项都被解释了

对于验证(又名“静态检查”),您可以查看当前source distribution中的“key.core.example”包,该包可以帮助您入门。

据我所知,OpenJML和KeY是目前唯一一个用于静态检查JML注释的主动维护工具。还有其他的,比如ESC / Java2和KRAKATOA,但它们似乎已经过时了。 KeY是主动维护的,但does not cover all of the Java language与OpenJML形成对比(未来可能会有LLVM或字节码版本,因为有相应的计划,情况可能会有所改善)。