Go-Clone: Graph-Embedding Based Clone Detector for Golang
Golang (short for Go programming language) is a fast and compiled language, which has been increasingly used in industry due to its excellent performance on concurrent programming. Golang redefines concurrent programming grammar, making it a challenge for traditional clone detection tools and techniques. However, there exist few tools for detecting duplicates or copy-paste related bugs in Golang. Therefore, an effective and efficient code clone detector on Golang is especially needed. In this paper, we present Go-Clone, a learning-based clone detector for Golang. Go-Clone contains two modules – the training module and the user interaction module. In the training module, firstly we parse Golang source code into llvm IR (Intermediate Representation). Secondly, we calculate LSFG (labeled semantic flow graph) for each program function automatically. Go-Clone trains a deep neural network model to encode LSFGs for similarity classification. In the user interaction module, users can choose one or more Golang projects. Go-Clone identifies and presents a list of function pairs, which are most likely clone code for user inspection. To evaluate Go-Clone’s performance, we collect 6,110 commit versions from 48 Github projects to construct a Golang clone detection data set. Go-Clone can reach the value of AUC (Area Under Curve) and ACC (Accuracy) for 89.61% and 83.80% in clone detection. By testing several groups of unfamiliar data, we also demonstrates the generility of Go-Clone. The address of the abstract demo video: https://youtu.be/o5DogtYGbeo
Wed 17 JulDisplayed time zone: Beijing, Chongqing, Hong Kong, Urumqi change
16:00 - 17:30 | |||
16:00 10mTalk | Go-Clone: Graph-Embedding Based Clone Detector for Golang Tool Demonstration Cong Wang Tsinghua University, Jian Gao School of Software, Tsinghua University, Yu Jiang , Zhenchang Xing Australia National University, Huafeng Zhang , Weiliang Ying , Ming Gu Tsinghua University, Jiaguang Sun | ||
16:10 10mTalk | VFQL: Combinational Static Analysis as Query Language Tool Demonstration | ||
16:20 10mTalk | VBSAC: A Value-Based Static Analyzer for C Tool Demonstration Li Chi Tsinghua University, Min Zhou Tsinghua University, Zuxing Gu School of Software, Tsinghua University, Guang Chen , Yuexing Wang , Jiecheng Wu Tsinghua University, Ming Gu Tsinghua University | ||
16:30 10mTalk | SAFEVM: A Safety Verifier for Ethereum Smart Contracts Tool Demonstration | ||
16:40 10mTalk | CoCoTest: Collaborative Crowdsourced Testing for Android Applications Tool Demonstration | ||
16:50 10mTalk | Androlic: An Extensible Flow, Context, Object, Field, and Path-Sensitive Static Analysis Framework for Android Tool Demonstration Linjie Pan Institute of Software, Chinese Academy of Sciences, Baoquan Cui , Jiwei Yan Institute of Software, Chinese Academy of Sciences, Xutong Ma , Jun Yan Institute of Software, Chinese Academy of Sciences, Jian Zhang Beihang University | ||
17:00 10mTalk | JQF: Coverage-guided Property-based Testing in Java Tool Demonstration Rohan Padhye University of California, Berkeley, Caroline Lemieux University of California, Berkeley, Koushik Sen University of California, Berkeley | ||
17:10 10mTalk | Ukwikora: Continuous inspection for Keyword-Driven Testing Tool Demonstration Renaud Rwemalika , Marinos Kintis , Mike Papadakis University of Luxembourg, Yves Le Traon University of Luxembourg, Pierre Lorrach | ||
17:20 10mTalk | CTRAS: A Tool for Aggregating and Summarizing Crowdsourced Test Reports Tool Demonstration Yuying Li State Key Laboratory for Novel Software Technology, Nanjing University, Rui Hao Nanjing University, China, Yang Feng University of California, Irvine, James Jones University of California, Irvine, Xiaofang Zhang , Zhenyu Chen Nanjing University |