java - OpenJML 中的编程静态检查

标签 java static-analysis jml

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

不幸的是,静态检查的手动条目(第 5.2.4 节)是空的,并且似乎没有为此给出具体示例。

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

最佳答案

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

但是,您可以尝试其他工具,例如 KeY program verifier您可以使用它静态地证明您的 JML 注释是正确的,可以使用 Key 作为前端,也可以使用 programmatically as a back-end .所引用页面上的代码显示了 KeY 的符号执行 API 的编程用法,乍一看可能看起来很吓人,但它包含许多您实际上可能不需要的样板文件,因为解释了所有可用的选项.

为了验证(又名“静态检查”),您可以查看当前 source distribution 中的“key.core.example”包这应该让你开始。

据我所知,OpenJML 和 KeY 是目前唯一积极维护的用于静态检查 JML 注释的工具。还有其他的,比如 ESC/Java2 和 KRAKATOA,但它们似乎已经过时了。 Key 得到积极维护,但是 does not cover all of the Java language对比OpenJML(以后可能会有LLVM或者bytecode的版本,既然有相应的规划,那么情况可能会有所改善)。

关于java - OpenJML 中的编程静态检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28743631/

相关文章:

java - 弄清楚为什么当我不希望调用 JSF getter 时会调用它们

c++ - llvm 在 C++ 中提取结构元素和结构大小

java - JML 后置条件包含类方法调用

c# - .NET 静态分析——保证对程序中函数的调用

java - JML 评估\old(表达式[Id])

java - JML 不是空变体?

java - 包属性未检测到 Log4j2 (2.1) 自定义插件

java - 为什么我不能在泛型方法中对 Integer 和 Double 使用 + 运算符?

java - java中如何从socket读取多种类型的数据

compiler-construction - 如何获得一个程序的过程间控制流图并使用llvm对其进行数据流分析?