VeriFly: On-the-fly Assertion Checking via Incrementality

06/13/2021
by   Miguel A. Sanchez-Ordaz, et al.
0

Assertion checking is an invaluable programmer's tool for finding many classes of errors or verifying their absence in dynamic languages such as Prolog. For Prolog programmers this means being able to have relevant properties such as modes, types, determinacy, non-failure, sharing, constraints, cost, etc., checked and errors flagged without having to actually run the program. Such global static analysis tools are arguably most useful the earlier they are used in the software development cycle, and fast response times are essential for interactive use. Triggering a full and precise semantic analysis of a software project every time a change is made can be prohibitively expensive. In our static analysis and verification framework this challenge is addressed through a combination of modular and incremental (context- and path-sensitive) analysis that is responsive to program edits, at different levels of granularity. We describe how the combination of this framework within an integrated development environment (IDE) takes advantage of such incrementality to achieve a high level of reactivity when reflecting analysis and verification results back as colorings and tooltips directly on the program text – the tool's VeriFly mode. The concrete implementation that we describe is Emacs-based and reuses in part off-the-shelf "on-the-fly" syntax checking facilities (flycheck). We believe that similar extensions are also reproducible with low effort in other mature development environments. Our initial experience with the tool shows quite promising results, with low latency times that provide early, continuous, and precise assertion checking and other semantic feedback to programmers during the development process. The tool supports Prolog natively, as well as other languages by semantic transformation into Horn clauses. This paper is under consideration for acceptance in TPLP.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/21/2022

Interactive Abstract Interpretation: Reanalyzing Whole Programs for Cheap

To put static program analysis at the fingertips of the software develop...
research
03/06/2022

Model Based Software Design: Tool Support for Scripting in Immersive Environments

We present a prototype tool developed for the transformation of scenario...
research
06/04/2019

Towards A Broader Acceptance Of Formal Verification Tools: The Role Of Education

Formal methods yet advantageous, face challenges towards wide acceptance...
research
08/02/2021

Analysis and Transformation of Constrained Horn Clauses for Program Verification

This paper surveys recent work on applying analysis and transformation t...
research
07/01/2020

Experience Report: Smuggling a Little Bit of Coq Inside a CAD Development Context (Extended Abstract)

While the use of formal verification techniques is well established in t...
research
03/27/2018

Fast, Flexible, Polyglot Instrumentation Support for Debuggers and other Tools

Context: Software development tools that interact with running programs ...
research
03/06/2020

The Cost and Benefits of Static Analysis During Development

Without quantitative data, deciding whether and how to use static analys...

Please sign up or login with your details

Forgot password? Click here to reset