Litcius/Paper detail

On tracking Java methods with Git mechanisms

Yoshiki Higo, Shinpei Hayashi, Shinji Kusumoto

2020Journal of Systems and Software26 citationsDOIOpen Access PDF

Abstract

Method-level historical information is useful in various research on mining software repositories such as fault-prone module detection or evolutionary coupling identification. An existing technique named Historage converts a Git repository of a Java project to a finer-grained one. In a finer-grained repository, each Java method exists as a single file. Treating Java methods as files has an advantage, which is that Java methods can be tracked with Git mechanisms. The biggest benefit of tracking methods with Git mechanisms is that it can easily connect with any other tools and techniques build on Git infrastructure. However, Historage’s tracking has an issue of accuracy, especially on small methods. More concretely, in the case that a small method is renamed or moved to another class, Historage has a limited capability to track the method. In this paper, we propose a new technique, FinerGit, to improve the trackability of Java methods with Git mechanisms. We implement FinerGit as a system and apply it to 182 open source software projects, which include 1,768K methods in total. The experimental results show that our tool has a higher capability of tracking methods in the case that methods are renamed or moved to other classes.

Topics & Concepts

JavaComputer scienceSoftwareTracking (education)strictfpJava annotationReal time JavaTrack (disk drive)JavaBeansOpen source softwareSoftware engineeringOpen sourceScalaSoftware systemProgramming languageTracking systemJava concurrencyOperating systemSoftware toolDatabaseData miningGenerics in JavaReal-time computingSoftware Testing and Debugging TechniquesSoftware Engineering ResearchLogic, programming, and type systems