Sub-Turing Islands in the Wild

05/29/2019
by   Earl T. Barr, et al.
0

Recently, there has been growing debate as to whether or not static analysis can be truly sound. In spite of this concern, research on techniques seeking to at least partially answer undecidable questions has a long history. However, little attention has been given to the more empirical question of how often an exact solution might be given to a question despite the question being, at least in theory, undecidable. This paper investigates this issue by exploring sub-Turing islands – regions of code for which a question of interest is decidable. We define such islands and then consider how to identify them. We implemented Cook, a prototype for finding sub-Turing islands and applied it to a corpus of 1100 Android applications, containing over 2 million methods. Results reveal that 55% of the all methods are sub-Turing. Our results also provide empirical, scientific evidence for the scalability of sub-Turing island identification. Sub-Turing identification has many downstream applications, because islands are so amenable to static analysis. We illustrate two downstream uses of the analysis. In the first, we found that over 37% of the verification conditions associated with runtime exceptions fell within sub-Turing islands and thus are statically decidable. A second use of our analysis is during code review where it provides guidance to developers. The sub-Turing islands from our study turns out to contain significantly fewer bugs than `theswamp' (non sub-Turing methods). The greater bug density in the swamp is unsurprising; the fact that bugs remain prevalent in islands is, however, surprising: these are bugs whose repair can be fully automated.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/26/2021

Finding Bugs with Specification-Based Testing is Easy!

Automated specification-based testing has a long history with several no...
research
10/18/2021

Turing Tumble is Turing-Complete

It is shown that the toy Turing Tumble, suitably extended with an infini...
research
08/05/2021

HIPPODROME: Data Race Repair using Static Analysis Summaries

Implementing bug-free concurrent programs is a challenging task in moder...
research
12/13/2018

Attention Please: Consider Mockito when Evaluating Newly Released Automated Program Repair Techniques

Automated program repair (APR) has caused widespread concern in recent y...
research
12/09/2022

The Turing Deception

This research revisits the classic Turing test and compares recent large...
research
05/03/2021

Turing Number: How Far Are You to A. M. Turing Award?

The ACM A.M. Turing Award is commonly acknowledged as the highest distin...
research
11/15/2019

A Turing Test for Crowds

The realism and believability of crowd simulations underpins computation...

Please sign up or login with your details

Forgot password? Click here to reset