返回
Reasoning About Exceptional Behavior At the Level of Java Bytecode with ByteBack
DOI:10.1145/3712015.png)
摘要
En 中文
程序的非正常行为可能会显著增加其控制流,进而影响对其正确性的准确推理。另一方面,对实际程序进行形式化验证可能涉及异常处理——这是现代编程语言中普遍存在的特性。本文提出了一种新颖的方法来验证Java程序的异常行为,该方法扩展了我们先前在BYTEBAcx上的工作。BYTEBAcx基于程序的字节码运行,同时提供在源代码层面指定预期行为的方式;这一方法使BYTEBAcx区别于大多数针对源代码的当前最先进的验证器。为了以一种便于形式化推理的方式明确建模程序的异常行为,我们引入了Vimp:一种高级字节码表示,它扩展了Soot框架的Jimple,并加入了面向验证的特性,从而在字节码和Boogie中间验证语言之间充当中间层。通过这一中间层对字节码进行操作,带来了对新语言版本和变体的灵活性和适应性:正如我们的实验所示,BYTEBAcx能够验证涉及异常行为的所有Java版本程序,以及Scala和Kotlin(另外两种流行的JVM语言)程序。
Keyword:
Deductive Verification
Java Bytecode
Exceptions

