Extended static checking

Extended static checking (ESC) is a static program analysis technique that attempts to find common programming errors like null-dereferences, array index bounds errors, type cast errors, deadlocks, and race conditions. An ESC tool is powered by program verification technology, yet it feels to the programmer like a type checker because of the limited ambition of finding only certain kinds of errors. This talk reports on some of the research results of and the current state of the Extended Static Checking project at DEC SRC.

[1]  John McCarthy,et al.  Correctness of a compiler for arithmetic expressions , 1966 .

[2]  James C. King,et al.  A Program Verifier , 1971, IFIP Congress.

[3]  Christopher Strachey,et al.  OS6 - an experimental operating system for a small computer. Part 1: general principles and structure , 1972, Comput. J..

[4]  Christopher Strachey,et al.  OS6 - an experimental operating system for a small computer. Part 2: input/output and filing system , 1972, Comput. J..

[5]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[6]  L. Peter Deutsch An interactive program verifier , 1973 .

[7]  Richard Lee Sites,et al.  Proving that computer programs terminate cleanly. , 1974 .

[8]  Ben Wegbreit,et al.  Property extraction in well-founded property sets , 1975, IEEE Transactions on Software Engineering.

[9]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[10]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[11]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[12]  Murray Hill,et al.  Lint, a C Program Checker , 1978 .

[13]  Steven M. German,et al.  Automating proofs of the absence of common runtime errors , 1978, POPL.

[14]  Charles Gregory Nelson,et al.  Techniques for program verification , 1979 .

[15]  Greg Nelson,et al.  Simplification by Cooperating Decision Procedures , 1979, TOPL.

[16]  Steven M. German,et al.  Stanford Pascal Verifier user manual , 1979 .

[17]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

[18]  John Nagle,et al.  Practical program verification: automatic program proving for real-time embedded software , 1983, POPL '83.

[19]  Greg Nelson,et al.  Combining satisability procedures by equality-sharing , 1984 .

[20]  Donald I. Good,et al.  Mechanical proofs about computer programs , 1984, Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.

[21]  Editors , 1986, Brain Research Bulletin.

[22]  Greg Nelson,et al.  A generalization of Dijkstra's calculus , 1989, ACM Trans. Program. Lang. Syst..

[23]  Cliff B. Jones,et al.  Essays in computing science , 1989 .

[24]  Mick J. Jordan An extensible programming environment for Modula-3 , 1990, SDE.

[25]  Wolfgang Polak,et al.  Formal Verification of Ada Programs , 1990, IEEE Trans. Software Eng..

[26]  J. J. Horning,et al.  Introduction to LCL, A Larch/C Interface Language , 1991 .

[27]  Greg Nelson,et al.  Systems programming in modula-3 , 1991 .

[28]  François Bourdoncle,et al.  Abstract debugging of higher-order imperative languages , 1993, PLDI '93.

[29]  Nicholas Sterling,et al.  WARLOCK - A Static Data Race Analysis Tool , 1993, USENIX Winter.

[30]  Nancy G. Leveson,et al.  An investigation of the Therac-25 accidents , 1993, Computer.

[31]  Yang Meng Tan,et al.  LCLint: a tool for using specifications to check code , 1994, SIGSOFT '94.

[32]  K. R Leino,et al.  Towards Reliable Modular Programs , 1995 .

[33]  Daniel Jackson Aspect: detecting bugs with abstract dependences , 1995, TSEM.

[34]  Matthias Felleisen,et al.  Catching bugs in the web of program invariants , 1996, PLDI '96.

[35]  Bill Kalsow,et al.  Some Useful Modula-3 Interfaces , 1996 .

[36]  Michael Burrows,et al.  Eraser: a dynamic data race detector for multi-threaded programs , 1997, TOCS.

[37]  Greg Nelson,et al.  Wrestling with rep exposure , 1998 .

[38]  Charles E. Leiserson,et al.  Detecting data races in Cilk programs that use locks , 1998, SPAA '98.

[39]  Bart Jacobs,et al.  Reasoning about Java classes: preliminary report , 1998, OOPSLA '98.