Java Typestate Checker

Detecting programming errors and vulnerabilities in software is increasingly important, and building tools that help developers with this task is a crucial area of investigation on which the industry depends. In object-oriented languages, one naturally defines stateful objects where the safe use of methods depends on their internal state; the correct use of objects according to their protocols is then enforced at compile-time by an analysis based on behavioral types.

[1]  Sea Ling,et al.  A survey on the use of access permission-based specifications for program verification , 2020, J. Syst. Softw..

[2]  Torbjörn Ekman,et al.  The JastAdd Extensible Java Compiler , 2007 .

[3]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[4]  Michael D. Ernst,et al.  Practical pluggable types for java , 2008, ISSTA '08.

[5]  Cliff B. Jones,et al.  Specification and Design of (Parallel) Programs , 1983, IFIP Congress.

[6]  Peter W. O'Hearn,et al.  Permission accounting in separation logic , 2005, POPL '05.

[7]  Éric Tanter,et al.  Foundations of Typestate-Oriented Programming , 2014, ACM Trans. Program. Lang. Syst..

[8]  Frank Piessens,et al.  VeriFast: A Powerful, Sound, Predictable, Fast Verifier for C and Java , 2011, NASA Formal Methods.

[9]  Dimitrios Kouzapas,et al.  Typechecking protocols with Mungo and StMungo , 2016, PPDP.

[10]  Torbjörn Ekman,et al.  Rewritable Reference Attributed Grammars , 2004 .

[11]  Ross Tate,et al.  Java and scala's type systems are unsound: the existential crisis of null pointers , 2016, OOPSLA.

[12]  Luca Cardelli Type systems , 1996, CSUR.

[13]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[14]  Torbjörn Ekman,et al.  Rewritable Reference Attributed Grammars , 2004, ECOOP.

[15]  Torbjörn Ekman,et al.  The jastadd extensible java compiler , 2007, OOPSLA.

[16]  Michael D. Ernst,et al.  Building and using pluggable type-checkers , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[17]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

[18]  Éric Tanter,et al.  First-class state change in plaid , 2011, OOPSLA '11.

[19]  John Tang Boyland,et al.  Checking Interference with Fractional Permissions , 2003, SAS.

[20]  Mario Bravetti,et al.  Behavioural Types for Memory and Method Safety in a Core Object-Oriented Language , 2020, APLAS.

[21]  Davide Ancona,et al.  Behavioral Types in Programming Languages , 2016, Found. Trends Program. Lang..

[22]  Jonathan Aldrich,et al.  Protocol programmability , 2013 .

[23]  M. Nivat Fiftieth volume of theoretical computer science , 1988 .

[24]  Ivan Lanese,et al.  Foundations of Session Types and Behavioural Contracts , 2016, ACM Comput. Surv..

[25]  Mario Bravetti,et al.  A Session Subtyping Tool (Extended Version) , 2021, ArXiv.

[26]  Pietro Ferrara,et al.  Automatic Inference of Access Permissions , 2012, VMCAI.

[27]  Robert DeLine,et al.  The fugue protocol checker: is your software baroque? technical report msr-tr-2004-07 , 2004 .

[28]  Jonathan Aldrich,et al.  An Empirical Study of Object Protocols in the Wild , 2011, ECOOP.

[29]  Jonathan Aldrich,et al.  A type system for borrowing permissions , 2012, POPL '12.

[30]  Jean-Yves Girard,et al.  Linear Logic , 1987, Theor. Comput. Sci..