scitools.com

Solution: Git

Version control can contain valuable information about technical debt in three broad categories: authors, churn, and coupling. Learn more about each area below.

These plugins read information from a Git repository. There is also a blog article ↗ describing these plugins.

image

A File Dependencies graph generated from the Git Stability architecture

Authors

Authors can be broken into three categories [1]:

Technical Debt Tip: Files with strong ownership are preferred, and files with many minor contributors are more bug prone. [1,2]

Plugins

image

Check out the Git Authors interactive report for an overview. Create architectures to group by author or owner. Use metrics to calculate the number of authors, the number of major contributors, the number of minor contributors, and the ownership (the percentage of commits made by the owner).

Churn

Files can be classified as:

Technical Debt Tip: Recurrently active files can be a sign that a file is poorly designed or has many bugs. [2,3]

Plugins

image

Tag "Recurrently Active" files with the Git Stability architecture. You can also group files by when they were last modified with the Git Date architecture. Summarize commits with the Git Commits interactive report. Use metrics to see the number of commits and the first and last date. The last date metric is also available as a line metric, so it can be used to color Control Flow graphs.

image

Coupling and Cohesion

A file is coupled to another file through Git if they are both modified in the same commit. The coupling is measured by the number of commits the two files co-occur in divided by the number of commits for the target file.

Technical Debt Tip: Check coupled files for unwanted dependencies, such as copy-paste code.

Plugins

image

Check out the Git Coupling interactive report to find coupled files and quickly check dependencies. You can also graph coupling relationships similar to file dependency relationships with the Git Coupling Graph. There are also coupling metrics: Git Coupled Files, Git Strongly Coupled Files, Git Average Coupling and Git Max Coupling

A related concept, cohesion, measures how commits cross architectures. Check out the Git Cohesion metric for details.

References

  1. Bird, Christian, et al. "Don't touch my code! Examining the effects of ownership on software quality." Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering. 2011.
  2. Omeyer, Alexandre . 3 Technical Debt Metrics Every Engineer Should Know. 31 July 2019, www.stepsize.com/blog/use-research-from-industry-leaders-to-measure-technical-debt. Accessed 10 Mar. 2025.
  3. Schulte, Lukas, Hitesh Sajnani, and Jacek Czerwonka. "Active files as a measure of software maintainability." Companion Proceedings of the 36th International Conference on Software Engineering. 2014.
  4. Tornhill, Adam. Code as a Crime Scene. Nov. 2013, “Code as a Crime Scene.” Adamtornhill.com, 2024, www.adamtornhill.com/articles/crimescene/codeascrimescene.htm.. Accessed 10 Mar. 2025.

Git Plugins

Name Kind
Authors Metric
Commits Metric
Days since creation Metric
Days since modified Metric
Git Author Architecture
Git Authors Interactive Report
Git Authors Pie Chart Graph
Git Average Coupling Metric
Git Cohesion Metric
Git Commits Interactive Report
Git Coupled Files Metric
Git Coupling Graph
Git Coupling Interactive Report
Git Coupling Pie Chart Graph
Git Date Architecture
Git History Bar Chart Graph
Git Max Coupling Metric
Git Metrics Interactive Report
Git Owner Architecture
Git Stability Architecture
Git Strongly Coupled Files Metric
Major Contributors Metric
Minor Contributors Metric
Ownership Metric