Applying static analysis to large-scale, multi-threaded Java programs

Applying static analysis to large-scale, multi-threaded Java programs
复制标题

DOI:
10.1109/aswec.2001.948499
复制
发表时间:
2001-08
期刊:
Proceedings 2001 Australian Software Engineering Conference
影响因子:
--
通讯作者:
Cyrille Artho;Armin Biere
Cyrille Artho;Armin Biere
中科院分区:
其他
文献类型:
--
作者:
Cyrille Artho;Armin Biere

文献摘要

被引文献

相似文献

当尝试查找复杂软件中的错误时,静态分析非常有帮助。编写多线程程序很困难,因为线程调度使程序状态空间成倍增加,并且不正确的线程同步会产生难以发现的故障。程序检查器已经变得足够复杂,可以发现真实的大型软件中的错误。特别是 Jlint,一个非常快的 Java 程序检查器;可以以高度自动化的方式检查包裹。最初的版本 Jlint1 仍然缺乏对 Java 中同步语句的完整支持。我们扩展了 Jlint1 的模型以包含任意对象上的同步,并将我们的版本命名为 Jlint2。我们的统计分析证明这些扩展是相关且有用的。将Jlint2应用到各种大型软件包(包括Trilogy的商业软件包)中,发现了12个错误,其中两个与多线程有关。
Static analysis is a tremendous help when trying to find faults in complex software. Writing multi-threaded programs is difficult, because the thread scheduling increases the program state space exponentially, and an incorrect thread synchronization produces faults that are hard to find. Program checkers have become sophisticated enough to find faults in real, large-scale software. In particular, Jlint, a very fast Java program checker; can check packages in a highly automated manner. The original version, Jlint1, still lacked full support for synchronization statements in Java. We extended Jlint1's model to include synchronizations on arbitrary objects, and named our version Jlint2. Our statistical analysis proves that these extensions are relevant and useful. Applying Jlint2 to various large software packages, including commercial packages from Trilogy, found 12 faults, two of which related to multi-threading.