ABSTRACT
With programs getting larger and often more complex with each new release, programmers need all the help they can get in understanding and transforming programs. Fortunately, modern development environments, such as Eclipse, incorporate tools for understanding, navigating, and transforming programs. These tools typically use program analyses to extract relevant properties of programs.
These tools are often invaluable to developers; for example, many programmers use refactoring tools regularly. However, poor results by the underlying analyses can compromise a tool's usefulness. For example, a bug finding tool may produce too many false positives if the underlying analysis is overly conservative, and thus overwhelm the user with too many possible errors in the program. In such cases it would be invaluable for the tool to explain to the user why it believes that each bug exists. Armed with this knowledge, the user can decide which bugs are worth pursing and which are false positives.
The contributions of this paper are as follows: (i) We describe requirements on the structure of an analysis so that we can produce reasons when the analysis fails; the user of the analysis determines whether or not an analysis's results constitute failure. We also describe a simple language that enforces these requirements; (ii) We describe how to produce necessary and sufficient reasons for analysis failure; (iii) We evaluate our system with respect to a number of analyses and programs and find that most reasons are small (and thus usable) and that our system is fast enough for interactive use.
- Keith D. Cooper, Mary W. Hall, Robert T. Hood, Ken Kennedy, Kathryn S. McKinley, John M. Mellor-Crummey, Linda Torczon, and Scott K. Warren. The ParaScope parallel programming environment. Proceedings of the IEEE, 81(2):244--263, 1993.]]Google Scholar
Cross Ref
- Luiz DeRose, Kyle Gallivan, Efstratios Gallopoulos, Bret A. Marsolf, and David A. Padua. FALCON: A MATLAB interactive restructuring compiler. In Languages and Compilers for Parallel Computing, pages 269--288, 1995.]] Google Scholar
Digital Library
- Jan Friso Groote and Misa Keinänen. Solving disjunctive/conjunctive boolean equation systems with alternating fixed points, 2004.]]Google Scholar
- Martin Hirzel, Daniel von Dincklage, Amer Diwan, and Michael Hind. Fast online pointer analysis. ACM Trans. Program. Lang. Syst., 29(2):11, 2007.]] Google Scholar
Digital Library
- Sorin Lerner, Todd Millstein, and Craig Chambers. Automatically proving the correctness of compiler optimizations, 2003.]]Google Scholar
- Shih-Wei Liao, Amer Diwan, Robert P. Bosch Jr., Anwar M. Ghuloum, and Monica S. Lam. SUIF explorer: An interactive and interprocedural parallelizer. In Principles Practice of Parallel Programming, pages 37--48, 1999.]] Google Scholar
Digital Library
- Angelika Mader. Verification of Modal Properties Using Infinite Boolean Equation Systems. PhD thesis.]]Google Scholar
- David A. Schmidt. Data flow analysis is model checking of abstract interpretations. In POPL ?98, pages 38--48, New York, NY, USA, 1998. ACM Press.]] Google Scholar
Digital Library
- David A. Schmidt and Bernhard Steffen. Program analysis as model checking of abstract interpretations. In SAS, pages 351--380, 1998.]]Google Scholar
- Sherry Shavor, Jim D?Anjou, Scott Fairbrother, Dan Kehn, John Kellerman, and Pat McCarthy. The Java Developers Guide to Eclipse. Addison-Wesley, May 2003.]] Google Scholar
Digital Library
- Standard performance evaluation corporation. SPECjbb2000 (java business benchmark). http://www.spec.org/jbb2000.]]Google Scholar
- Standard performance evaluation corporation. SPECjvm98 benchmarks. http://www.spec.org/jvm98.]]Google Scholar
- M.Weiser. Program slicing. In Proceedings of ICSE, pages 439--449. IEEE Computer Society Press, 1981.]] Google Scholar
Digital Library
Index Terms
Explaining failures of program analyses
Recommendations
Explaining failures of program analyses
PLDI '08With programs getting larger and often more complex with each new release, programmers need all the help they can get in understanding and transforming programs. Fortunately, modern development environments, such as Eclipse, incorporate tools for ...
Accelerating program analyses by cross-program training
OOPSLA '16Practical programs share large modules of code. However, many program analyses are ineffective at reusing analysis results for shared code across programs. We present POLYMER, an analysis optimizer to address this problem. POLYMER runs the analysis ...
Analyze-NOW-an environment for collection and analysis of failures in a network of workstations
ISSRE '96: Proceedings of the The Seventh International Symposium on Software Reliability EngineeringThis paper describes Analyze-NOW an environment for collection and analysis of failures/errors in a network of workstations. Descriptions cover the data collection methodology and the tool implemented to facilitate this process. Software tools used for ...







Comments