ABSTRACT
This paper presents the design of SAFE (Scalable and Flexible Error Detection), a static analysis tool targeting lightweight program verification and bug finding for Java. The tool utilizes two types of analysis: a simple "structural" checker based on pattern-matching, and an interprocedural flow-sensitive dataflow solver which integrates typestate checking and alias analysis. We describe how the tool integrates into a team development platform for analysis of batch builds, and user interface support built on the Eclipse platform.
- Apache Ant. http://ant.apache.org/.Google Scholar
- T. Ball and S. K. Rajamani. The slam project: debugging system software via static analysis. In POPL '02: Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 1--3, New York, NY, USA, 2002. ACM Press. Google ScholarDigital Library
- D. Chase, M. Wegman, and F. Zadeck. Analysis of pointers and structures. In Proc. Conf. on Prog. Lang. Design and Impl., pages 296--310, New York, NY, 1990. ACM Press. Google ScholarDigital Library
- H. Chen and D. Wagner. Mops: an infrastructure for examining security properties of software. In CCS '02: Proceedings of the 9th ACM conference on Computer and communications security, pages 235--244, New York, NY, USA, 2002. ACM Press. Google ScholarDigital Library
- CodeReview. http://www128.ibm.com/developerworks/rational/library/05/higgins.Google Scholar
- CruiseControl. http://cruisecontrol.sourceforge.net.Google Scholar
- M. Das, S. Lerner, and M. Seigle. ESP: Path-sensitive program verification in polynomial time. In Proc. Conf. on Prog. Lang. Design and Impl., pages 57--68, June 2002. Google ScholarDigital Library
- J. Field, D. Goyal, G. Ramalingam, and E. Yahav. Typestate verification: Abstraction techniques and complexity results. In Proc. of SAS'03, volume 2694 of LNCS, pages 439--462. Springer, June 2003. Google ScholarDigital Library
- S. Fink, E. Yahav, N. Dor, G. Ramalingam, and E. Geay. Typestate checking in the presence of aliasing. in preparation, 2005.Google Scholar
- M. Fowler. Continuous Integration. http://www.martinfowler.com/articles/continousIntegration.html.Google Scholar
- S. Hallem, B. Chelf, Y. Xie, and D. Engler. A system and language for building system-specific, static analyses. In PLDI '02: Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, pages 69--82, New York, NY, USA, 2002. ACM Press. Google ScholarDigital Library
- N. Heintze and O. Tardieu. Ultra-fast aliasing analysis using CLA: A million lines of C code in a second. 36(5):254--263, May 2001. In Conference on Programming Language Design and Implementation (PLDI). Google ScholarDigital Library
- D. Hovemeyer and W. Pugh. Finding bugs is easy. In OOPSLA '04: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, pages 132--136, New York, NY, USA, 2004. ACM Press. Google ScholarDigital Library
- JLint. http://www.sureshotsoftware.com/javalint.Google Scholar
- O. Lhoták and L. Hendren. Scaling Java points-to analysis using SPARK. In 12th International Conference on Compiler Construction (CC), volume 2622 of LNCS, pages 153--169, Apr. 2003. Google ScholarDigital Library
- Parasoft JTest. http://www.parasoft.com/jsp/products/home.jsp?product=Jtest.Google Scholar
- PMD. http://pmd.sourceforge.net/.Google Scholar
- G. Ramalingam, A. Warshavsky, J. Field, D. Goyal, and M. Sagiv. Deriving specialized program analyses for certifying component-client conformance. In Proc. Conf. on Prog. Lang. Design and Impl., volume 37, 5, pages 83--94, June 2002. Google ScholarDigital Library
- RCP. http://www.eclipse.org/rep.Google Scholar
- N. Rutar, C. B. Almazan, and J. S. Foster. A comparison of bug finding tools for java. In ISSRE '04: Proceedings of the 15th IEEE International Symposium on Software Reliability Engineering, November 2004. Google ScholarDigital Library
- R. E. Strom and S. Yemini. Typestate: A programming language concept for enhancing software reliability. IEEE Trans. Software Eng., 12(1):157--171, 1986. Google ScholarDigital Library
- W. Weimer and G. C. Necula. Finding and preventing run-time error handling mistakes. In OOPSLA '04: Proceedings of the 19th annual ACM SIGPLAN Conference on Object-oriented programming, systems, languages, and applications, pages 419--431, New York, NY, USA, 2004. ACM Press. Google ScholarDigital Library
Index Terms
- Continuous code-quality assurance with SAFE
Recommendations
A safe approximate algorithm for interprocedural pointer aliasing
20 Years of the ACM SIGPLAN Conference on Programming Language Design and Implementation 1979-1999: A SelectionDuring execution, when two or more names exist for the same location at some program point, we call them aliases. In a language which allows arbitrary pointers, the problem of determining aliases at a program point is P-space-hard [Lan92]. We present an ...
A safe approximate algorithm for interprocedural aliasing
PLDI '92: Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementationDuring execution, when two or more names exist for the same location at some program point, we call them aliases. In a language which allows arbitrary pointers, the problem of determining aliases at a program point is ρ-space-hard [Lan92]. We present an ...
A safe approximate algorithm for interprocedural aliasing
During execution, when two or more names exist for the same location at some program point, we call them aliases. In a language which allows arbitrary pointers, the problem of determining aliases at a program point is ρ-space-hard [Lan92]. We present an ...
Comments