Automated Software Repair Event Inference
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Automated software repair systems face challenges in accurately identifying and correcting errors in software programs due to vague commit messages and the lack of clear event insights from existing source code repositories, known as 'big code', which hinders effective error detection and repair.
Innovation Solution
A computing system is configured to infer events corresponding to changes in software programs by performing event type inference operations, generating detailed commit messages, and removing secondary modifications to identify primary changes contributing to errors, thereby facilitating error correction and improving software development.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If automated repair systems use existing source code repositories to identify and correct errors, then error correction capability is improved, but the lack of clear event insights and vague commit messages hinders effective error detection
Solution Approach 1:
The system performs preliminary event type inference operations on source code changes before repair attempts. By inferring event types (such as fault introduction, fault correction, defect introduction, defect correction, platform migration) from commit messages and code changes in advance, the system prepares structured event insights that guide subsequent error detection and repair processes, transforming vague commit messages into actionable event information.
2Measurement precision
If the system performs multiple event type inference operations to identify primary changes, then error detection accuracy is improved, but the complexity of the repair system increases
Solution Approach 1:
The system segments the complex task of error detection into multiple distinct event type inference operations. Each inference operation focuses on a specific event type (fault introduction, fault correction, defect introduction, defect correction, platform migration), allowing the system to analyze different aspects of code changes separately. This segmentation improves detection accuracy by specializing each inference operation while managing complexity through modular design.
Solution Approach 2:
The system introduces event type inferences as intermediary representations between raw commit messages and error detection results. These inferences act as mediators that translate vague commit messages into structured event information, enabling more accurate error detection without requiring the system to directly process ambiguous original messages, thus improving precision while managing complexity through intermediate abstraction.
3Ease of repair
If the system removes secondary modifications to identify primary changes, then repair effectiveness is improved, but the time required for analysis increases
Solution Approach 1:
The system extracts and removes secondary modifications from code changes to isolate primary changes that are most relevant to error introduction and repair. By separating primary changes (which directly cause or fix errors) from secondary modifications (which are less relevant), the system focuses analysis on critical changes, improving repair effectiveness by concentrating resources on the most impactful modifications while filtering out noise from secondary changes.
Data Source
AI summary
According to an aspect of an embodiment, operations may include determining a plurality of event correspondences. Each event correspondence may indicate a correspondence between a respective change of a plurality of changes made to first source code of a first software program and a respective event type that occurs with respect to the first software program. The plurality of event correspondences may be determined by performing two or more event type inference operations of a plurality of event type inference operations. The plurality of event type inference operations may include determining a fault introduction event, determining a fault correction event, determining a defect introduction event, determining a defect correction event, and determining a platform migration event.


