Graph Data Management of Evolving Dependency Graphs for Multi-versioned Codebases

Oshini Goonetilleke, David Meibusch, Ben Barham · 2017

Frappé is a code comprehension tool developed by Oracle Labs that extracts the code dependencies from a codebase and stores them in a graph database enabling advanced comprehension tasks. In addition to traditional text-based queries, such context-sensitive tools allow developers to express navigational queries of the form Does function X or something it calls write to global variable Y? providing more insight into the underlying codebases. Frappe captures the dependencies based on the most recent snapshot of the codebase.In this work we focus on the challenges associated with the management of multiple source code revisions, and investigate strategies to enable advanced code comprehension when the underlying codebase evolves over time. To find the deltas, we detail how entities can be resolved across versions, and propose a model for representing evolving dependency graphs. Our versioned graphs are built using snapshots of large codebases in the order of 13 million lines of code.We show growth and storage benefits of versioned graphs compared to independently storing individual snapshots. We also demonstrate how existing Frappe queries can be executed on versioned graphs and new queries can retrieve a history of changes in a function for a code review use case.

Read the paper · More papers on PaperTik