Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código

Detalhes bibliográficos
Autor(a) principal: Rheinboldt, Renan Lobato
Data de Publicação: 2018
Outros Autores: Chaves, Rodrigo de Araujo
Tipo de documento: Trabalho de conclusão de curso
Idioma: por
Título da fonte: Biblioteca Digital de Monografias da UnB
Texto Completo: https://bdm.unb.br/handle/10483/25111
Resumo: Trabalho de Conclusão de Curso (graduação)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2018.
id UNB-2_b61468d07c17d4d7c76c0cc6754c9ab5
oai_identifier_str oai:bdm.unb.br:10483/25111
network_acronym_str UNB-2
network_name_str Biblioteca Digital de Monografias da UnB
repository_id_str 11571
spelling Rheinboldt, Renan LobatoChaves, Rodrigo de AraujoAlmeida, Rodrigo Bonifácio deRHEINBOLDT, Renan Lobato; CHAVES, Rodrigo de Araujo. Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código. 2018. x, 25 f. Trabalho de Conclusão de Curso (Licenciatura em Ciência da Computação)—Universidade de Brasília, Brasília, 2018.https://bdm.unb.br/handle/10483/25111Trabalho de Conclusão de Curso (graduação)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2018.Ferramentas de análise estática auxiliam muito bem o desenvolvimento de software, detectando erros de programação e más práticas. Mesmo com seus benefícios claramente reconhecidos, elas ainda são muitas vezes subutilizadas. Existem diversas pesquisas que buscam identificar problemas em sua utilização e propor abordagens mais efetivas para incentivar o uso. Muitas abordagens propostas estão ligadas diretamente ao fluxo de trabalho dos desenvolvedores, indicando que a usabilidade das ferramentas de análise estática é fortemente impactada pelo jeito que os desenvolvedores programam no dia-a-dia. Neste estudo propomos Amanda-Bot, uma abordagem para a correção automática de problemas de código-fonte para o modelo pull-based development, um fluxo de trabalho que permite colaboração distribuída sobre uma base de código compartilhado e que está se tornando especialmente popular em start-ups e na comunidade de software de código aberto. Amanda-Bot funciona como um mecanismo baseado em bots, que observa o repositório do código-fonte e executa análises estáticas e transformações de código-fonte sobre o conjunto de mudanças, toda vez que uma modificação do código-fonte é enviada para um repositório de código-fonte. Nas situações em que o bot detecta um problema, ele gera automaticamente um patch e cria um pull-request para corrigí-lo. O principal objetivo do nosso modelo é criar correções automáticas com o objetivo de melhorar a experiência do desenvolvedor, seja reduzindo o esforço para corrigir os alertas ou simplesmente servindo como um exemplo motivacional de como a correção poderia ser. Nossa abordagem traz correções automáticas para o pull based development workflow e pode identificar quais características especificas desse modelo para afetam a adoção de bots e a geração de correções automáticas. Nós estamos usando AmandaBot em diversos projetos desde start-ups até empresa de engenharia de software em Brasília, Brasil. Em poucas semanas, AmandaBot enviou 17 pull requests (7 já foram aceitos), eliminando mais de 3500 code smells em 12 projetos.Submitted by Letícia Fernanda Vieira Ramos (leticia.fernanda_@outlook.com) on 2020-06-16T19:27:35Z No. of bitstreams: 1 2018_RenanRheinboldt_RodrigoChaves_tcc.pdf: 409325 bytes, checksum: 34469b5f7443d7a21c0150fa604de5c8 (MD5)Approved for entry into archive by Biblioteca Digital de Monografias Gerência (bdm@bce.unb.br) on 2020-07-29T19:04:54Z (GMT) No. of bitstreams: 1 2018_RenanRheinboldt_RodrigoChaves_tcc.pdf: 409325 bytes, checksum: 34469b5f7443d7a21c0150fa604de5c8 (MD5)Made available in DSpace on 2020-07-29T19:04:54Z (GMT). No. of bitstreams: 1 2018_RenanRheinboldt_RodrigoChaves_tcc.pdf: 409325 bytes, checksum: 34469b5f7443d7a21c0150fa604de5c8 (MD5)Static analysis tools greatly assist software development by detecting common programming mistakes and bad practices. Despite their recognized benefits, they are still underused, and thus several research works attempt to identify the problems existing approaches present and suggest changes to enhance their effectiveness. Such improvements are known to be highly workflow dependent, indicating that the way developers program on their daily basis have a large impact on the usefulness of static analysis tools. In this study we propose Amanda-Bot, an approach towards the automatic correction of source code issues for the pull-based development model, a workflow that enables distributed collaboration over a shared code base and that is becoming specially popular in start-ups and in the open source software community. Amanda-Bot works as a bot-based mechanism that watches the source code repository and runs static analyses and source code transformations over the change set, every time a source code modification is pushed to a source code repository. In the situations the bot detects an issue, it automatically generates a patch and creates a pull-request to fix it. The main rationale for our design is that automatic fixes have been found to improve developer experience, either by reducing the effort to correct the alarms or simply by serving as a motivating example of what a fix could be. Our approach brings automatic correction to the pull-based development model and is able to identify what specific characteristics of this model might affect bots adoption and automatic fixes generation. We have been using Amanda-Bot in several projects developed by start-ups from a software engineering industry area in Brasília, Brazil. In a few weeks, Amanda-Bot sent 17 pullrequests (7 have already been accepted), fixing more than 3500 code-smells in 12 systems.A concessão da licença deste item refere-se ao termo de autorização impresso assinado pelo autor que autoriza a Biblioteca Digital da Produção Intelectual Discente da Universidade de Brasília (BDM) a disponibilizar meu trabalho de conclusão de curso por meio do sítio bdm.unb.br, com as seguintes condições: disponível sob Licença Creative Commons 4.0 International, que permite copiar, distribuir e transmitir o trabalho, desde que seja citado o autor e licenciante. Não permite o uso para fins comerciais nem a adaptação desta.info:eu-repo/semantics/openAccessAnálise estatísticaProgramação (Computadores)Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de códigoinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesis2020-07-29T19:04:54Z2020-07-29T19:04:54Z2018-05-24porreponame:Biblioteca Digital de Monografias da UnBinstname:Universidade de Brasília (UnB)instacron:UNBLICENSElicense.txtlicense.txttext/plain1817http://bdm.unb.br/xmlui/bitstream/10483/25111/2/license.txt21554873e56ad8ddc69c092699b98f95MD52ORIGINAL2018_RenanRheinboldt_RodrigoChaves_tcc.pdf2018_RenanRheinboldt_RodrigoChaves_tcc.pdfapplication/pdf409325http://bdm.unb.br/xmlui/bitstream/10483/25111/1/2018_RenanRheinboldt_RodrigoChaves_tcc.pdf34469b5f7443d7a21c0150fa604de5c8MD5110483/251112020-07-29 16:04:54.949oai:bdm.unb.br:10483/25111w4kgbmVjZXNzw6FyaW8gY29uY29yZGFyIGNvbSBhIGxpY2Vuw6dhIGRlIGRpc3RyaWJ1acOnw6NvIG7Do28tZXhjbHVzaXZhLAphbnRlcyBxdWUgbyBkb2N1bWVudG8gcG9zc2EgYXBhcmVjZXIgbmEgQmlibGlvdGVjYSBEaWdpdGFsIGRhIFByb2R1w6fDo28gCkRpc2NlbnRlIGRhIFVuaXZlcnNpZGFkZSBkZSBCcmFzw61saWEuIFBvciBmYXZvciwgbGVpYSBhCmxpY2Vuw6dhIGF0ZW50YW1lbnRlLiBDYXNvIG5lY2Vzc2l0ZSBkZSBhbGd1bSBlc2NsYXJlY2ltZW50byBlbnRyZSBlbQpjb250YXRvIGF0cmF2w6lzIGRlOiBiZG1AYmNlLnVuYi5iciBvdSAzMTA3LTI2ODcuCgpMSUNFTsOHQSBERSBESVNUUklCVUnDh8ODTyBOw4NPLUVYQ0xVU0lWQQoKQW8gYXNzaW5hciBlIGVudHJlZ2FyIGVzdGEgbGljZW7Dp2EsIG8vYSBTci4vU3JhLiAoYXV0b3Igb3UgZGV0ZW50b3IgZG9zCmRpcmVpdG9zIGRlIGF1dG9yKToKCmEpIENvbmNlZGUgw6AgVW5pdmVyc2lkYWRlIGRlIEJyYXPDrWxpYSBvIGRpcmVpdG8gbsOjby1leGNsdXNpdm8gZGUKcmVwcm9kdXppciwgY29udmVydGVyIChjb21vIGRlZmluaWRvIGFiYWl4byksIGNvbXVuaWNhciBlL291CmRpc3RyaWJ1aXIgbyBkb2N1bWVudG8gZW50cmVndWUgKGluY2x1aW5kbyBvIHJlc3Vtby9hYnN0cmFjdCkgZW0KZm9ybWF0byBkaWdpdGFsIG91IGltcHJlc3NvIGUgZW0gcXVhbHF1ZXIgbWVpby4KCmIpIERlY2xhcmEgcXVlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIMOpIHNldSB0cmFiYWxobyBvcmlnaW5hbCwgZSBxdWUKZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYQp0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2UsIHRhbnRvIHF1YW50byBsaGUgw6kKcG9zc8OtdmVsIHNhYmVyLCBvcyBkaXJlaXRvcyBkZSBxdWFscXVlciBvdXRyYSBwZXNzb2Egb3UgZW50aWRhZGUuCgpjKSBTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSBjb250w6ltIG1hdGVyaWFsIGRvIHF1YWwgbsOjbyBkZXTDqW0gb3MKZGlyZWl0b3MgZGUgYXV0b3IsIGRlY2xhcmEgcXVlIG9idGV2ZSBhdXRvcml6YcOnw6NvIGRvIGRldGVudG9yIGRvcwpkaXJlaXRvcyBkZSBhdXRvciBwYXJhIGNvbmNlZGVyIMOgIFVuaXZlcnNpZGFkZSBkZSBCcmFzw61saWEgb3MgZGlyZWl0b3MKcmVxdWVyaWRvcyBwb3IgZXN0YSBsaWNlbsOnYSwgZSBxdWUgZXNzZSBtYXRlcmlhbCBjdWpvcyBkaXJlaXRvcyBzw6NvIGRlCnRlcmNlaXJvcyBlc3TDoSBjbGFyYW1lbnRlIGlkZW50aWZpY2FkbyBlIHJlY29uaGVjaWRvIG5vIHRleHRvIG91CmNvbnRlw7pkbyBkbyBkb2N1bWVudG8gZW50cmVndWUuCgpTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSDDqSBiYXNlYWRvIGVtIHRyYWJhbGhvIGZpbmFuY2lhZG8gb3UgYXBvaWFkbwpwb3Igb3V0cmEgaW5zdGl0dWnDp8OjbyBxdWUgbsOjbyBhIFVuaXZlcnNpZGFkZSBkZSBCcmFzw61saWEsIGRlY2xhcmEgcXVlCmN1bXByaXUgcXVhaXNxdWVyIG9icmlnYcOnw7VlcyBleGlnaWRhcyBwZWxvIHJlc3BlY3Rpdm8gY29udHJhdG8gb3UKYWNvcmRvLgoKQSBVbml2ZXJzaWRhZGUgZGUgQnJhc8OtbGlhIGlkZW50aWZpY2Fyw6EgY2xhcmFtZW50ZSBvKHMpIHNldSAocykgbm9tZSAocykKY29tbyBvIChzKSBhdXRvciAoZXMpIG91IGRldGVudG9yIChlcykgZG9zIGRpcmVpdG9zIGRvIGRvY3VtZW50bwplbnRyZWd1ZSwgZSBuw6NvIGZhcsOhIHF1YWxxdWVyIGFsdGVyYcOnw6NvLCBwYXJhIGFsw6ltIGRhcyBwZXJtaXRpZGFzIHBvcgplc3RhIGxpY2Vuw6dhLgo=Biblioteca Digital de Monografiahttps://bdm.unb.br/PUBhttp://bdm.unb.br/oai/requestbdm@bce.unb.br||patricia@bce.unb.bropendoar:115712020-07-29T19:04:54Biblioteca Digital de Monografias da UnB - Universidade de Brasília (UnB)false
dc.title.pt_BR.fl_str_mv Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código
title Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código
spellingShingle Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código
Rheinboldt, Renan Lobato
Análise estatística
Programação (Computadores)
title_short Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código
title_full Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código
title_fullStr Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código
title_full_unstemmed Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código
title_sort Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código
author Rheinboldt, Renan Lobato
author_facet Rheinboldt, Renan Lobato
Chaves, Rodrigo de Araujo
author_role author
author2 Chaves, Rodrigo de Araujo
author2_role author
dc.contributor.author.fl_str_mv Rheinboldt, Renan Lobato
Chaves, Rodrigo de Araujo
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 Análise estatística
Programação (Computadores)
topic Análise estatística
Programação (Computadores)
description Trabalho de Conclusão de Curso (graduação)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2018.
publishDate 2018
dc.date.submitted.none.fl_str_mv 2018-05-24
dc.date.accessioned.fl_str_mv 2020-07-29T19:04:54Z
dc.date.available.fl_str_mv 2020-07-29T19:04:54Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/bachelorThesis
format bachelorThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv RHEINBOLDT, Renan Lobato; CHAVES, Rodrigo de Araujo. Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código. 2018. x, 25 f. Trabalho de Conclusão de Curso (Licenciatura em Ciência da Computação)—Universidade de Brasília, Brasília, 2018.
dc.identifier.uri.fl_str_mv https://bdm.unb.br/handle/10483/25111
identifier_str_mv RHEINBOLDT, Renan Lobato; CHAVES, Rodrigo de Araujo. Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código. 2018. x, 25 f. Trabalho de Conclusão de Curso (Licenciatura em Ciência da Computação)—Universidade de Brasília, Brasília, 2018.
url https://bdm.unb.br/handle/10483/25111
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:Biblioteca Digital de Monografias da UnB
instname:Universidade de Brasília (UnB)
instacron:UNB
instname_str Universidade de Brasília (UnB)
instacron_str UNB
institution UNB
reponame_str Biblioteca Digital de Monografias da UnB
collection Biblioteca Digital de Monografias da UnB
bitstream.url.fl_str_mv http://bdm.unb.br/xmlui/bitstream/10483/25111/2/license.txt
http://bdm.unb.br/xmlui/bitstream/10483/25111/1/2018_RenanRheinboldt_RodrigoChaves_tcc.pdf
bitstream.checksum.fl_str_mv 21554873e56ad8ddc69c092699b98f95
34469b5f7443d7a21c0150fa604de5c8
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
repository.name.fl_str_mv Biblioteca Digital de Monografias da UnB - Universidade de Brasília (UnB)
repository.mail.fl_str_mv bdm@bce.unb.br||patricia@bce.unb.br
_version_ 1801493118931959808