24 research outputs found
Where is the Bug and How is It Fixed? An Experiment with Practitioners
Research has produced many approaches to automatically locate, explain, and
repair software bugs. But do these approaches relate to the way practitioners actually locate,
understand, and fix bugs? To help answer this question, we have collected a dataset named
DBGBENCH---the correct fault locations, bug diagnoses, and software patches of 27 real
errors in open-source C projects that were consolidated from hundreds of debugging
sessions of professional software engineers. Moreover, we shed light on the entire
debugging process, from constructing a hypothesis to submitting a patch, and how
debugging time, difficulty, and strategies vary across practitioners and types of errors. Most
notably, DBGBENCH can serve as reality check for novel automated debugging and repair
techniques
A Fault Localization and Debugging Support Framework driven by Bug Tracking Data
Fault localization has been determined as a major resource factor in the
software development life cycle. Academic fault localization techniques are
mostly unknown and unused in professional environments. Although manual
debugging approaches can vary significantly depending on bug type (e.g. memory
bugs or semantic bugs), these differences are not reflected in most existing
fault localization tools. Little research has gone into automated
identification of bug types to optimize the fault localization process.
Further, existing fault localization techniques leverage on historical data
only for augmentation of suspiciousness rankings. This thesis aims to provide a
fault localization framework by combining data from various sources to help
developers in the fault localization process. To achieve this, a bug
classification schema is introduced, benchmarks are created, and a novel fault
localization method based on historical data is proposed.Comment: 4 page
Root cause prediction based on bug reports
This paper proposes a supervised machine learning approach for predicting the
root cause of a given bug report. Knowing the root cause of a bug can help
developers in the debugging process - either directly or indirectly by choosing
proper tool support for the debugging task. We mined 54755 closed bug reports
from the issue trackers of 103 GitHub projects and applied a set of heuristics
to create a benchmark consisting of 10459 reports. A subset was manually
classified into three groups (semantic, memory, and concurrency) based on the
bugs' root causes. Since the types of root cause are not equally distributed, a
combination of keyword search and random selection was applied. Our data set
for the machine learning approach consists of 369 bug reports (122 concurrency,
121 memory, and 126 semantic bugs). The bug reports are used as input to a
natural language processing algorithm. We evaluated the performance of several
classifiers for predicting the root causes for the given bug reports. Linear
Support Vector machines achieved the highest mean precision (0.74) and recall
(0.72) scores. The created bug data set and classification are publicly
available.Comment: 6 page
You Cannot Fix What You Cannot Find! An Investigation of Fault Localization Bias in Benchmarking Automated Program Repair Systems
Properly benchmarking Automated Program Repair (APR) systems should
contribute to the development and adoption of the research outputs by
practitioners. To that end, the research community must ensure that it reaches
significant milestones by reliably comparing state-of-the-art tools for a
better understanding of their strengths and weaknesses. In this work, we
identify and investigate a practical bias caused by the fault localization (FL)
step in a repair pipeline. We propose to highlight the different fault
localization configurations used in the literature, and their impact on APR
systems when applied to the Defects4J benchmark. Then, we explore the
performance variations that can be achieved by `tweaking' the FL step.
Eventually, we expect to create a new momentum for (1) full disclosure of APR
experimental procedures with respect to FL, (2) realistic expectations of
repairing bugs in Defects4J, as well as (3) reliable performance comparison
among the state-of-the-art APR systems, and against the baseline performance
results of our thoroughly assessed kPAR repair tool. Our main findings include:
(a) only a subset of Defects4J bugs can be currently localized by commonly-used
FL techniques; (b) current practice of comparing state-of-the-art APR systems
(i.e., counting the number of fixed bugs) is potentially misleading due to the
bias of FL configurations; and (c) APR authors do not properly qualify their
performance achievement with respect to the different tuning parameters
implemented in APR systems.Comment: Accepted by ICST 201
Leveraging Static Analysis for Bug Repair
We propose a method combining machine learning with a static analysis tool
(i.e. Infer) to automatically repair source code. Machine Learning methods
perform well for producing idiomatic source code. However, their output is
sometimes difficult to trust as language models can output incorrect code with
high confidence. Static analysis tools are trustable, but also less flexible
and produce non-idiomatic code. In this paper, we propose to fix resource leak
bugs in IR space, and to use a sequence-to-sequence model to propose fix in
source code space. We also study several decoding strategies, and use Infer to
filter the output of the model. On a dataset of CodeNet submissions with
potential resource leak bugs, our method is able to find a function with the
same semantics that does not raise a warning with around 97% precision and 66%
recall.Comment: 13 pages. DL4C 202