Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Information Processing Letters
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Identifying the semantic and textual differences between two versions of a program
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
IEEE Transactions on Software Engineering
Identifying syntactic differences between two programs
Software—Practice & Experience
The Detection of Fault-Prone Programs
IEEE Transactions on Software Engineering
Orthogonal Defect Classification-A Concept for In-Process Measurements
IEEE Transactions on Software Engineering - Special issue on software measurement principles, techniques, and environments
Predicting Fault Incidence Using Software Change History
IEEE Transactions on Software Engineering
ESP: path-sensitive program verification in polynomial time
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
The program dependence graph in a software development environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Dex: A Semantic-Graph Differencing Tool for Studying Changes in Large Code Bases
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Predicting the Location and Number of Faults in Large Software Systems
IEEE Transactions on Software Engineering
Hipikat: A Project Memory for Software Development
IEEE Transactions on Software Engineering
HATARI: raising risk awareness
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Facilitating software evolution research with kenyon
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
MSR '05 Proceedings of the 2005 international workshop on Mining software repositories
Deriving object typestates in the presence of inter-object references
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Software Defect Association Mining and Defect Correction Effort Prediction
IEEE Transactions on Software Engineering
Proceedings of the 28th international conference on Software engineering
Mining version archives for co-changed lines
Proceedings of the 2006 international workshop on Mining software repositories
Predicting fault-prone components in a java legacy system
Proceedings of the 2006 ACM/IEEE international symposium on Empirical software engineering
Automatic Identification of Bug-Introducing Changes
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
JDiff: A differencing technique and tool for object-oriented programs
Automated Software Engineering
Which warnings should I fix first?
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Accurate Interprocedural Null-Dereference Analysis for Java
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
International Journal of Information System Modeling and Design
Hi-index | 0.01 |
Information about the origins of a bug can be useful for many applications, such as the computation of defect age and fault-proneness of code components. Although there exists an extensive body of research that has investigated the applications of bug-fix information, the computation of bug-origin information and its applications have largely been ignored--the only known approach for identifying bug origins has limitations. In this paper, we present a new approach for identifying bug-introducing code changes. The key innovation of our approach is that it analyzes the effects of bug-fix code changes on program dependences and, based on these effects, identifies the bug-introducing version. Thus, unlike the existing approach, which is text-based, our technique partially takes into account semantics of code changes. This can make it not only more accurate, but also applicable to a wider class of bug-fix code changes.To evaluate the feasibility and usefulness of our technique, we performed a preliminary empirical evaluation. Our results indicate that technique can be more effective than the text-based approach, and has an acceptable computational cost, be potentially useful in practice.