Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3106237.3106276acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

More accurate recommendations for method-level changes

Published: 21 August 2017 Publication History

Abstract

During the life span of large software projects, developers often apply the same code changes to different code locations in slight variations. Since the application of these changes to all locations is time-consuming and error-prone, tools exist that learn change patterns from input examples, search for possible pattern applications, and generate corresponding recommendations. In many cases, the generated recommendations are syntactically or semantically wrong due to code movements in the input examples. Thus, they are of low accuracy and developers cannot directly copy them into their projects without adjustments.
We present the Accurate REcommendation System (ARES) that achieves a higher accuracy than other tools because its algorithms take care of code movements when creating patterns and recommendations. On average, the recommendations by ARES have an accuracy of 96% with respect to code changes that developers have manually performed in commits of source code archives. At the same time ARES achieves precision and recall values that are on par with other tools.

References

[1]
2017. Eclipse JDT Repository. (2017).
[2]
git://git.eclipse.org/gitroot/jdt/eclipse.jdt. core.git. 2017. Eclipse SWT Repository. (2017). http://git.eclipse.org/c/platform/eclipse. platform.swt.git/. 2017. JUnit Repository. (2017).
[3]
https://github.com/junitteam/junit4.git. 2017. LASE. (2017).
[4]
https://www.cs.utexas.edu/%7Emengna09/projects.html.
[5]
Jesper Andersen and Julia L. Lawall. 2008. Generic Patch Inference. In ASE’08: Intl. Conf. Automated Softw. Eng. L’Aquila, Italy, 337–346.
[6]
Jesper Andersen, Anh Cuong Nguyen, David Lo, Julia L. Lawall, and Siau-Cheng Khoo. 2012. Semantic Patch Inference. In ASE’12: Intl. Conf. Automated Softw. Eng. Essen, Germany, 382–385.
[7]
Sushil K. Bajracharya, Joel Ossher, and Cristina V. Lopes. 2010. Leveraging Usage Similarity for Effective Retrieval of Examples in Code Repositories. In FSE’10: Intl. Symp. Foundations of Softw. Eng. Santa Fe, NM, 157–166.
[8]
Ira D. Baxter, Christopher Pidgeon, and Michael Mehlich. 2004. DMS: Program Transformations for Practical Scalable Software Evolution. In ICSE’04: Intl. Conf. Softw. Eng. Edinburgh, Scotland, 625–634.
[9]
Lasse Bergroth, Harri Hakonen, and Timo Raita. 2000.
[10]
A Survey of Longest Common Subsequence Algorithms. In SPIRE’00: String Processing and Inf. Retrieval Symp. A Coruna, Spain, 39–48. More Accurate Recommendations for Method-Level Changes ESEC/FSE’17, September 4-8, 2017, Paderborn, Germany
[11]
Philip Bille. 2005. A survey on tree edit distance and related problems. Theoretical Computer Science 337, 1 (June 2005), 217–239.
[12]
Utsav Boobna and Michel de Rougemont. {n. d.}. Correctors for XML Data. In Database and XML Technologies. Lecture Notes in Computer Science, Vol. 3186.
[13]
[14]
Marcel Bruch, Martin Monperrus, and Mira Mezini. 2009. Learning from Examples to Improve Code Completion Systems. In ESEC/FSE’09: Europ. Softw. Eng. Conf. and Symp. Foundations Softw. Eng. Amsterdam, The Netherlands, 213–222.
[15]
Maria Christakis and Christian Bird. 2016.
[16]
What Developers Want and Need from Program Analysis: An Empirical Study. In ASE’16: Intl. Conf. Automated Softw. Eng. Singapore, Singapore, 332–343.
[17]
Georg Dotzler and Michael Philippsen. 2016. Move-optimized Source Code Tree Differencing. In ASE’16: Intl. Conf. Automated Softw. Eng. Singapore, Singapore, 660–671.
[18]
Georg Dotzler, Ronald Veldema, and Michael Philippsen. 2012.
[19]
Annotation Support for Generic Patches. In RSSE’12: Proc. Intl. Workshop Recommendation Systems for Softw. Eng. Zurich, Switzerland, 6–10.
[20]
David Lo Ferdian Thung, Le Dinh Xuan Bach and Julia Lawall. 2016.
[21]
Recommending Code Changes for Automatic Backporting of Linux Device Drivers. In ICSME’16: Intl. Conf. Softw. Maintenance and Evolution. Raleigh, NC, 222–232.
[22]
Beat Fluri, Michael Wuersch, Martin Pinzger, and Harald Gall. 2007.
[23]
Change Distilling: Tree Differencing for Fine-Grained Source Code Change Extraction. IEEE Transactions on Software Engineering 33, 11 (Nov. 2007), 725–743.
[24]
Marko Gasparic and Andrea Janes. 2016. What Recommendation Systems for Software Engineering Recommend: A Systematic Literature Review. Journal of Systems and Software 113 (2016), 101–113.
[25]
John Jacobellis, Na Meng, and Miryung Kim. 2014.
[26]
Cookbook: In Situ Code Completion Using Edit Recipes Learned from Examples. In ICSE’14: Intl. Conf. Softw. Eng. Hyderabad, India, 584–587.
[27]
Guoliang Jin, Wei Zhang, Dongdong Deng, Ben Liblit, and Shan Lu. 2012. Automated Concurrency-Bug Fixing. In OSDI’12: USENIX Symp. Operating Systems Design & Impl. Hollywood, CA, 221–236.
[28]
Toshihiro Kamiya, Shinji Kusumoto, and Katsuro Inoue. 2002.
[29]
CCFinder: A Multilinguistic Token-based Code Clone Detection System for Large Scale Source Code. IEEE Trans. on Softw. Eng. 28, 7 (July 2002), 654–670.
[30]
Miryung Kim and David Notkin. 2009. Discovering and Representing Systematic Code Changes. In ICSE’09: Intl. Conf. Softw. Eng. Vancouver, Canada, 309–319.
[31]
Patrick Kreutzer, Georg Dotzler, Matthias Ring, Bjoern M. Eskofier, and Michael Philippsen. 2016. Automatic Clustering of Code Changes. In MSR’16: Conf. Mining Softw. Repositories. Austin, TX, 61–72.
[32]
Vladimir Levenshtein. 1966.
[33]
Binary Codes Capable of Correcting Deletions, Insertions, and Reversals. Soviet Physics-Doklady 10, 8 (1966), 707–710.
[34]
Rashindra Manniesing, Ireneusz Karkowski, and Henk Corporaal. 2000. Automatic SIMD Parallelization of Embedded Applications Based on Pattern Recognition. In EuroPar’00: Europ. Conf. Parallel Computing, Vol. 1900. Munich, Germany, 349–356.
[35]
Michael Martin, Benjamin Livshits, and Monica S. Lam. 2005. Finding Application Errors and Security Flaws Using PQL: a Program Query Language. In OOPSLA’05: Conf. Object-Oriented Progr., Systems, Languages & Appl. San Diego, CA, 365–383.
[36]
Na Meng, Lisa Hua, Miryung Kim, and Kathryn S. McKinley. 2015. Does Automated Refactoring Obviate Systematic Editing?. In ICSE’15: Intl. Conf. Softw. Eng. Florence, Italy, 392–402.
[37]
Na Meng, Miryung Kim, and Kathryn S. McKinley. 2011.
[38]
Systematic Editing: Generating Program Transformations from an Example. In PLDI’11: Intl. Conf. Progr. Lang. Design & Impl. San Jose, CA, 329–342.
[39]
Na Meng, Miryung Kim, and Kathryn S. McKinley. 2013. LASE: Locating and Applying Systematic Edits by Learning from Examples. In ICSE’13: Intl. Conf. Softw. Eng. San Francisco, CA, 502–511.
[40]
Robert C. Miller and Brad A. Myers. 2001. Interactive Simultaneous Editing of Multiple Text Regions. In ATC’13: USENIX Annual Techn. Conf. Berkeley, CA, 161–174.
[41]
Tung Thanh Nguyen, Hoan Anh Nguyen, Nam H. Pham, Jafar Al-Kofahi, and Tien N. Nguyen. 2010.
[42]
Recurring Bug Fixes in Object-Oriented Programs. In ICSE’10: Intl. Conf. Softw. Eng. Cape Town, South Africa, 315–324.
[43]
Yoann Padioleau, Julia Lawall, René Rydhof Hansen, and Gilles Muller. 2008.
[44]
Documenting and Automating Collateral Evolutions in Linux Device Drivers. In Eurosys’08: Europ. Conf. Comp. Sys. Glasgow, Scotland, UK, 247–260.
[45]
Romain Robbes and Michele Lanza. 2008.
[46]
Example-Based Program Transformation. In MoDELS’08: Intl. Conf. Model Driven Eng. Languages and Systems. Toulouse, France, 174–188.
[47]
Martin P. Robillard, Walid Maalej, Robert J. Walker, and Thomas Zimmermann (Eds.). 2014.
[48]
Recommendation Systems in Software Engineering. Springer-Verlag, Heidelberg, Germany.
[49]
Reudismam Rolim, Gustavo Soares, Loris DâĂŹantoni, Oleksandr Polozov, Sumit Gulwani, Rohit Gheyi, Ryo Suzuki, and Bjorn Hartmann. 2017. Learning Syntactic Program Transformations from Example. In ICSE’17: Intl. Conf. Softw. Eng. Buenos Aires, Argentina, 404–415.
[50]
Gustavo Santos, Klérisson Paixão, Nicolas Anquetil, Anne Etien, Marcelo Maia, and Stéphane Ducasse. 2017. Recommending Source Code Locations for System Specific Transformations. In SANER’17: Intl. Conf. Softw. Analysis, Evolution and Reengineering. Klagenfurt, Austria, 160–170.
[51]
Ross Tate, Michael Stepp, and Sorin Lerner. 2010. Generating Compiler Optimizations from Proofs. In POPL’10: Intl. Symp. Principles of Progr. Languages. Madrid, Spain, 389–402.
[52]
Eelco Visser. 2001. Stratego: A Language for Program Transformation based on Rewriting Strategies. System Description of Stratego 0.5. In RTA’01: Rewriting Techniques and Applications (Lect. Notes Comp. Science), Vol. 2051. Utrecht, The Netherlands, 357–361.
[53]
Xiaoyin Wang, David Lo, Jiefeng Cheng, Lu Zhang, Hong Mei, and Jeffrey Xu Yu. 2010. Matching Dependence-Related Queries in the System Dependence Graph. In ASE’10: Intl. Conf. Automated Softw. Eng. Antwerp, Belgium, 457–466.
[54]
Yi Wei, Yu Pei, Carlo A. Furia, Lucas S. Silva, Stefan Buchholz, Bertrand Meyer, and Andreas Zeller. 2010.
[55]
Automated Fixing of Programs with Contracts. In ISSTA’10: Intl. Symp. Softw. Testing & Anal. Trento, Italy, 61–72.
[56]
Westley Weimer, ThanhVu Nguyen, Claire Le Goues, and Stephanie Forrest. 2009.
[57]
Automatically Finding Patches Using Genetic Programming. In ICSE’09: Intl. Conf. Softw. Eng. Washington, DC, 364–374.
[58]
Cheng Zhang, Juyuan Yang, Yi Zhang, Jing Fan, Xin Zhang, Jianjun Zhao, and Peizhao Ou. 2012. Automatic Parameter Recommendation for Practical API Usage. In ICSE’12: Intl. Conf. Softw. Eng. Piscataway, NJ, 826–836.
[59]
Tianyi Zhang, Myoungkyu Song, Joseph Pinedo, and Miryung Kim. 2015. Interactive Code Review for Systematic Changes. In ICSE’15: Intl. Conf. Softw. Eng. - Volume 1. Florence, Italy, 111–122.

Cited By

View all
  • (2023)An Assessment of Machine Learning Algorithms and Models for Prediction of Change-Prone Java MethodsProceedings of the XXXVII Brazilian Symposium on Software Engineering10.1145/3613372.3613395(322-331)Online publication date: 25-Sep-2023
  • (2021)Understanding Software-2.0ACM Transactions on Software Engineering and Methodology10.1145/345347830:4(1-42)Online publication date: 23-Jul-2021
  • (2021)Reactive Auto-Completion of Modeling ActivitiesIEEE Transactions on Software Engineering10.1109/TSE.2019.292488647:7(1431-1451)Online publication date: 1-Jul-2021
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ESEC/FSE 2017: Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering
August 2017
1073 pages
ISBN:9781450351058
DOI:10.1145/3106237
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 21 August 2017

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Program transformation
  2. recommendation system
  3. refactoring

Qualifiers

  • Research-article

Conference

ESEC/FSE'17
Sponsor:

Acceptance Rates

Overall Acceptance Rate 112 of 543 submissions, 21%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)19
  • Downloads (Last 6 weeks)0
Reflects downloads up to 25 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2023)An Assessment of Machine Learning Algorithms and Models for Prediction of Change-Prone Java MethodsProceedings of the XXXVII Brazilian Symposium on Software Engineering10.1145/3613372.3613395(322-331)Online publication date: 25-Sep-2023
  • (2021)Understanding Software-2.0ACM Transactions on Software Engineering and Methodology10.1145/345347830:4(1-42)Online publication date: 23-Jul-2021
  • (2021)Reactive Auto-Completion of Modeling ActivitiesIEEE Transactions on Software Engineering10.1109/TSE.2019.292488647:7(1431-1451)Online publication date: 1-Jul-2021
  • (2021)Sirius: Static Program Repair with Dependence Graph-Based Systematic Edit Patterns2021 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME52107.2021.00045(437-447)Online publication date: Sep-2021
  • (2020)APIMigratorProceedings of the IEEE/ACM 7th International Conference on Mobile Software Engineering and Systems10.1145/3387905.3388608(77-80)Online publication date: 13-Jul-2020
  • (2020)An Analysis of Utility for API Recommendation: Do the Matched Results Have the Same Efforts?2020 IEEE 20th International Conference on Software Quality, Reliability and Security (QRS)10.1109/QRS51102.2020.00067(479-488)Online publication date: Dec-2020
  • (2019)Automated API-usage update for Android appsProceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3293882.3330571(204-215)Online publication date: 10-Jul-2019
  • (2019)Recommending comprehensive solutions for programming tasks by mining crowd knowledgeProceedings of the 27th International Conference on Program Comprehension10.1109/ICPC.2019.00054(358-368)Online publication date: 25-May-2019

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media