Mining code change patterns to aid software development
106 p
Thèse de doctorat: Università della Svizzera italiana, 2021
English
Mining Software Repositories (MSR) has become a complete and mature research field, also due to the increasing number of open source projects publicly available. Repository hosting services such as GitHub provide unprecedented access to millions of events generated during development activities (e.g., code commits, pull requests), that can be mined and analyzed to extract new pieces of knowledge. By analyzing the source code of a large corpus of software systems, recent work showed that most software is natural, meaning that it is likely to be repetitive and predictable. In other words, development and maintenance activities are likely the results of unexposed code change patterns that, if properly exploited, can be used to support code-related activities (e.g., implementing a new feature). Starting from these observations, we formulate our thesis statement: Mining code change patterns from open source repositories enables researchers to gather large-scale, historical infor- mation about development and maintenance activities performed by developers. The collected empirical knowledge, once converted into actionable items, can support software developers on code-related tasks. We investigated the possibility of acquiring new empirical knowledge from mining three specific types of code change patterns in open source repositories: (i) the introduction and fix of code- comment inconsistencies, (ii) omitted code changes in developers' commits and (iii) implementation patterns followed by developers when implementing a new feature. We leveraged the knowledge acquired from the last type of patterns, to design and build FeaRS, an approach and a tool that, given the methods developers already wrote in the IDE, is able to suggest the complete code of the next method they are likely to implement. Our results show that mining unexposed code change patterns from open source repositories can help in better understanding development activities and potentially support developers during software development.
-
Language
-
-
Classification
-
Computer science and technology
-
License
-
License undefined
-
Identifiers
-
-
Persistent URL
-
https://n2t.net/ark:/12658/srd1319203