Return to search

Contributions to the usability of Sorald for repairing static analysis violations / En studie om Soralds användarvänlighet för reparation av regelbrott i statisk kodanalys

Automated static analysis tools are important in modern software quality assurance. These tools scan the input source or binary code for a set of rules to detect functional or maintainability problems and then warn developers about the found rule violations. Then, developers analyze and possibly repair the rule violations in a manual procedure, which can be time-consuming. Since human effort is costly, automated solutions for repairing rule violations would play an important role in software development. In a previous work, a tool named Sorald was developed to automatically repair rule violations generated by the static analyzer SonarJava. However, there is a lack of reliability of Sorald in generating patches and also a lack of automation for the usage of Sorald by developers. Therefore, in this work, solutions are proposed to improve the usability of Sorald. First, a new strategy of source code analysis and repair was introduced in Sorald, which allows Sorald to deliver a fix even when an internal failure occurs in Sorald. Second, Sorald was integrated into a repair bot, named Repairnator, which was then integrated into the Jenkins continuous integration service. This allows Sorald to be automatically executed in continuous integration builds and its generated patches to be automatically proposed to developers on GitHub. As an evaluation of the proposed solutions, Sorald was executed and monitored on 28 open-source projects hosted on GitHub. The results show that the new repair strategy improves the performance of Sorald in terms of the number of fixes, while the repair time remains mostly unchanged when compared with the default repair strategy. Moreover, the total repair time of Sorald for the 15 supported SonarJava rules is within the continuous integration time of the analyzed projects, which means that it is feasible to repair projects with Sorald in such an environment. Finally, most Sorald patches are compilable and usually accepted without negative comments by developers, once there exists a reaction on the proposed GitHub pull requests. In conclusion, the contributions of this work improve the overall usability of Sorald as an automated software repair tool. / Automatiserade statiska analysverktyg är viktiga för modern kvalitetssäkring inom mjukvaruutveckling. Dessa verktyg skannar ingångskällan eller binärkoden för en uppsättning regler för att upptäcka funktions- eller underhållsproblem och varnar sedan utvecklare om de upptäcker några regelbrott. Utvecklare som äger den analyserad kodebasen, granskar sedan dessa regelbrott och eventuellt reparerar dem i en manuell procedur, vilket kan vara tidskrävande. Eftersom mänskliga ansträngningar är kostsamma skulle automatiserade lösningar för att reparera dessa regelbrott spela en viktig roll i programvaruutveckling. I ett tidigare arbete utvecklades ett verktyg som heter Sorald för att automatiskt reparera regelbrott som genererats av den statiska analysatorn SonarJava. Det finns dock brist på tillförlitlighet hos Sorald när det gäller att generera korrigeringsfiler och brist på automatisering för utvecklingen av Sorald. Därför föreslås i detta arbete lösningar för att förbättra Soralds användbarhet. Först introducerades en ny strategi för källkodsanalys och reparation i Sorald, som gör det möjligt för Sorald att leverera en fix även när ett internt fel inträffar i Sorald. För det andra integrerades Sorald i en reparationsbot, namnet Repairnator, som sedan integrerades i Jenkins kontinuerliga integrationstjänst. Detta gör att Sorald kan köras automatiskt i kontinuerliga integrationsbyggnader och dessa genererade korrigeringar automatiskt föreslås för utvecklare på GitHub. Som en utvärdering av de föreslagna lösningarna utfördes och övervakades Sorald på 28 öppen källkodsprojekt värd på GitHub. Resultaten visar att den nya reparationsstrategin förbättrar prestationen för Sorald när det gäller antalet korrigeringar, medan reparationstiden förblir oförändrad jämfört med standardreparationsstrategin. Dessutom ligger den totala reparationstiden för Sorald för de 15 stödda SonarJava-reglerna inom den kontinuerliga integrationstiden för de analyserade projekten, vilket innebär att det är möjligt att reparera projekt med Sorald i en sådan miljö. Slutligen är de flesta Sorald-korrigeringar sammanställbara och accepteras vanligtvis utan negativa kommentarer från utvecklare, när det finns en reaktion på de föreslagna GitHub-förfrågningarna. Sammanfattningsvis förbättrar bidraget från detta arbete Soralds övergripande användbarhet som ett automatiskt verktyg för reparation av programvara.

Identiferoai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-304373
Date January 2021
CreatorsLuong Phu, Henry
PublisherKTH, Skolan för elektroteknik och datavetenskap (EECS)
Source SetsDiVA Archive at Upsalla University
LanguageEnglish
Detected LanguageSwedish
TypeStudent thesis, info:eu-repo/semantics/bachelorThesis, text
Formatapplication/pdf
Rightsinfo:eu-repo/semantics/openAccess
RelationTRITA-EECS-EX ; 2021:622

Page generated in 0.0028 seconds