Automatically fixing static analysis tools violations

Detalhes bibliográficos
Autor(a) principal: Marcilio, Diego Venâncio
Data de Publicação: 2019
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UnB
Texto Completo: https://repositorio.unb.br/handle/10482/37098
Resumo: Dissertação (mestrado)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2019.
id UNB_78d3dc8330ff2d115f6cfa8e6f1ae514
oai_identifier_str oai:repositorio2.unb.br:10482/37098
network_acronym_str UNB
network_name_str Repositório Institucional da UnB
repository_id_str
spelling Marcilio, Diego VenâncioAlmeida, Rodrigo Bonifácio de2020-03-11T22:12:39Z2020-03-11T22:12:39Z2020-03-112019-08-05MARCILIO, Diego Venâncio. Automatically fixing static analysis tools violations. 2019. xi, 62 f., il. Dissertação (Mestrado em Informática)—Universidade de Brasília, Brasília, 2019.https://repositorio.unb.br/handle/10482/37098Dissertação (mestrado)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2019.A qualidade de software tem se tornado cada vez mais importante à medida que a so- ciedade depende mais de sistemas de software. Defeitos de software podem custar caro à organizações, especialmente quando causam falhas. Ferramentas de análise estática analisam código para encontrar desvios, ou violações, de práticas recomendadas de pro- gramação definidas como regras. Essa análise pode encontrar defeitos de software de forma antecipada, mais rápida e barata, em contraste à inspeções manuais. Para corrigir- se uma violação é necessário que o programador modifique o código problemático. Essas modificações podem ser tediosas, passíveis de erro e repetitivas. Dessa forma, a au- tomação de transformações de código é uma funcionalidade frequentemente requisitada por desenvolvedores. Esse trabalho implementa transformações automáticas para resolver violações identificadas por ferramentas de análise estática. Primeiro, nós investigamos o uso da ferramenta SonarQube, uma ferramenta amplamente utilizada, em duas grandes organizações open-source e duas instituições do Governo Federal do Brasil. Nossos re- sultados mostram que um pequeno subconjunto de regras é responsável por uma grande porção das violações resolvidas. Nós implementamos transformações automáticas para 11 regras do conjunto de regras comumente resolvidas achadas no estudo anterior. Nós submetemos 38 pull requests, incluindo 920 soluções para violações, geradas automati- camente pela nossa técnica para diversos projetos open-source na linguagem Java. Os mantenedores dos projetos aceitaram 84% das nossas transformações, sendo 95% delas sem nenhuma modificação. Esses resultados indicam que nossa abordagem é prática, e pode auxiliar desenvolvedores com resoluções automáticas, uma funcionalidade frequente- mente requisitada.Software quality is becoming more important as the reliance on software systems in- creases. Software defects may have a high cost to organizations as some can lead to software failure. Static analysis tools analyze code to find deviations, or violations, from recommended programming practices defined as rules. This analysis can find software defects earlier, faster, and cheaper than manual inspections. When fixing a violation, a programmer is required to modify the violating code. Such modifications can be tedious, error-prone, and repetitive. Unsurprisingly, automated transformations are frequently re- quested by developers. This work implements automatic transformations tailored to solve violations identified by static analysis tools. First, we investigate the use of SonarQube, a widely used Static Analysis Tool, in two large open source organizations and two Brazil- ian Government Federal Institutions. Our results show that a small subset of the rules is responsible for a large portion of the fixes. We implement automatic fixes for 11 rules from the previously found set of frequently fixed rules. We submitted 38 pull requests, including 920 fixes generated automatically by our technique for various open-source Java projects. Projects maintainers accepted 84% of our fixes (95% of them without any mod- ifications). These results indicate that our approach is feasible, and can aid developers with automatic fixes, a long requested feature.A concessão da licença deste item refere-se ao termo de autorização impresso assinado pelo autor com as seguintes condições: Na qualidade de titular dos direitos de autor da publicação, autorizo a Universidade de Brasília e o IBICT a disponibilizar por meio dos sites www.bce.unb.br, www.ibict.br, http://hercules.vtls.com/cgi-bin/ndltd/chameleon?lng=pt&skin=ndltd sem ressarcimento dos direitos autorais, de acordo com a Lei nº 9610/98, o texto integral da obra disponibilizada, conforme permissões assinaladas, para fins de leitura, impressão e/ou download, a título de divulgação da produção científica brasileira, a partir desta data.info:eu-repo/semantics/openAccessAutomatically fixing static analysis tools violationsinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisSoftwareEstáticaSoftware - defeitosporreponame:Repositório Institucional da UnBinstname:Universidade de Brasília (UnB)instacron:UNBORIGINAL2019_DiegoVenâncioMarcilio.pdf2019_DiegoVenâncioMarcilio.pdfapplication/pdf422955http://repositorio2.unb.br/jspui/bitstream/10482/37098/1/2019_DiegoVen%c3%a2ncioMarcilio.pdf19202778eb181c4b26191a265418359aMD51open accessLICENSElicense.txtlicense.txttext/plain671http://repositorio2.unb.br/jspui/bitstream/10482/37098/2/license.txtbacfee268cc5d4f6aaa2e6e0066d38f5MD52open access10482/370982023-07-14 15:56:22.657open accessoai:repositorio2.unb.br:10482/37098QSBjb25jZXNzw6NvIGRhIGxpY2Vuw6dhIGRlc3RlIGl0ZW0gcmVmZXJlLXNlIGFvIHRlcm1vIGRlIGF1dG9yaXphw6fDo28gaW1wcmVzc28gYXNzaW5hZG8gDQpwZWxvIGF1dG9yIGNvbSBhcyBzZWd1aW50ZXMgY29uZGnDp8O1ZXM6DQoNCk5hIHF1YWxpZGFkZSBkZSB0aXR1bGFyIGRvcyBkaXJlaXRvcyBkZSBhdXRvciBkYSBwdWJsaWNhw6fDo28sIGF1dG9yaXpvIGEgVW5pdmVyc2lkYWRlIGRlIEJyYXPDrWxpYQ0KIGUgbyBJQklDVCBhIGRpc3BvbmliaWxpemFyIHBvciBtZWlvIGRvcyBzaXRlcyB3d3cuYmNlLnVuYi5iciwgd3d3LmliaWN0LmJyLA0KIGh0dHA6Ly9oZXJjdWxlcy52dGxzLmNvbS9jZ2ktYmluL25kbHRkL2NoYW1lbGVvbj9sbmc9cHQmc2tpbj1uZGx0ZCBzZW0gcmVzc2FyY2ltZW50byBkb3MgDQpkaXJlaXRvcyBhdXRvcmFpcywgZGUgYWNvcmRvIGNvbSBhIExlaSBuwrogOTYxMC85OCwgbyB0ZXh0byBpbnRlZ3JhbCBkYSBvYnJhIGRpc3BvbmliaWxpemFkYSwNCiBjb25mb3JtZSBwZXJtaXNzw7VlcyBhc3NpbmFsYWRhcywgcGFyYSBmaW5zIGRlIGxlaXR1cmEsIGltcHJlc3PDo28gZS9vdSBkb3dubG9hZCwgYSB0w610dWxvIGRlIA0KZGl2dWxnYcOnw6NvIGRhIHByb2R1w6fDo28gY2llbnTDrWZpY2EgYnJhc2lsZWlyYSwgYSBwYXJ0aXIgZGVzdGEgZGF0YS4=Biblioteca Digital de Teses e DissertaçõesPUBhttps://repositorio.unb.br/oai/requestopendoar:2023-07-14T18:56:22Repositório Institucional da UnB - Universidade de Brasília (UnB)false
dc.title.pt_BR.fl_str_mv Automatically fixing static analysis tools violations
title Automatically fixing static analysis tools violations
spellingShingle Automatically fixing static analysis tools violations
Marcilio, Diego Venâncio
Software
Estática
Software - defeitos
title_short Automatically fixing static analysis tools violations
title_full Automatically fixing static analysis tools violations
title_fullStr Automatically fixing static analysis tools violations
title_full_unstemmed Automatically fixing static analysis tools violations
title_sort Automatically fixing static analysis tools violations
author Marcilio, Diego Venâncio
author_facet Marcilio, Diego Venâncio
author_role author
dc.contributor.author.fl_str_mv Marcilio, Diego Venâncio
dc.contributor.advisor1.fl_str_mv Almeida, Rodrigo Bonifácio de
contributor_str_mv Almeida, Rodrigo Bonifácio de
dc.subject.keyword.pt_BR.fl_str_mv Software
Estática
Software - defeitos
topic Software
Estática
Software - defeitos
description Dissertação (mestrado)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2019.
publishDate 2019
dc.date.submitted.none.fl_str_mv 2019-08-05
dc.date.accessioned.fl_str_mv 2020-03-11T22:12:39Z
dc.date.available.fl_str_mv 2020-03-11T22:12:39Z
dc.date.issued.fl_str_mv 2020-03-11
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv MARCILIO, Diego Venâncio. Automatically fixing static analysis tools violations. 2019. xi, 62 f., il. Dissertação (Mestrado em Informática)—Universidade de Brasília, Brasília, 2019.
dc.identifier.uri.fl_str_mv https://repositorio.unb.br/handle/10482/37098
identifier_str_mv MARCILIO, Diego Venâncio. Automatically fixing static analysis tools violations. 2019. xi, 62 f., il. Dissertação (Mestrado em Informática)—Universidade de Brasília, Brasília, 2019.
url https://repositorio.unb.br/handle/10482/37098
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.source.none.fl_str_mv reponame:Repositório Institucional da UnB
instname:Universidade de Brasília (UnB)
instacron:UNB
instname_str Universidade de Brasília (UnB)
instacron_str UNB
institution UNB
reponame_str Repositório Institucional da UnB
collection Repositório Institucional da UnB
bitstream.url.fl_str_mv http://repositorio2.unb.br/jspui/bitstream/10482/37098/1/2019_DiegoVen%c3%a2ncioMarcilio.pdf
http://repositorio2.unb.br/jspui/bitstream/10482/37098/2/license.txt
bitstream.checksum.fl_str_mv 19202778eb181c4b26191a265418359a
bacfee268cc5d4f6aaa2e6e0066d38f5
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UnB - Universidade de Brasília (UnB)
repository.mail.fl_str_mv
_version_ 1803573555563069440