Abstract

The Envision project aims to develop an integrated development environment (IDE) for object-oriented languages that features a visual structured code editor and is used for large-scale software development. To achieve this goal Envision works directly on an abstract syntax tree instead of a text-based source code representation. This thesis features the design of a version control system based on an abstract syntax tree designed for Envision. The resulting system is more fine-grained than traditional text-based systems since changes are tracked on the basis of nodes in the abstract syntax tree and not lines as in a text file. Nevertheless traditional text-based systems contain functionality which can be used as foundation for a version control system for abstract syntax trees. Therefore Envision’s version control system is build on top of a Git back-end. The system features a comparison algorithm which is able to detect move operations, a history functionality which is able to track substructures and a merge algorithm which automatically resolves conflicts on list types. The major benefit of a version control system based on an abstract syntax tree is its syntax awareness. As a consequence the comparison algorithm is not prone to formatting changes and the merge algorithm produces always a syntactically correct program. In addition a more fine-grained change categorization in terms of granularity and change types positively affects the quality of the comparison, history and merge algorithms. Further visual improvements in the presentation provide the user with more essential information.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call