Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
Analysis of pointers and structures
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
A safe approximate algorithm for interprocedural aliasing
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimizing array bound checks using flow analysis
ACM Letters on Programming Languages and Systems (LOPLAS)
Context-sensitive interprocedural points-to analysis in the presence of function pointers
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Precise concrete type inference for object-oriented languages
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Data flow analysis for verifying properties of concurrent programs
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Precise interprocedural dataflow analysis via graph reachability
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficient context-sensitive pointer analysis for C programs
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Points-to analysis in almost linear time
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Using static single assignment form to improve flow-insensitive pointer analysis
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Typed memory management in a calculus of capabilities
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Data flow analysis for checking properties of concurrent Java programs
Proceedings of the 21st international conference on Software engineering
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Unification-based pointer analysis with directional assignments
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Ultra-fast aliasing analysis using CLA: a million lines of C code in a second
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Automatically validating temporal safety properties of interfaces
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
The SLAM project: debugging system software via static analysis
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A framework for call graph construction algorithms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Flow-sensitive type qualifiers
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Adoption and focus: practical linear types for imperative programming
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
ESP: path-sensitive program verification in polynomial time
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Deriving specialized program analyses for certifying component-client conformance
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Parametric shape analysis via 3-valued logic
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automatic extraction of object-oriented component interfaces
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
On sparse evaluation representations
Theoretical Computer Science
Systematic design of program analysis frameworks
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Checking and inferring local non-aliasing
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Using Programmer-Written Compiler Extensions to Catch Security Holes
SP '02 Proceedings of the 2002 IEEE Symposium on Security and Privacy
Verifying safety properties using separation and heterogeneous abstractions
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Software validation via scalable path-sensitive value flow analysis
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
Synthesis of interface specifications for Java classes
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Region-based shape analysis with tracked locations
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parameterized object sensitivity for points-to analysis for Java
ACM Transactions on Software Engineering and Methodology (TOSEM)
Static specification mining using automata-based abstractions
Proceedings of the 2007 international symposium on Software testing and analysis
Client-driven pointer analysis
SAS'03 Proceedings of the 10th international conference on Static analysis
Typestate verification: abstraction techniques and complexity results
SAS'03 Proceedings of the 10th international conference on Static analysis
Scaling Java points-to analysis using SPARK
CC'03 Proceedings of the 12th international conference on Compiler construction
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Tracking linear and affine resources with JAVA(X)
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Typestate-like analysis of multiple interacting objects
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Types and higher-order recursion schemes for verification of higher-order programs
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficient alias set analysis using SSA form
Proceedings of the 2009 international symposium on Memory management
Effective static deadlock detection
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Semantics, Types and Effects for XML Updates
DBPL '09 Proceedings of the 12th International Symposium on Database Programming Languages
Typestate-oriented programming
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Online inference and enforcement of temporal properties
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Generating test cases for specification mining
Proceedings of the 19th international symposium on Software testing and analysis
Monitor optimization via stutter-equivalent loop transformation
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Precise reasoning for programs using containers
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modular composition and state update in Plaid
Proceedings of the 4th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance
Faster alias set analysis using summaries
CC'11/ETAPS'11 Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software
Boosting the performance of flow-sensitive points-to analysis using value flow
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
An empirical study of object protocols in the wild
Proceedings of the 25th European conference on Object-oriented programming
Proceedings of the 25th European conference on Object-oriented programming
Mining temporal specifications from object usage
Automated Software Engineering
QVM: An Efficient Runtime for Detecting Defects in Deployed Systems
ACM Transactions on Software Engineering and Methodology (TOSEM)
Implementing a Language with Flow-Sensitive and Structural Typing on the JVM
Electronic Notes in Theoretical Computer Science (ENTCS)
Practical extensions to the IFDS algorithm
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
Statically checking API protocol conformance with mined multi-object specifications
Proceedings of the 34th International Conference on Software Engineering
Scalable flow-sensitive pointer analysis for java with strong updates
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Practical Integrated Analysis of Pointers, Dataflow and Control Flow
ACM Transactions on Programming Languages and Systems (TOPLAS)
Finding optimum abstractions in parametric dataflow analysis
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Thresher: precise refutations for heap reachability
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
SPLLIFT: statically analyzing software product lines in minutes instead of years
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
RedCard: redundant check elimination for dynamic race detectors
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Alias analysis for object-oriented programs
Aliasing in Object-Oriented Programming
Alias analysis: beyond the code
Aliasing in Object-Oriented Programming
Time- and space-efficient flow-sensitive points-to analysis
ACM Transactions on Architecture and Code Optimization (TACO)
Hi-index | 0.00 |
This article addresses the challenge of sound typestate verification, with acceptable precision, for real-world Java programs. We present a novel framework for verification of typestate properties, including several new techniques to precisely treat aliases without undue performance costs. In particular, we present a flow-sensitive, context-sensitive, integrated verifier that utilizes a parametric abstract domain combining typestate and aliasing information. To scale to real programs without compromising precision, we present a staged verification system in which faster verifiers run as early stages which reduce the workload for later, more precise, stages. We have evaluated our framework on a number of real Java programs, checking correct API usage for various Java standard libraries. The results show that our approach scales to hundreds of thousands of lines of code, and verifies correctness for 93% of the potential points of failure.