Graph-Based Mining of In-the-Wild, Fine-Grained, Semantic Code Change Patterns

计算机科学 源代码 图形 编码(集合论) 语义变化 开源 数据挖掘 情报检索 人工智能 自然语言处理 软件 理论计算机科学 程序设计语言 集合(抽象数据类型)
作者
Hoan Anh Nguyen,Tien N. Nguyen,Danny Dig,Son Nguyen,Hieu Tran,Michael Hilton
标识
DOI:10.1109/icse.2019.00089
摘要

Prior research exploited the repetitiveness of code changes to enable several tasks such as code completion, bug-fix recommendation, library adaption, etc. These and other novel applications require accurate detection of semantic changes, but the state-of-the-art methods are limited to algorithms that detect specific kinds of changes at the syntactic level. Existing algorithms relying on syntactic similarity have lower accuracy, and cannot effectively detect semantic change patterns. We introduce a novel graph-based mining approach, CPatMiner, to detect previously unknown repetitive changes in the wild, by mining fine-grained semantic code change patterns from a large number of repositories. To overcome unique challenges such as detecting meaningful change patterns and scaling to large repositories, we rely on fine-grained change graphs to capture program dependencies. We evaluate CPatMiner by mining change patterns in a diverse corpus of 5,000+ open-source projects from GitHub across a population of 170,000+ developers. We use three complementary methods. First, we sent the mined patterns to 108 open-source developers. We found that 70% of respondents recognized those patterns as their meaningful frequent changes. Moreover, 79% of respondents even named the patterns, and 44% wanted future IDEs to automate such repetitive changes. We found that the mined change patterns belong to various development activities: adaptive (9%), perfective (20%), corrective (35%) and preventive (36%, including refactorings). Second, we compared our tool with the state-of-the-art, AST-based technique, and reported that it detects 2.1x more meaningful patterns. Third, we use CPatMiner to search for patterns in a corpus of 88 GitHub projects with longer histories consisting of 164M SLOCs. It constructed 322K fine-grained change graphs containing 3M nodes, and detected 17K instances of change patterns from which we provide unique insights on the practice of change patterns among individuals and teams. We found that a large percentage (75%) of the change patterns from individual developers are commonly shared with others, and this holds true for teams. Moreover, we found that the patterns are not intermittent but spread widely over time. Thus, we call for a community-based change pattern database to provide important resources in novel applications.

科研通智能强力驱动
Strongly Powered by AbleSci AI
科研通是完全免费的文献互助平台,具备全网最快的应助速度,最高的求助完成率。 对每一个文献求助,科研通都将尽心尽力,给求助人一个满意的交代。
实时播报
1秒前
jiangjiang完成签到,获得积分10
1秒前
刘明生发布了新的文献求助30
1秒前
132完成签到,获得积分10
1秒前
1秒前
weinaonao完成签到,获得积分10
1秒前
wenxianxiazai123完成签到,获得积分10
3秒前
付政完成签到,获得积分10
3秒前
打打应助铁甲小宝采纳,获得10
3秒前
萝卜特二完成签到,获得积分10
4秒前
虚幻灵松完成签到,获得积分10
4秒前
PQ完成签到,获得积分10
5秒前
霸气的听白完成签到,获得积分10
5秒前
7mi完成签到 ,获得积分10
5秒前
诸葛烤鸭完成签到,获得积分10
6秒前
初醒完成签到,获得积分10
6秒前
梨花酥发布了新的文献求助10
7秒前
希望天下0贩的0应助付政采纳,获得10
8秒前
李佳完成签到,获得积分10
9秒前
9秒前
刘小孩完成签到,获得积分10
9秒前
liansj完成签到,获得积分10
9秒前
小王完成签到 ,获得积分10
10秒前
海北完成签到,获得积分10
10秒前
赵田完成签到 ,获得积分10
11秒前
叶若相怜完成签到,获得积分10
11秒前
光亮的青文完成签到 ,获得积分10
12秒前
落落大方的松完成签到,获得积分10
13秒前
Jane完成签到,获得积分10
14秒前
风中的溪流完成签到 ,获得积分10
15秒前
Jasen完成签到,获得积分10
15秒前
wt完成签到,获得积分20
16秒前
yes完成签到 ,获得积分10
17秒前
17秒前
Hollen完成签到 ,获得积分10
18秒前
daI夫人完成签到,获得积分10
20秒前
王心心完成签到 ,获得积分10
20秒前
20秒前
铁甲小宝完成签到,获得积分10
20秒前
xingyi完成签到,获得积分10
20秒前
高分求助中
Principles of Economics, 11th Edition 10000
University Physics with Modern Physics, 16th edition 10000
(应助此贴封号)【重要!!请各用户(尤其是新用户)详细阅读】【科研通的精品贴汇总】 10000
Molecular Mechanisms of Photosynthesis, 4th Edition 1000
Organic Reactions, Volume 116 1000
Current concepts in cutaneous toxicity : proceedings of the Fourth Conference on Cutaneous Toxicity, Washington, D.C., May 9-11, 1979 1000
The recovery-stress questionnaires : user manual 800
热门求助领域 (近24小时)
化学 材料科学 医学 生物 纳米技术 工程类 有机化学 化学工程 生物化学 计算机科学 内科学 物理 复合材料 催化作用 细胞生物学 无机化学 光电子学 物理化学 电极 基因
热门帖子
关注 科研通微信公众号,转发送积分 7257809
求助须知:如何正确求助?哪些是违规求助? 8879654
关于积分的说明 18758068
捐赠科研通 6938139
什么是DOI,文献DOI怎么找? 3201148
关于科研通互助平台的介绍 2375264
邀请新用户注册赠送积分活动 2176997