Skip to content

Proposal

tomwilshere edited this page Oct 22, 2013 · 2 revisions

Temporal Visualisation and Exploration of Codebases through Mining Version Control History

Version Control Systems (VCSs) have traditionally been used simply to manage incremental changes to a codebase, allowing programmers to traverse back in time through the code - normally to revert back to a working state.

VCSs in addition to this, hold a wealth of information about the development and growth of project which has been largely underused by development teams during the evolution of a project. Projects such as Gource [1] have been able to analyse a project’s development over time to output a video, and resources such as GitHub Archive [2] allow us to perform adhoc queries on many existing repositories, however we plan to investigate tools allowing more interactive exploration.

We are proposing to build a system that analyses a given version control repository and allows the user to easily scroll through the project history in real time, whilst also easily navigating through files/functions, but also being able to see visually how analyses of the code change over time e.g. code test coverage/complexity/style violations etc.

We are planning experiments to determine whether, by integrating the scores of these various tests over time, a developer would be able to identify the files or even functions where code quality is degrading ,or indeed improving. This could be a useful tool for prioritising code for review, refactoring etc. as well as a tool for comparing programmers’ impact on the codebase.

Initially the project will perform analyses of Ruby code, but should remain extensible with the aim of adding further languages at a later date. Testing of the project can be done on live repositories such as those on github, as well as giving the product to teams actively working on projects to see if and how it affects their development.

[1] https://code.google.com/p/gource/ [2] http://www.githubarchive.org/

Clone this wiki locally