Enhancing Dafny Support in Visual Studio Code

Hess, Marcel and Kistler, Thomas (2020) Enhancing Dafny Support in Visual Studio Code. Other thesis, HSR Hochschule für Technik Rapperswil.

[thumbnail of FS 2020-BA-EP-Kistler-Hess-Dafny Server Redesign (Fortsetzungsarbeit).pdf]
FS 2020-BA-EP-Kistler-Hess-Dafny Server Redesign (Fortsetzungsarbeit).pdf - Supplemental Material

Download (11MB) | Preview


Dafny is a formal programming language to prove a program’s correctness. In a preceding bachelor thesis, a plugin for Visual Studio Code was created to access Dafny-specific static analysis features. The plugin communicates with a language server using Microsoft’s language server protocol, which standardizes communication between an integrated development environment (IDE) and a language server. The language server itself used to access the Dafny library, which features the backend of the Dafny language analysis, through a proprietary JSON-interface. In our preceding term project, the language server was integrated into the Dafny backend to render the JSON-interface obsolete.

This bachelor thesis continues the preceding term project and contains two major goals. First, the previously implemented prototype has to be improved in usability, stability and reliability. Second, a symbol table has to be implemented to facilitate the development of symbol-oriented functionality like Rename or AutoCompletion. The symbol table is supposed to open a wide range for further development.

A symbol table was created with an adaptive data structure. Every symbol contains information about its parent, its children and its declaration. This keeps navigation within the symbol hierarchy very simple. The implemented features GoToDefinition, Rename, CodeLens, HoverInformation and AutoCompletion benefit from the symbol table and are no longer required to analyze the code themselves and provide better results. The symbol table can be used for future extensions, such as AutoFormatting or CodeHighlighting. Apart from features based on the symbol table, pre-existing functionality was revisited as well to improve the overall software quality. The final product has been deployed to the Visual Studio Code marketplace and is publicly available.

Item Type: Thesis (Other)
Subjects: Area of Application > Development Tools
Technologies > Programming Languages > C#
Technologies > Programming Languages > Java Script
Technologies > Frameworks and Libraries > .NET
Technologies > Protocols
Divisions: Bachelor of Science FHO in Informatik > Bachelor Thesis
Depositing User: HSR Deposit User
Thesis advisor
Corbat, Thomas
Thesis advisor
Hauser, Fabian
Date Deposited: 19 Mar 2021 09:37
Last Modified: 19 Apr 2021 07:15
URI: https://eprints.ost.ch/id/eprint/874

Actions (login required)

View Item
View Item