Table of Contents
Fetching ...

GitEvo: Code Evolution Analysis for Git Repositories

Andre Hora

TL;DR

GitEvo addresses the lack of tools that analyze both Git-level history and code-level evolution by introducing a multi-language, extensible framework that unifies repository history with concrete syntax tree metrics. The approach combines GitPython/PyDriller for version-control data with Tree-sitter CST parsing, enabling custom metric definitions via a Python API and delivering HTML and CSV reports. Key contributions include a programmable, cross-language pipeline, demonstrations through large-scale empirical studies and an educational deployment, and practical utilities for practitioners. The work enables empirical software-evolution research and education with reusable, language-agnostic tooling that can expand to any Tree-sitter language in future work.

Abstract

Analyzing the code evolution of software systems is relevant for practitioners, researchers, and educators. It can help practitioners identify design trends and maintenance challenges, provide researchers with empirical data to study changes over time, and give educators real-world examples that enhance the teaching of software evolution concepts. Unfortunately, we lack tools specifically designed to support code evolution analysis. In this paper, we propose GitEvo, a multi-language and extensible tool for analyzing code evolution in Git repositories. GitEvo leverages Git frameworks and code parsing tools to integrate both Git-level and code-level analysis. We conclude by describing how GitEvo can support the development of novel empirical studies on code evolution and act as a learning tool for educators and students. GitEvo is available at: https://github.com/andrehora/gitevo.

GitEvo: Code Evolution Analysis for Git Repositories

TL;DR

GitEvo addresses the lack of tools that analyze both Git-level history and code-level evolution by introducing a multi-language, extensible framework that unifies repository history with concrete syntax tree metrics. The approach combines GitPython/PyDriller for version-control data with Tree-sitter CST parsing, enabling custom metric definitions via a Python API and delivering HTML and CSV reports. Key contributions include a programmable, cross-language pipeline, demonstrations through large-scale empirical studies and an educational deployment, and practical utilities for practitioners. The work enables empirical software-evolution research and education with reusable, language-agnostic tooling that can expand to any Tree-sitter language in future work.

Abstract

Analyzing the code evolution of software systems is relevant for practitioners, researchers, and educators. It can help practitioners identify design trends and maintenance challenges, provide researchers with empirical data to study changes over time, and give educators real-world examples that enhance the teaching of software evolution concepts. Unfortunately, we lack tools specifically designed to support code evolution analysis. In this paper, we propose GitEvo, a multi-language and extensible tool for analyzing code evolution in Git repositories. GitEvo leverages Git frameworks and code parsing tools to integrate both Git-level and code-level analysis. We conclude by describing how GitEvo can support the development of novel empirical studies on code evolution and act as a learning tool for educators and students. GitEvo is available at: https://github.com/andrehora/gitevo.
Paper Structure (11 sections, 8 figures, 1 table)

This paper contains 11 sections, 8 figures, 1 table.

Figures (8)

  • Figure 1: Examples of code evolution reports by GitEvo.
  • Figure 2: Overview of the GitEvo pipeline.
  • Figure 3: Example of a basic GitEvo script.
  • Figure 4: Lines of code over time (Flask).
  • Figure 5: Metrics based on node types.
  • ...and 3 more figures