Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello 馃憢
As part of my Masters Dissertation @FEUP, a GitHub action named GZoltar Automatic Feedback was created. Its main purpose is to improve the results produced by GZoltar, facilitating its interpretation and execution in CI pipelines.
GZoltar is a Java tool that uses automatic techniques to identify the location of faults in software. It utilizes Spectrum-based fault localization for, based on faulty tests, identify a list of fault candidates. The basic steps of Spectrum-Based Fault Localization are: Collect Execution Data; Generate a Spectrum (contains the program's execution trace and is usually represented as a matrix); Calculate Suspiciousness Scores based on one or more available algorithms. If you want to go deeper into this topic, I strongly recommend you to explore this survey.
I took the liberty of configuring both the GZoltar execution and the subsequent data processing with the action created by me in jedis. This is a basic setup that generates line suspiciousnesses using the
ochiai
algorithm; the higher the suspiciousness, the more probable it is that the line has a defect. The idea is that with the continuous use of the generated reports, they can reduce the effort in manually debugging programs, one of the most cumbersome, costly and time-intensive task in software development.So that you can understand how the tools work, I leave two examples:
Basic Maven example
Example of a commit with tests failing in the jedis repository
Line Suspiciousness on Diff
Main Fault Localization Report
If you have any questions or suggestions, please don't hesitate to let us know!