SVANTAGGI
:red_cross: se introduco feature e non funziona, sono costretto a cambiare quello che funzionava per far funzionare questa feature.
SZZ direbbe che il bug è nella classe che funzionava, anche se prima il problema non c'era. creo REGRESSION BUG
:red_cross: il blame va solo una volta indietro, magari non basta.
:red_cross: se cambiamenti al codice non aggiungono nulla (refactoring/zucchero sintattico) potrebbero essere individuati come blame (es: i<6, i<=5). Alcuni tools cercano le modifiche funzionali.
:red_cross: Non posso considerare casi in cui il bug esiste e non è stato ancora fixato. Quindi SZZ funziona solo con bug che sono stati fixati, solo con esso capisco se classe è buggy o no! In altre parole assumo di toccare cose non 'rotte'
:red_cross: Se un requisito cambia, non posso fare ipotesi sulla bontà della linea di codice tramite SZZ
:red_cross: Un commit potrebbe cambiare qualcosa di rotto e di non rotto insieme.
:red_cross: Se il fix è fatto aggiungendo solo codice senza toccare altro, non trova nulla.
:check: Rispetto a Leveraging ha RECALL PIU' ALTA, perchè non usando le AV va indietro fino a che non trova quando la LOC è stata 'creata', mentre in Leveraging si cerca solo nelle AV.