A semantic integrated development environment

  • Authors:
  • Francesco Logozzo;Michael Barnett;Manuel A. Fähndrich;Patrick Cousot;Radhia Cousot

  • Affiliations:
  • Microsoft Research, Redmond, WA, USA;Microsoft Research, Redmond, WA, USA;Microsoft Research, Redmond, WA, USA;ENS, CNRS, INRIA, NYU, Paris, France;CNRS, ENS, INRIA, Paris, France

  • Venue:
  • Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present SIDE, a Semantic Integrated Development Environment. SIDE uses static analysis to enrich existing IDE features and also adds new features. It augments the way existing compilers find syntactic errors - in real time, as the programmer is writing code without execution - by also finding semantic errors, e.g., arithmetic expressions that may overflow. If it finds an error, it suggests a repair in the form of code - e.g., providing an equivalent yet non-overflowing expression. Repairs are correct by construction. SIDE also enhances code refactoring (by suggesting precise yet general contracts), code review (by answering what-if questions), and code searching (by answering questions like "find all the callers where x SIDE is built on the top of CodeContracts and the Roslyn CTP. CodeContracts provide a lightweight and programmer-friendly specification language. SIDE uses the abstract interpretation-based CodeContracts static checker (cccheck/Clousot) to obtain a deep semantic understanding of what the program does.