Uma abordagem para simplificar utilização de analisadores estáticos e ferramentas de transformação de código
Autor(a) principal: | |
---|---|
Data de Publicação: | 2018 |
Outros Autores: | |
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_ |
1813908013796294656 |