适用于Android的OpenJML / Jessie

时间:2018-12-17 16:54:45

标签: android formal-verification openjml

我正在尝试静态检查Java我的代码。唯一的问题是它使用android sdk,而OpenJML无法识别android类。例如,这是我得到的日志的一部分:

app/src/main/java/rup/ino/catornot/MainActivity.java:3: error: package android.graphics does not exist
import android.graphics.Bitmap;
                   ^
app/src/main/java/rup/ino/catornot/MainActivity.java:4: error: package android.graphics does not exist
import android.graphics.BitmapFactory;
                   ^
app/src/main/java/rup/ino/catornot/MainActivity.java:5: error: package android.graphics does not exist
import android.graphics.Canvas;
                   ^
app/src/main/java/rup/ino/catornot/MainActivity.java:6: error: package android.hardware does not exist
import android.hardware.Camera;

有没有办法将“ OpenJML”与android SDK“链接”?也许还有其他与android兼容的工具?也许Jessie / Krakatoa可以做到吗?

1 个答案:

答案 0 :(得分:0)

一段时间后,我得出结论,无法从以下两个方面正式验证Android SDK:

  • OpenJML不支持并发,而Android严重依赖异步调用。
  • 从OpenJML存储库(https://github.com/OpenJML/OpenJML)来看,似乎OpenJML主要由OpenJDK制成,而Android使用自己的Java实现以及Dalvik VM。因此,对于OpenJML,支持Android可能会更加困难

但是有解决方案!我个人所做的是在Android上创建抽象。只需创建一堆用JML建模的接口,证明基于它们的主要逻辑,然后用Android代码实现所有这些接口(希望实现正确)。