VeriFly: On-the-fly Assertion Checking via Incrementality. Issue 6 (November 2021)
- Record Type:
- Journal Article
- Title:
- VeriFly: On-the-fly Assertion Checking via Incrementality. Issue 6 (November 2021)
- Main Title:
- VeriFly: On-the-fly Assertion Checking via Incrementality
- Authors:
- SANCHEZ-ORDAZ, MIGUEL A.
GARCIA-CONTRERAS, ISABEL
PEREZ, VICTOR
MORALES, JOSÉ F.
LOPEZ-GARCIA, PEDRO
HERMENEGILDO, MANUEL V. - Abstract:
- Abstract: 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, nonfailure, sharing, constraints, and cost, 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. This is specially the case when complex properties need to be inferred for large, realistic code bases. 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. In this tool paper, we present 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 checkingAbstract: 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, nonfailure, sharing, constraints, and cost, 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. This is specially the case when complex properties need to be inferred for large, realistic code bases. 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. In this tool paper, we present 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. … (more)
- Is Part Of:
- Theory and practice of logic programming. Volume 21:Issue 6(2021)
- Journal:
- Theory and practice of logic programming
- Issue:
- Volume 21:Issue 6(2021)
- Issue Display:
- Volume 21, Issue 6 (2021)
- Year:
- 2021
- Volume:
- 21
- Issue:
- 6
- Issue Sort Value:
- 2021-0021-0006-0000
- Page Start:
- 768
- Page End:
- 784
- Publication Date:
- 2021-11
- Subjects:
- On-the-fly assertion checking -- program development environments -- static analysis -- abstract interpretation -- incremental analysis -- logic and constraint programming
Logic programming -- Periodicals
Artificial intelligence -- Computer programs -- Periodicals
Constraint programming (Computer science) -- Periodicals
005.115 - Journal URLs:
- https://www.cambridge.org/core/journals/theory-and-practice-of-logic-programming ↗
- DOI:
- 10.1017/S1471068421000430 ↗
- Languages:
- English
- ISSNs:
- 1471-0684
- Deposit Type:
- Legaldeposit
- View Content:
- Available online (eLD content is only available in our Reading Rooms) ↗
- Physical Locations:
- British Library HMNTS - ELD Digital store
- Ingest File:
- 21760.xml