Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00059
Jianbo Gao
As blockchain-based decentralized applications (DApp) become increasingly popular recently, there is an urgent demand for effective testing schemes and tools. Due to the complexity introduced by application-blockchain interaction, existing testing methods become non-applicable. In this paper, we present a guided and automated framework called Sungari to test DApps. The insights behind Sungari are two-fold. First, we employ random events to infer an abstract relation between frontend and blockchain. Second, we use the relation to generate event sequnces in a guided manner that can cover blockchain smart contracts as quick as possible. In a real-world DApp case study, Sungari outperformed random approach by covering 33% more application use cases.
{"title":"Guided, Automated Testing of Blockchain-Based Decentralized Applications","authors":"Jianbo Gao","doi":"10.1109/ICSE-Companion.2019.00059","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00059","url":null,"abstract":"As blockchain-based decentralized applications (DApp) become increasingly popular recently, there is an urgent demand for effective testing schemes and tools. Due to the complexity introduced by application-blockchain interaction, existing testing methods become non-applicable. In this paper, we present a guided and automated framework called Sungari to test DApps. The insights behind Sungari are two-fold. First, we employ random events to infer an abstract relation between frontend and blockchain. Second, we use the relation to generate event sequnces in a guided manner that can cover blockchain smart contracts as quick as possible. In a real-world DApp case study, Sungari outperformed random approach by covering 33% more application use cases.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"18 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117059029","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00045
Cuong Cu, Xin Ye, Yongjie Zheng
This paper presents an Eclipse-based toolset named xLineMapper to automatically manage the relationships (e.g., traceability, conformance) among product line features, architecture, and source code. The xLineMapper toolset can (1) trace a product line feature to its related architectural elements and code fragments, (2) automatically update both product line architecture and code when a feature is changed, and (3) automatically customize product line architecture and code for a particular product based on its feature configuration. This is an improvement from existing product line approaches which only support either feature-architecture or feature-code mapping. We conducted a case study of xLineMapper with a large open-source software system, Apache Solr. A video demo of xLineMapper is available at https://youtu.be/pdO-vnE8U6w.
{"title":"xLineMapper: A Product Line Feature-Architecture-Implementation Mapping Toolset","authors":"Cuong Cu, Xin Ye, Yongjie Zheng","doi":"10.1109/ICSE-Companion.2019.00045","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00045","url":null,"abstract":"This paper presents an Eclipse-based toolset named xLineMapper to automatically manage the relationships (e.g., traceability, conformance) among product line features, architecture, and source code. The xLineMapper toolset can (1) trace a product line feature to its related architectural elements and code fragments, (2) automatically update both product line architecture and code when a feature is changed, and (3) automatically customize product line architecture and code for a particular product based on its feature configuration. This is an improvement from existing product line approaches which only support either feature-architecture or feature-code mapping. We conducted a case study of xLineMapper with a large open-source software system, Apache Solr. A video demo of xLineMapper is available at https://youtu.be/pdO-vnE8U6w.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"32 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121711540","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00081
Christoph Matthies
Improving the way that teams work together by reflecting and improving the executed process is at the heart of agile processes. The idea of iterative process improvement takes various forms in different agile development methodologies, e.g. Scrum Retrospectives. However, these methods do not prescribe how improvement steps should be conducted in detail. In this research we investigate how agile software teams can use their development data, such as commits or tickets, created during regular development activities, to drive and track process improvement steps. Our previous research focused on data-informed process improvement in the context of student teams, where controlled circumstances and deep domain knowledge allowed creation and usage of specific process measures. Encouraged by positive results in this area, we investigate the process improvement approaches employed in industry teams. Researching how the vital mechanism of process improvement is implemented and how development data is already being used in practice in modern software development leads to a more complete picture of agile process improvement. It is the first step in enabling a data-informed feedback and improvement process, tailored to a team's context and based on the development data of individual teams.
{"title":"Feedback in Scrum: Data-Informed Retrospectives","authors":"Christoph Matthies","doi":"10.1109/ICSE-Companion.2019.00081","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00081","url":null,"abstract":"Improving the way that teams work together by reflecting and improving the executed process is at the heart of agile processes. The idea of iterative process improvement takes various forms in different agile development methodologies, e.g. Scrum Retrospectives. However, these methods do not prescribe how improvement steps should be conducted in detail. In this research we investigate how agile software teams can use their development data, such as commits or tickets, created during regular development activities, to drive and track process improvement steps. Our previous research focused on data-informed process improvement in the context of student teams, where controlled circumstances and deep domain knowledge allowed creation and usage of specific process measures. Encouraged by positive results in this area, we investigate the process improvement approaches employed in industry teams. Researching how the vital mechanism of process improvement is implemented and how development data is already being used in practice in modern software development leads to a more complete picture of agile process improvement. It is the first step in enabling a data-informed feedback and improvement process, tailored to a team's context and based on the development data of individual teams.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122391427","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00046
Zuxing Gu, Jiecheng Wu, Chi Li, Min Zhou, Yu Jiang, M. Gu, Jiaguang Sun
Libraries offer reusable functionality through application programming interfaces (APIs) with usage constraints such as call conditions and orders. Constraint violations, i.e., API misuses, commonly lead to bugs and even security issues. In this paper, we introduce IMChecker, a constraint-directed static analysis toolkit to vet API usages in C programs powered by a domain-specific language (DSL) to specify the API usages. First, we propose a DSL, which covers most API usage constraint types and enables straightforward but precise specification by studying real-world API-misuse bug patches. Then, we design and implement a static analysis engine to automatically parse specifications into checking targets, identify potential API misuses and prune the false positives with rich semantics. We have instantiated IMChecker for C programs with user-friendly graphic interfaces and evaluated the widely used benchmarks and real-world projects. The results show that IMChecker outperforms 4.78-36.25% in precision and 40.25-55.21% w.r.t. state-of-the-arts toolkits. We also found 75 previously unknown bugs in Linux kernel, OpenSSL and applications of Ubuntu, 61 of which have been confirmed by the corresponding development communities. Video: https://youtu.be/YGDxeyOEVIM
{"title":"Vetting API Usages in C Programs with IMChecker","authors":"Zuxing Gu, Jiecheng Wu, Chi Li, Min Zhou, Yu Jiang, M. Gu, Jiaguang Sun","doi":"10.1109/ICSE-Companion.2019.00046","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00046","url":null,"abstract":"Libraries offer reusable functionality through application programming interfaces (APIs) with usage constraints such as call conditions and orders. Constraint violations, i.e., API misuses, commonly lead to bugs and even security issues. In this paper, we introduce IMChecker, a constraint-directed static analysis toolkit to vet API usages in C programs powered by a domain-specific language (DSL) to specify the API usages. First, we propose a DSL, which covers most API usage constraint types and enables straightforward but precise specification by studying real-world API-misuse bug patches. Then, we design and implement a static analysis engine to automatically parse specifications into checking targets, identify potential API misuses and prune the false positives with rich semantics. We have instantiated IMChecker for C programs with user-friendly graphic interfaces and evaluated the widely used benchmarks and real-world projects. The results show that IMChecker outperforms 4.78-36.25% in precision and 40.25-55.21% w.r.t. state-of-the-arts toolkits. We also found 75 previously unknown bugs in Linux kernel, OpenSSL and applications of Ubuntu, 61 of which have been confirmed by the corresponding development communities. Video: https://youtu.be/YGDxeyOEVIM","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"70 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116242793","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00127
Adriana Lopes, E. Oliveira, T. Conte, C. D. Souza
In the development process, software models are used to support communication among development team members. Failures of communication that is mediated by software models may generate inconsistencies in software behavior, generating rework to correct them. This may occur because producers usually focus only on model content, although they should also reflect on how other members of the development team will interpret their models. We should therefore teach software engineering students how to communicate better through software models. In an attempt to improve communication through software models, we have developed the Directives of Communicability (DCs), based on theories that investigate different kinds of communication. In this poster, we present the highlights of a study to find out whether DCs improve software engineering students' communication through software models. Our results confirm that DCs have improved the students' reflections on how their models' content will be interpreted during the software development process.
{"title":"Directives of Communicability: Teaching Students How to Improve Communication Through Software Modeling","authors":"Adriana Lopes, E. Oliveira, T. Conte, C. D. Souza","doi":"10.1109/ICSE-Companion.2019.00127","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00127","url":null,"abstract":"In the development process, software models are used to support communication among development team members. Failures of communication that is mediated by software models may generate inconsistencies in software behavior, generating rework to correct them. This may occur because producers usually focus only on model content, although they should also reflect on how other members of the development team will interpret their models. We should therefore teach software engineering students how to communicate better through software models. In an attempt to improve communication through software models, we have developed the Directives of Communicability (DCs), based on theories that investigate different kinds of communication. In this poster, we present the highlights of a study to find out whether DCs improve software engineering students' communication through software models. Our results confirm that DCs have improved the students' reflections on how their models' content will be interpreted during the software development process.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"18 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128669454","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00129
Gias Uddin, Foutse Khomh, C. Roy
The learnability of an API suffers when the official documentation of the API is incomplete. Developers discuss usage scenarios of APIs in the online developer forums. As such, by automatically mining such crowd-sourced documentation of APIs, we can address the shortcomings of API official documentation. We present a framework to automatically mine usage scenarios about APIs from online developer forums. Each usage scenario of an API consists of a code example, a summary description, and the reactions (i.e., positive and negative opinions) of other developers towards the code example. We evaluate our API usage mining framework by producing a benchmark dataset. We observed a precision of 0.947 and a recall of 1.0 with the linking of a code example to an API mention in the forum.
{"title":"Towards Crowd-Sourced API Documentation","authors":"Gias Uddin, Foutse Khomh, C. Roy","doi":"10.1109/ICSE-Companion.2019.00129","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00129","url":null,"abstract":"The learnability of an API suffers when the official documentation of the API is incomplete. Developers discuss usage scenarios of APIs in the online developer forums. As such, by automatically mining such crowd-sourced documentation of APIs, we can address the shortcomings of API official documentation. We present a framework to automatically mine usage scenarios about APIs from online developer forums. Each usage scenario of an API consists of a code example, a summary description, and the reactions (i.e., positive and negative opinions) of other developers towards the code example. We evaluate our API usage mining framework by producing a benchmark dataset. We observed a precision of 0.947 and a recall of 1.0 with the linking of a code example to an API mention in the forum.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"26 2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114913725","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00109
Lingyun Situ, Linzhang Wang, Xuandong Li, Le Guan, Wenhui Zhang, Peng Liu
Existing energy distribution strategies of AFL and its variants have two limitations. (1) They focus on increasing coverage but ignore the fact that some code regions are more likely to be vulnerable. (2) They randomly select mutators and deterministically specify the number to mutator, therefore lack insights regarding which granularity of mutators are more helpful at that particular stage. We improve the two limitations of AFL's fuzzing energy distribution in a principled way. We direct the fuzzer to strengthen fuzzing toward regions that have a higher probability to contain vulnerabilities based on static semantic metrics of the target program. Furthermore, granularity-aware scheduling of mutators is proposed, which dynamically assigns ratios to different mutation operators. We implemented these improvements as an extension to AFL. Large-scale experimental evaluations showed the effectiveness of each improvement and performance of integration. The proposed tool has helped us find 12 new bugs and expose three new CVEs.
{"title":"Energy Distribution Matters in Greybox Fuzzing","authors":"Lingyun Situ, Linzhang Wang, Xuandong Li, Le Guan, Wenhui Zhang, Peng Liu","doi":"10.1109/ICSE-Companion.2019.00109","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00109","url":null,"abstract":"Existing energy distribution strategies of AFL and its variants have two limitations. (1) They focus on increasing coverage but ignore the fact that some code regions are more likely to be vulnerable. (2) They randomly select mutators and deterministically specify the number to mutator, therefore lack insights regarding which granularity of mutators are more helpful at that particular stage. We improve the two limitations of AFL's fuzzing energy distribution in a principled way. We direct the fuzzer to strengthen fuzzing toward regions that have a higher probability to contain vulnerabilities based on static semantic metrics of the target program. Furthermore, granularity-aware scheduling of mutators is proposed, which dynamically assigns ratios to different mutation operators. We implemented these improvements as an extension to AFL. Large-scale experimental evaluations showed the effectiveness of each improvement and performance of integration. The proposed tool has helped us find 12 new bugs and expose three new CVEs.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"20 1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114399630","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00064
Austin Mordahl
Variability in C software is a useful tool, but critical bugs that only exist in certain configurations are easily missed by conventional debugging techniques. Even with a small number of features, the configuration space of configurable software is too large to analyze exhaustively. Variability-aware static analysis for bug detection is being developed, but remains at too early a stage to be fully usable in real-world C programs. In this work, we present a methodology of finding variability bugs by combining variability-oblivious bug detectors, static analysis of build processes, and dynamic feature interaction inference. We further present an empirical study in which we test our methodology on two highly configurable C programs. We found our methodology to be effective, finding 88 true bugs between the two programs, of which 64 were variability bugs.
{"title":"Toward Detection and Characterization of Variability Bugs in Configurable C Software: An Empirical Study","authors":"Austin Mordahl","doi":"10.1109/ICSE-Companion.2019.00064","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00064","url":null,"abstract":"Variability in C software is a useful tool, but critical bugs that only exist in certain configurations are easily missed by conventional debugging techniques. Even with a small number of features, the configuration space of configurable software is too large to analyze exhaustively. Variability-aware static analysis for bug detection is being developed, but remains at too early a stage to be fully usable in real-world C programs. In this work, we present a methodology of finding variability bugs by combining variability-oblivious bug detectors, static analysis of build processes, and dynamic feature interaction inference. We further present an empirical study in which we test our methodology on two highly configurable C programs. We found our methodology to be effective, finding 88 true bugs between the two programs, of which 64 were variability bugs.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"32 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114311862","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00121
A. Mesbah, A. Rice, E. Aftandilian, Emily Johnston, Nick Glorioso
Resolving a build failure consumes developer time both in finding a suitable resolution and in rerunning the build. Our goal is to develop automated repair tools that can automatically resolve build errors and therefore improve developer productivity. We collected data on the resolution of Java build failures to discover how long developers spend resolving different kinds of diagnostics at Google. We found that the diagnostic reporting an unresolved symbol consumes 47% of the total time spent resolving broken builds. We found that choice of tool has a significant impact: 26% of command line builds fail whereas only 3% of IDE builds fail. However, the set of most costly diagnostic kinds remains the same for both. We trained a Neural Machine Translation model on the Abstract Syntax Tree changes made when resolving an unresolved symbol failure. This generates a correct fix with a true positive rate of 50%.
{"title":"Analyzing and Repairing Compilation Errors","authors":"A. Mesbah, A. Rice, E. Aftandilian, Emily Johnston, Nick Glorioso","doi":"10.1109/ICSE-Companion.2019.00121","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00121","url":null,"abstract":"Resolving a build failure consumes developer time both in finding a suitable resolution and in rerunning the build. Our goal is to develop automated repair tools that can automatically resolve build errors and therefore improve developer productivity. We collected data on the resolution of Java build failures to discover how long developers spend resolving different kinds of diagnostics at Google. We found that the diagnostic reporting an unresolved symbol consumes 47% of the total time spent resolving broken builds. We found that choice of tool has a significant impact: 26% of command line builds fail whereas only 3% of IDE builds fail. However, the set of most costly diagnostic kinds remains the same for both. We trained a Neural Machine Translation model on the Abstract Syntax Tree changes made when resolving an unresolved symbol failure. This generates a correct fix with a true positive rate of 50%.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"75 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127070518","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-05-25DOI: 10.1109/ICSE-Companion.2019.00117
Fengmin Zhu, Fei He, Q. Yu
Recently, structured merge has shown its advantage in improving the merge precision over conventional line-based, unstructured merge. A typical structured merge algorithm consists of matching and amalgamation on abstract syntax trees. Existing tree matching techniques aim to figure out optimal matches by maximizing the number of matched nodes. From real-world codebases, however, we find that many of the reported conflicts are unnecessary. We propose a new objective function for defining a proper tree matching, with which the overall conflicting rate can be greatly reduced. We conducted experiments on 3,687 merge scenarios extracted from 18 open-source projects. Results show significant merge precision enhancement of our approach.
{"title":"Enhancing Precision of Structured Merge by Proper Tree Matching","authors":"Fengmin Zhu, Fei He, Q. Yu","doi":"10.1109/ICSE-Companion.2019.00117","DOIUrl":"https://doi.org/10.1109/ICSE-Companion.2019.00117","url":null,"abstract":"Recently, structured merge has shown its advantage in improving the merge precision over conventional line-based, unstructured merge. A typical structured merge algorithm consists of matching and amalgamation on abstract syntax trees. Existing tree matching techniques aim to figure out optimal matches by maximizing the number of matched nodes. From real-world codebases, however, we find that many of the reported conflicts are unnecessary. We propose a new objective function for defining a proper tree matching, with which the overall conflicting rate can be greatly reduced. We conducted experiments on 3,687 merge scenarios extracted from 18 open-source projects. Results show significant merge precision enhancement of our approach.","PeriodicalId":273100,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115716686","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}