Impact of tool support in patch construction

@article{Koyuncu2017ImpactOT,
  title={Impact of tool support in patch construction},
  author={Anil Koyuncu and Tegawend{\'e} F. Bissyand{\'e} and Dongsun Kim and Jacques Klein and Monperrus Martin and Yves Le Traon},
  journal={Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis},
  year={2017}
}
In this work, we investigate the practice of patch construction in the Linux kernel development, focusing on the differences between three patching processes: (1) patches crafted entirely manually to fix bugs, (2) those that are derived from warnings of bug detection tools, and (3) those that are automatically generated based on fix patterns. With this study, we provide to the research community concrete insights on the practice of patching as well as how the development community is currently… 

Figures and Tables from this paper

A Closer Look at Real-World Patches

It is found that there are opportunities for APR techniques to improve their effectiveness by looking at code elements that have not yet been investigated, and expression-level granularity could reduce search space of finding fix ingredients, where previous studies never explored.

iFixR: bug report driven program repair

This work investigates a new repair pipeline, iFixR, driven by bug reports, where bug reports are fed to an IR-based fault localizer; patches are generated from fix patterns and validated via regression testing; and a prioritized list of generated patches is proposed to developers.

How Different Is It Between Machine-Generated and Developer-Provided Patches? : An Empirical Study on the Correct Patches Generated by Automated Program Repair Techniques

This study conducts an empirical study towards understanding the correct patches that are generated by existing state-of-the-art APR techniques, aiming at providing guidelines for future assessment of patches.

AVATAR: Fixing Semantic Bugs with Fix Patterns of Static Analysis Violations

This study builds the AVATAR APR system, which exploits fix patterns of static analysis violations as ingredients for patch generation, and highlights the relevance of static bug finding tools as indirect contributors of fix ingredients for addressing code defects identified with functional test cases.

Regions Step 2 Step 3 Step 4 Step 5 Divide Conquer Best Models Leaf-wise Weights Computations Code changes in Software repositories Bug fix patches

This work investigates a new repair pipeline, iFixR, driven by bug reports, where bug reports are fed to an IR-based fault localizer; patches are generated from fix patterns and validated via regression testing; and a prioritized list of generated patches is proposed to developers.

Mining Android crash fixes in the absence of issue- and change-tracking systems

This work proposes a scalable approach, CraftDroid, to mine crash fixes by leveraging a set of 28 thousand carefully reconstructed app lineages from app markets, without the need for the app source code or issue reports, and developed a replicative testing approach that locates fixes among app versions which output different runtime logs with the exact same test inputs.

FixMiner: Mining relevant fix patterns for automated program repair

This paper proposes a systematic and automated approach to mining relevant and actionable fix patterns based on an iterative clustering strategy applied to atomic changes within patches and shows that the mined fix patterns are sufficiently relevant to produce patches with a high probability of correctness.

ReturnStatement “ return statement code ” InfixExpression “ InfixExpression code ” “ code ” MethodInvocation “ code ” InfixExpression “ code

It is found that there are opportunities for APR techniques to improve their effectiveness by looking at code elements that have not yet been investigated and expression-level granularity could reduce search space of finding fix ingredients, where previous studies never explored.

GumTree Pattern MiningData PreprocessingData Collection Projects Commits Static analysis tool Fixed static analysis violations Buggy tree Fixed tree Edit scripts

This study builds the AVATAR APR system, which exploits fix patterns of static analysis violations as ingredients for patch generation, and highlights the relevance of static bug finding tools as indirect contributors of fix ingredients for addressing code defects identified with functional test cases.

Watch out for this commit! A study of influential software changes

This paper investigates influential software changes and proposes an approach to identify them immediately when they are applied, and builds a classification model of ICs to help developers find and address them early.

References

SHOWING 1-10 OF 53 REFERENCES

A human study of patch maintainability

This work presents a human study involving over 150 participants, 32 real-world defects, and 40 distinct patches, and proposes a system wherein machine-generated patches are augmented with synthesized, human-readable documentation that summarizes their effects and context.

Automatic patch generation learned from human-written patches

A novel patch generation approach, Pattern-based Automatic program Repair (Par), using fix patterns learned from existing human-written patches to generate program patches automatically, which is more acceptable than GenProg.

DirectFix: Looking for Simple Program Repairs

This paper presents a novel semantics-based repair method that generates the simplest patch such that the program structure of the buggy program is maximally preserved and fuses fault localization and repair generation into one step.

Harvesting Fix Hints in the History of Bugs

This work builds on the assumption that bugs, and the associated user bug reports, are repetitive and proposes a new approach of fix recommendations based on the history of bugs and their associated fixes, using information retrieval techniques and machine learning classification.

Toward an understanding of bug fix patterns

Overall, data in the paper suggest that developers have difficulty with specific code situations at surprisingly consistent rates, and there appear to be broad mechanisms causing the injection of bugs that are largely independent of the type of software being produced.

An Empirical Study on Real Bug Fixes

  • Hao ZhongZ. Su
  • Computer Science
    2015 IEEE/ACM 37th IEEE International Conference on Software Engineering
  • 2015
BUGSTAT is designed and developed, a tool that extracts and analyzes bug fixes and provides useful guidance and insights on the two key ingredients of automatic program repair: fault localization and faulty code fix.

Generic patch inference

  • J. AndersenJ. Lawall
  • Computer Science
    2008 23rd IEEE/ACM International Conference on Automated Software Engineering
  • 2008
A tool is presented that identifies common changes made in a set of files and their updated versions, and extracts a generic patch performing those changes, and the inferred generic patches are more concise than the corresponding patches found in commits to the Linux source tree while being safe with respect to the changes performed in the provided driver files.

WYSIWIB: A declarative approach to finding API protocols and bugs in Linux code

This work proposes a declarative approach to bug finding in Linux OS code using a control-flow based program search engine, called WYSIWIB (What You See Is Where It Bugs), since the programmer expresses specifications for bug finding using a syntax close to that of ordinary C code.

Documenting and automating collateral evolutions in linux device drivers

This paper presents an automatic program transformation tool Coccinelle, for documenting and automating device driver collateral evolutions, and uses a language based on the patch syntax to express transformations, extending patches to semantic patches.

Recurring bug fixes in object-oriented programs

Based on graph-based representation of object usages, this work has developed several techniques to identify code peers, recognize recurring bug fixes, and recommend changes for code units from the bug fixes of their peers.
...