This paper introduces an adaptive ranking approach that leverages domain knowledge through functional decomposi-
tions of source code files into methods, API descriptions of library components used in the code, the bug-fixing history,
and the code change history. Given a bug report, the ranking score of each source file is computed as a weighted combi-
nation of an array of features encoding domain knowledge, where the weights are trained automatically on previously solved bug reports using a learning-to-rank technique.
Contributions of The Paper
They made a few key contributions based on their domain specific observations - using API descriptions to bridge the lexical gap between bug reports and source code; exploiting previously fixed bug reports as training examples for the proposed ranking model in conjunction with a learning-to-rank technique; and a strong benchmark dataset created by checking out a before version of the source code package for each bug report. The observations and contribution in detail are :
While a bug report may share textual tokens with its relevant source, in general there is a significant inherent mismatch between the natural language employed in the bug report and the programming language used in the code. Their system features bridge the corresponding lexical gap by using project specific API documentation to connect natural language terms in the bug report with programming language constructs in the code. They use two different score for this - Surface Lexical Similarity and API enriched Lexical Similarity.
A bug report summary may directly mention a class name in the summary, which provides a useful signal that the cor- responding source file implementing that class may be relevant for the bug report. When the class name is longer and thus
more specific it becomes more important. So they incorporate Class Name Similarity Score
Source code files may contain a large number of methods of which only a small number may be causing the bug. Correspondingly, the source code is syntactically parsed into methods and the features are designed to exploit
method-level measures of relevance for a bug report. It has been previously observed that software process metrics (e.g.,
change history) are more important than code metrics (e.g., size of codes) in detecting defects. Consequently, they use the change history of source code as a strong signal for linking fault-prone files with bug reports. They use Bug Fixing Recency and Bug Fixing Frequency score.
A buggy source file may cause more than one abnormal behavior, and therefore may be responsible for similar bug reports. If we equate a bug report with a user and a source code file with an item that the user may like or not, then we can draw an analogy with recommender systems and employ the concept of collaborative filtering score.
Finally, the resulting ranking function is a linear combination of features, whose weights are automatically trained on previously solved bug reports using a learning-to-rank technique.
Publisher
FSE
Link to The Paper
https://dl.acm.org/doi/10.1145/2635868.2635874
Name of The Authors
Xin Ye, Razvan Bunescu, and Chang Liu
Year of Publication
2014
Summary
This paper introduces an adaptive ranking approach that leverages domain knowledge through functional decomposi- tions of source code files into methods, API descriptions of library components used in the code, the bug-fixing history, and the code change history. Given a bug report, the ranking score of each source file is computed as a weighted combi- nation of an array of features encoding domain knowledge, where the weights are trained automatically on previously solved bug reports using a learning-to-rank technique.
Contributions of The Paper
They made a few key contributions based on their domain specific observations - using API descriptions to bridge the lexical gap between bug reports and source code; exploiting previously fixed bug reports as training examples for the proposed ranking model in conjunction with a learning-to-rank technique; and a strong benchmark dataset created by checking out a before version of the source code package for each bug report. The observations and contribution in detail are :
Finally, the resulting ranking function is a linear combination of features, whose weights are automatically trained on previously solved bug reports using a learning-to-rank technique.
Comments
No response