Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3387904.3389266acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

An Empirical Study of Quick Remedy Commits

Published: 12 September 2020 Publication History

Abstract

Software systems are continuously modified to implement new features, to fix bugs, and to improve quality attributes. Most of these activities are not atomic changes, but rather the result of several related changes affecting different parts of the code. For this reason, it may happen that developers omit some of the needed changes and, as a consequence, leave a task partially unfinished, introduce technical debt or, in the worst case scenario, inject bugs. Knowing the changes that are mistakenly omitted by developers can help in designing recommender systems able to automatically identify risky situations in which, for example, the developer is likely to be pushing an incomplete change to the software repository.
We present a qualitative study investigating "quick remedy commits" performed by developers with the goal of implementing changes omitted in previous commits. With quick remedy commits we refer to commits that (i) quickly follow a commit performed by the same developer in the same repository, and (ii) aim at remedying issues introduced as the result of code changes omitted in the previous commit (e.g., fix references to code components that have been broken as a consequence of a rename refactoring). Through a manual analysis of 500 quick remedy commits, we define a taxonomy categorizing the types of changes that developers tend to omit. The defined taxonomy can guide the development of tools aimed at detecting omitted changes, and possibly autocomplete them.

References

[1]
[n. d.]. About stars (GitHub).https://help.github.com/articles/about-stars/.
[2]
[n. d.]. Commit to Accumulo project on GitHub. https://github.com/apache/accumulo/commit/2ad672a
[3]
[n. d.]. Commit to accumulo project on GitHub. https://github.com/apache/accumulo/commit/b8859513a
[4]
[n. d.]. Commit to denominator project on GitHub. https://github.com/Netflix/denominator/commit/e727b9d
[5]
[n. d.]. Commit to geoserver project on GitHub. https://github.com/geoserver/geoserver/commit/22c89ad106
[6]
[n. d.]. Commit to jitsi project on GitHub. https://github.com/jitsi/jitsi/commit/6a361bbf6
[7]
[n. d.]. Commit to jitsi project on GitHub. https://github.com/jitsi/jitsi/commit/a74af45
[8]
[n. d.]. Commit to liferay-portal project on GitHub. https://github.com/liferay/liferay-portal/commit/1b5c378d4785
[9]
[n. d.]. Commit to lombok project on GitHub. https://github.com/rzwitserloot/lombok/commit/57f59074
[10]
[n. d.]. Commit to openpnp project on GitHub. https://github.com/openpnp/openpnp/commit/aeef4cb0e4
[11]
[n. d.]. Commit to spacewalk project on GitHub. https://github.com/spacewalkproject/spacewalk/commit/6df7327
[12]
[n. d.]. Commit to spacewalk project on GitHub. https://github.com/spacewalkproject/spacewalk/commit/fec7040
[13]
[n. d.]. Commit to tinkerpop project on GitHub. https://github.com/apache/tinkerpop/commit/a4c62be7a5
[14]
[n. d.]. Commit to tinkerpop project on GitHub. https://github.com/apache/tinkerpop/commit/aa3d538
[15]
[n. d.]. Commit to TomP2P project on GitHub. https://github.com/tomp2p/TomP2P/commit/3db803c
[16]
[n. d.]. Commit to TomP2P project on GitHub. https://github.com/tomp2p/TomP2P/commit/8802c5e
[17]
[n. d.]. Commit to TomP2P project on GitHub. https://github.com/tomp2p/TomP2P/commit/4bc6e824
[18]
[n. d.]. Commit to Tower project on GitHub. https://github.com/DroidPlanner/Tower/commit/72132d049
[19]
[n. d.]. Liferay Portal Issue LPS-44476. https://issues.liferay.com/browse/LPS-44476
[20]
[n. d.]. Project FindBugs on GitHub. https://github.com/findbugsproject/findbugs
[21]
[n.d.]. Project java-design-patterns on GitHub. https://github.com/iluwatar/java-design-patterns
[22]
[n. d.]. Project SpotBugs on GitHub. https://github.com/spotbugs/spotbugs
[23]
[n. d.]. Project spring-petclinic on GitHub. https://github.com/spring-projects/spring-petclinic
[24]
[n. d.]. Replication Package. https://github.com/Em11FW/ICPC2020-quick-remedy-commit.
[25]
Miltiadis Allamanis, Earl T. Barr, Christian Bird, and Charles Sutton. 2014. Learning Natural Coding Conventions. In Proceedings of the 22Nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2014). 281--293.
[26]
Le An, Foutse Khomh, and Bram Adams. 2014. Supplementary Bug Fixes vs. Reopened Bugs. In Proceedings of the 2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation (SCAM '14). IEEE Computer Society, Washington, DC, USA, 205--214. https://doi.org/10.1109/SCAM.2014.29
[27]
Mauricio Finavaro Aniche, Gabriele Bavota, Christoph Treude, Marco Aurélio Gerosa, and Arie van Deursen. 2018. Code smells for Model-View-Controller architectures. Empirical Software Engineering 23, 4 (2018), 2121--2157.
[28]
Gabriele Bavota, Bernardino De Carluccio, Andrea De Lucia, Massimiliano Di Penta, Rocco Oliveto, and Orazio Strollo. 2012. When Does a Refactoring Induce Bugs? An Empirical Study. In 12th IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM 2012, Riva del Garda, Italy, September 23-24, 2012. 104--113.
[29]
Nicolas Bettenburg, Weiyi Shang, Walid M. Ibrahim, Bram Adams, Ying Zou, and Ahmed E. Hassan. 2012. An Empirical Study on Inconsistent Changes to Code Clones at the Release Level. Sci. Comput. Program. 77, 6 (June 2012), 760--776. https://doi.org/10.1016/j.scico.2010.11.010
[30]
J. M. Bieman, A. A. Andrews, and H. J. Yang. 2003. Understanding changeproneness in OO software through visualization. In 11th IEEE International Workshop on Program Comprehension, 2003. 44--53.
[31]
Christian Bird, Nachiappan Nagappan, Brendan Murphy, Harald Gall, and Premkumar Devanbu. 2011. Don'T Touch My Code!: Examining the Effects of Ownership on Software Quality. In Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering (ESEC/FSE '11). ACM, New York, NY, USA, 4--14. https://doi.org/10.1145/2025113.2025119
[32]
Nick C. Bradley, Thomas Fritz, and Reid Holmes. 2018. Context-aware conversational developer assistants. In Proceedings of the 40th International Conference on Software Engineering, ICSE 2018, Gothenburg, Sweden, May 27-June 03, 2018. 993--1003.
[33]
Gemma Catolino and Filomena Ferrucci. 2019. An extensive evaluation of ensemble techniques for software change prediction. Journal of Software: Evolution and Process 31, 9 (2019).
[34]
Maëlick Claes, Mika V. Mäntylä, Miikka Kuutila, and Bram Adams. 2018. Do Programmers Work at Night or During the Weekend?. In Proceedings of the 40th International Conference on Software Engineering (ICSE '18). ACM, New York, NY, USA, 705--715. https://doi.org/10.1145/3180155.3180193
[35]
Meixi Dai, Beijun Shen, Tao Zhang, and Min Zhao. 2014. Impact of Consecutive Changes on Later File Versions. In Proceedings of the 2014 3rd International Workshop on Evidential Assessment of Software Technologies (EAST 2014). ACM, New York, NY, USA, 17--24. https://doi.org/10.1145/2627508.2627512
[36]
Brett Daniel, Danny Dig, Kely Garcia, and Darko Marinov. 2007. Automated Testing of Refactoring Engines. In Proceedings of the the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on The Foundations of Software Engineering (ESEC-FSE '07). 185--194.
[37]
Jon Eyolfson, Lin Tan, and Patrick Lam. 2011. Do Time of Day and Developer Experience Affect Commit Bugginess?. In Proceedings of the 8th Working Conference on Mining Software Repositories (MSR '11). ACM, New York, NY, USA, 153--162. https://doi.org/10.1145/1985441.1985464
[38]
Jesus M. Gonzalez-Barahona, Daniel Izquierdo-Cortazar, and Andrea Capiluppi. 2011. Are Developers Fixing Their Own Bugs?: Tracing Bug-Fixing and Bug-Seeding Committers. Int. J. Open Source Softw. Process. 3, 2 (April 2011), 23--42. https://doi.org/10.4018/jossp.2011040102
[39]
Lile P. Hattori and Michele Lanza. 2008. On the Nature of Commits. In Proceedings of the 23rd IEEE/ACM International Conference on Automated Software Engineering (ASE'08). IEEE Press, Piscataway, NJ, USA, III-63-III-71. https://doi.org/10.1109/ASEW.2008.4686322
[40]
Kim Herzig, Sascha Just, and Andreas Zeller. 2016. The Impact of Tangled Code Changes on Defect Prediction Models. Empirical Softw. Engg. 21, 2 (April 2016), 303--336. https://doi.org/10.1007/s10664-015-9376-6
[41]
Kim Herzig and Andreas Zeller. 2013. The Impact of Tangled Code Changes. In Proceedings of the 10th Working Conference on Mining Software Repositories (MSR '13). IEEE Press, Piscataway, NJ, USA, 121--130.
[42]
Abram Hindle, Daniel M. German, and Ric Holt. 2008. What Do Large Commits Tell Us?: A Taxonomical Study of Large Commits. In Proceedings of the 2008 International Working Conference on Mining Software Repositories (MSR '08). ACM, New York, NY, USA, 99--108. https://doi.org/10.1145/1370750.1370773
[43]
Siyuan Jiang, Ameer Armaly, and Collin McMillan. 2017. Automatically generating commit messages from diffs using neural machine translation. In Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering, ASE 2017, Urbana, IL, USA, October 30-November 03, 2017. 135--146.
[44]
Eirini Kalliamvakou, Georgios Gousios, Kelly Blincoe, Leif Singer, Daniel M. German, and Daniela Damian. 2014. The Promises and Perils of Mining GitHub. In Proc. of the 11th Working Conference on Mining Software Repositories (MSR 2014). 92--101.
[45]
Sunghun Kim and E. James Whitehead, Jr. 2006. How Long Did It Take to Fix Bugs?. In Proceedings of the 2006 International Workshop on Mining Software Repositories (MSR '06). ACM, New York, NY, USA, 173--174. https://doi.org/10.1145/1137983.1138027
[46]
J. Krinke. 2007. A Study of Consistent and Inconsistent Changes to Code Clones. In 14th Working Conference on Reverse Engineering (WCRE 2007). 170--178.
[47]
Bin Lin, Simone Scalabrino, Andrea Mocci, Rocco Oliveto, Gabriele Bavota, and Michele Lanza. 2017. Investigating the Use of Code Analysis and NLP to Promote a Consistent Usage of Identifiers. In 17th IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM 2017, Shanghai, China, September 17-18, 2017. 81--90.
[48]
Matias Martinez and Martin Monperrus. 2019. Coming: A Tool for Mining Change Pattern Instances from Git Commits. In Proceedings of the 41st International Conference on Software Engineering: Companion Proceedings (ICSE '19). IEEE Press, Piscataway, NJ, USA, 79--82. https://doi.org/10.1109/ICSE-Companion.2019.00043
[49]
Audris Mockus and Lawrence G. Votta. 2000. Identifying Reasons for Software Changes Using Historic Databases. In Proceedings of the International Conference on Software Maintenance (ICSM'00) (ICSM '00). IEEE Computer Society, Washington, DC, USA, 120-.
[50]
Fabio Palomba, Andy Zaidman, Rocco Oliveto, and Andrea De Lucia. 2017. An Exploratory Study on the Relationship Between Changes and Refactoring. In Proceedings of the 25th International Conference on Program Comprehension (ICPC '17). IEEE Press, 176--185. https://doi.org/10.1109/ICPC.2017.38
[51]
Kai Pan, Sunghun Kim, and E. James Whitehead, Jr. 2009. Toward an Understanding of Bug Fix Patterns. Empirical Softw. Engg. 14, 3 (June 2009), 286--315. https://doi.org/10.1007/s10664-008-9077-5
[52]
Jihun Park, Miryung Kim, and Doo-Hwan Bae. 2014. An Empirical Study on Reducing Omission Errors in Practice. In Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering (ASE '14). ACM, New York, NY, USA, 121--126. https://doi.org/10.1145/2642937.2642956
[53]
Jihun Park, Miryung Kim, and Doo-Hwan Bae. 2017. An Empirical Study of Supplementary Patches in Open Source Projects. Empirical Softw. Engg. 22, 1 (Feb. 2017), 436--473. https://doi.org/10.1007/s10664-016-9432-x
[54]
J. Park, M. Kim, B. Ray, and D. Bae. 2012. An empirical study of supplementary bug fixes. In 2012 9th IEEE Working Conference on Mining Software Repositories (MSR). 40--49. https://doi.org/10.1109/MSR.2012.6224298
[55]
A. Potdar and E. Shihab. 2014. An Exploratory Study on Self-Admitted Technical Debt. In 2014 IEEE International Conference on Software Maintenance and Evolution. 91--100.
[56]
Ranjith Purushothaman and Dewayne E. Perry. 2005. Toward Understanding the Rhetoric of Small Source Code Changes. IEEE Trans. Softw. Eng. 31, 6 (June 2005), 511--526. https://doi.org/10.1109/TSE.2005.74
[57]
Foyzur Rahman and Premkumar Devanbu. 2011. Ownership, Experience and Defects: A Fine-grained Study of Authorship. In Proceedings of the 33rd International Conference on Software Engineering (ICSE '11). ACM, New York, NY, USA, 491--500. https://doi.org/10.1145/1985793.1985860
[58]
M. M. Rahman, C. K. Roy, and R. G. Kula. 2017. Predicting Usefulness of Code Review Comments Using Textual Features and Developer Experience. In 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR). 215--226.
[59]
Gema Rodriguez-Perez, Gregorio Robles, and Jesus M. Gonzalez-Barahona. 2017. How Much Time Did It Take to Notify a Bug?: Two Case Studies: Elasticsearch and Nova. In Proceedings of the 8th Workshop on Emerging Trends in Software Metrics (WETSoM '17). IEEE Press, Piscataway, NJ, USA, 29--35. https://doi.org/10.1109/WETSoM.2017. 6
[60]
Chanchal K. Roy, James R. Cordy, and Rainer Koschke. 2009. Comparison and Evaluation of Code Clone Detection Techniques and Tools: A Qualitative Approach. Sci. Comput. Program. 74, 7 (May 2009), 470--495.
[61]
J. Shimagaki, Y. Kamei, S. McIntosh, D. Pursehouse, and N. Ubayashi. 2016. Why are Commits Being Reverted?: A Comparative Study of Industrial and Open Source Projects. In 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME). 301--311. https://doi.org/10.1109/ICSME.2016.83
[62]
Jacek Śliwerski, Thomas Zimmermann, and Andreas Zeller. 2005. When Do Changes Induce Fixes?. In Proceedings of the 2005 International Workshop on Mining Software Repositories (MSR '05). ACM, New York, NY, USA, 1--5. https://doi.org/10.1145/1082983.1083147
[63]
Michele Tufano, Gabriele Bavota, Denys Poshyvanyk, Massimiliano Di Penta, Rocco Oliveto, and Andrea De Lucia. 2017. An empirical study on developerrelated factors characterizing fix-inducing commits. Journal of Software: Evolution and Process 29, 1 (2017).
[64]
Michele Tufano, Jevgenija Pantiuchina, Cody Watson, Gabriele Bavota, and Denys Poshyvanyk. 2019. On learning meaningful code changes via neural machine translation. In Proceedings of the 41st International Conference on Software Engineering, ICSE 2019, Montreal, QC, Canada, May 25-31, 2019. 25--36.
[65]
Michele Tufano, Cody Watson, Gabriele Bavota, Massimiliano Di Penta, Martin White, and Denys Poshyvanyk. 2018. An empirical investigation into learning bug-fixing patches in the wild via neural machine translation. In Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering, ASE 2018, Montpellier, France, September 3-7, 2018. 832--837.
[66]
Fengcai Wen, Csaba Nagy, Gabriele Bavota, and Michele Lanza. 2019. A large-scale empirical study on code-comment inconsistencies. In Proceedings of the 27th International Conference on Program Comprehension, ICPC 2019, Montreal, QC, Canada, May 25-31, 2019. 53--64.
[67]
Meng Yan, Xin Xia, David Lo, Ahmed E. Hassan, and Shanping Li. 2019. Characterizing and identifying reverted commits. Empirical Software Engineering 24, 4 (01 Aug 2019), 2171--2208. https://doi.org/10.1007/s10664-019-09688-8
[68]
Zuoning Yin, Ding Yuan, Yuanyuan Zhou, Shankar Pasupathy, and Lakshmi Bairavasundaram. 2011. How Do Fixes Become Bugs?. In Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering (ESEC/FSE '11). ACM, New York, NY, USA, 26--36. https://doi.org/10.1145/2025113.2025121
[69]
Yangyang Zhao, Hareton Leung, Yibiao Yang, Yuming Zhou, and Baowen Xu. 2017. Towards an Understanding of Change Types in Bug Fixing Code. Inf. Softw. Technol. 86, C (June 2017), 37--53. https://doi.org/10.1016/j.infsof.2017.02.003
[70]
T. Zimmermann, A. Zeller, P. Weissgerber, and S. Diehl. 2005. Mining version histories to guide software changes. IEEE Transactions on Software Engineering 31, 6 (2005), 429--445.

Cited By

View all
  • (2024)Evaluating Open Source IoT Platforms: A GitHub AnalysisProceedings of the ACM/IEEE 6th International Workshop on Software Engineering Research & Practices for the Internet of Things10.1145/3643794.3648348(14-21)Online publication date: 20-Apr-2024
  • (2023)Research on mining software repositories to facilitate refactoringWIREs Data Mining and Knowledge Discovery10.1002/widm.150813:5Online publication date: 22-May-2023
  • (2022)Mining the usage of reactive programming APIsProceedings of the 19th International Conference on Mining Software Repositories10.1145/3524842.3527966(203-214)Online publication date: 23-May-2022
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ICPC '20: Proceedings of the 28th International Conference on Program Comprehension
July 2020
481 pages
ISBN:9781450379588
DOI:10.1145/3387904
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 ACM 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: 12 September 2020

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Empirical Software Engineering
  2. Fixing Commits
  3. Mining Software Repositories

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Funding Sources

  • Schweizerischer Nationalfonds zur Förderung der Wissenschaftlichen Forschung

Conference

ICPC '20
Sponsor:

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)43
  • Downloads (Last 6 weeks)8
Reflects downloads up to 10 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Evaluating Open Source IoT Platforms: A GitHub AnalysisProceedings of the ACM/IEEE 6th International Workshop on Software Engineering Research & Practices for the Internet of Things10.1145/3643794.3648348(14-21)Online publication date: 20-Apr-2024
  • (2023)Research on mining software repositories to facilitate refactoringWIREs Data Mining and Knowledge Discovery10.1002/widm.150813:5Online publication date: 22-May-2023
  • (2022)Mining the usage of reactive programming APIsProceedings of the 19th International Conference on Mining Software Repositories10.1145/3524842.3527966(203-214)Online publication date: 23-May-2022
  • (2022)Exploring and understanding cross-service code clones in microservice projectsProceedings of the 30th IEEE/ACM International Conference on Program Comprehension10.1145/3524610.3527925(449-459)Online publication date: 16-May-2022
  • (2022)Does it matter who pays back Technical Debt? An empirical study of self-fixed TDInformation and Software Technology10.1016/j.infsof.2021.106738143:COnline publication date: 1-Mar-2022
  • (2021)The Wonderless Dataset for Serverless Computing2021 IEEE/ACM 18th International Conference on Mining Software Repositories (MSR)10.1109/MSR52588.2021.00075(565-569)Online publication date: May-2021
  • (2021)Sampling Projects in GitHub for MSR Studies2021 IEEE/ACM 18th International Conference on Mining Software Repositories (MSR)10.1109/MSR52588.2021.00074(560-564)Online publication date: May-2021
  • (2021)Cross-language Code Coupling Detection: A Preliminary Study on Android Applications2021 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME52107.2021.00040(378-388)Online publication date: Sep-2021
  • (2021)Quick remedy commits and their impact on mining software repositoriesEmpirical Software Engineering10.1007/s10664-021-10051-z27:1Online publication date: 28-Oct-2021

View Options

Get Access

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