Protocol and typestate analyses often report some sequences of statements ending at a program point P that needs to be scrutinized, since P may be erroneous or imprecisely analyzed. Program slicing focuses only on the behavior at P by computing a slice of the program affecting the values at P. In this paper, we propose to restrict our attention to the subset of that behavior at P affected by one or several statement sequences, called a sequential criterion (SC). By leveraging the ordering information in a SC, e.g., the temporal order in a few valid/invalid API method invocation sequences, we introduce a new technique, program tailoring, to compute a tailored program that comprises the statements in all possible execution paths passing through at least one sequence in SC in the given order. With a prototyping implementation, Tailor, we show why tailoring is practically useful by conducting two case studies on seven large real-world Java applications. For program debugging and understanding, Tailor can complement program slicing by removing SC-irrelevant statements. For program analysis, Tailor can enable a pointer analysis, which is unscalable to a program, to perform a more focused and therefore potentially scalable analysis to its specific parts containing hard language features such as reflection.
Thu 21 Jul
|15:30 - 15:55|
Timothy JonesVictoria University of Wellington, Michael HomerVictoria University of Wellington, James NobleVictoria University of Wellington, Kim BrucePomona CollegeLink to publication DOI Pre-print Media Attached
|15:55 - 16:20|
|Link to publication DOI Pre-print Media Attached|
|16:20 - 16:45|
Casper Bach PoulsenTU Delft, Pierre NeronFrench Network and Information Security Agency (ANSSI), Andrew TolmachPortland State University, Eelco VisserDelft University of TechnologyLink to publication DOI Pre-print Media Attached