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!