Visual Studio Code Integration for the Dafny Language and Ptrogramm Verifier

Krucker, Rafael and Schaden, Markus (2017) Visual Studio Code Integration for the Dafny Language and Ptrogramm Verifier. Bachelor thesis, HSR Hochschule für Technik Rapperswil.

[thumbnail of FS 2017-BA-EP-Schaden-Krucker-Visual Studio Code Integration for the Dafny Language and Pr.pdf]
FS 2017-BA-EP-Schaden-Krucker-Visual Studio Code Integration for the Dafny Language and Pr.pdf - Supplemental Material

Download (2MB) | Preview


The goal of this project is to integrate the Dafny programming language into Visual Studio Code. Emphasis is put into researching how Dafny programmers can be best supported during their work and how writing code can be made more productive.
Since Dafny offers built-in specification constructs, novel work is to provide tooling that makes using them easier. The most beneficial feature would be to implement a generic, context aware proof obligation generator that continuously suggests specification constructs to the programmer. This approach was eventually discarded because it was deemed unfeasible to implement after some research had been done. Instead, situations were identified that arise often during programming and specific aid with specification constructs was implemented for them. Another helpful feature is the displaying of counter examples where code written does not satisfy the corresponding specification constructs, allowing quick discovery of edge cases and refinement of specification constructs.
Next to language specific features, standard IDE mechanisms allow for great improvement regarding productivity. It was deemed paramount that the project implements the most common features such as go to definition and auto completion This was achieved using the standard interfaces that Visual Studio Code provides, allowing programmers accessing these features in a well-established way.
It is of concern that new users can get started quickly, so that the user base continuous to grow. To support this, automatic installation on all major platforms was implemented. The installation resolves all dependencies such as the Dafny pipeline itself. To further maximize portability, the plugin implements the language server protocol. This allows for writing IDE agnostic language analysis platforms, making the plugin not only usable in Visual Studio Code, but integrable into some other IDEs with only minor adjustments.
This project concluded with the implementation of a production ready integration of Dafny into Visual Studio Code. The application of continuous integration allowed for a user base of about 300 people at the end of the project, proofing that the plugin is robust and works across multiple environments. Dafny programmers are supported in their coding not only with standard IDE mechanisms, but also Dafny specific features. This not only makes the experience of programming more productive, but lays the foundation of a contentiously growing Dafny community.

Item Type: Thesis (Bachelor)
Subjects: Area of Application > Development Tools
Technologies > Programming Languages > Java
Technologies > Frameworks and Libraries > Eclipse
Technologies > Operating Systems > Windows
Technologies > Operating Systems > MacOSX
Technologies > Operating Systems > Unix, Linux
Divisions: Bachelor of Science FHO in Informatik > Bachelor Thesis
Depositing User: OST Deposit User
Thesis advisor
Mehta, Farhad
Date Deposited: 18 Oct 2017 07:00
Last Modified: 18 Oct 2017 07:00

Actions (login required)

View Item
View Item