Understanding confusion in code reviews

Detalhes bibliográficos
Autor(a) principal: EBERT, Felipe
Data de Publicação: 2019
Tipo de documento: Tese
Idioma: eng
Título da fonte: Repositório Institucional da UFPE
dARK ID: ark:/64986/0013000015jfm
Texto Completo: https://repositorio.ufpe.br/handle/123456789/33481
Resumo: LIMA FILHO, Fernando José Castor de, também é conhecido(a) em citações bibliográficas por: CASTOR FILHO, Fernando
id UFPE_8d8def5c1728f86408590356300e0810
oai_identifier_str oai:repositorio.ufpe.br:123456789/33481
network_acronym_str UFPE
network_name_str Repositório Institucional da UFPE
repository_id_str 2221
spelling EBERT, Felipehttp://lattes.cnpq.br/8344951848205980http://lattes.cnpq.br/7310046838140771LIMA FILHO, Fernando José Castor deSEREBRENIK, Alexander2019-09-23T18:00:43Z2019-09-23T18:00:43Z2019-02-15https://repositorio.ufpe.br/handle/123456789/33481ark:/64986/0013000015jfmLIMA FILHO, Fernando José Castor de, também é conhecido(a) em citações bibliográficas por: CASTOR FILHO, FernandoCode review is a technique of systematic examination of a code change. It is an important practice for software quality assurance. The benefits of code reviews are well-known, such as decreasing the number of defects, improving software quality, and knowledge transfer. Nevertheless, they can also incur costs on software development projects as they can delay the merge of a code change and, consequently, slow down the overall development process. Furthermore, performing a code review might not be such an easy task, it will probably require developers’ knowledge about the code change and the context of the system. Hence, the merge of a code change can be further delayed if reviewers experience difficulties in understanding the change. In fact, understanding the code change and its context is one of the main issues reviewers face during a code review. In this thesis, we tackle two important problems related to confusion in code reviews: the lack of knowledge in the research community about confusion in code reviews; and the lack of tools for confusion identification in code review comments. In the first study, we address the first problem: we create an understanding of what constitutes confusion by building a definition of confusion, and a confusion coding scheme. Then, we manually annotate several code review comments and build an automated approach for detecting confusion to address the second problem. Our classifiers present a considerable performance on the classification of confusion. Moreover, to improve the current understanding on confusion in code reviews, we conduct a second study aiming at identifying the reasons for confusion, its impacts, and how developers cope with confusion. As such, we re-annotate the aforementioned code review comments and conduct a survey of developers. Based on our findings, we provide a model of confusion in context with 30 reasons for confusion, 14 impacts, and 13 coping strategies. The most frequent reasons for confusion are: missing rationale, and discussion of non-functional requirements of the solution. The most popular impacts of confusion are: the delay on the merge decision, and the decrease on the review quality. The most common strategies developers adopt to cope with confusion are: requesting information, and improving familiarity with existing code. During the former studies, we observe that identification of confusion in questions is a challenging task and that communicative intentions are one of the reasons for confusion. Hence, we decided to conduct an in-depth analysis of the communicative intention of developers’ questions in code reviews in the third study. We categorise 499 questions into 12 different categories of intentions. Even though the majority of questions actually serve information seeking goals, they still represent fewer than half of the annotated sample. These results suggest that questions are actually used by developers in code review to serve a wider variety of communicative purposes, including suggestions, requests for action, and criticism.CAPESFACEPEA revisão de código é uma técnica de verificação sistemática realizada em uma alteração de código. Esta é uma importante prática para a garantia de qualidade de software. Os benefícios das revisões de código são bem conhecidos, podemos citar, a redução no número de defeitos, a melhora na qualidade do software e a transferência de conhecimento. Entretanto, as revisões de código também podem gerar custos em projetos de desenvolvimento de software, pois, elas podem atrasar a integração da alteração e, consequentemente, retardar o processo de desenvolvimento. Além disso, revisar código pode não ser uma tarefa tão fácil, pois, provavelmente será exigido dos desenvolvedores o conhecimento sobre a alteração e o contexto do sistema. Assim, a integração desta alteração pode ser ainda mais retardada caso os revisores enfrentem dificuldades em compreender a alteração. De fato, entender uma alteração e o seu contexto é um dos principais problemas que os revisores enfrentam durante uma revisão de código. Nesta tese, abordamos dois importantes problemas relacionados à confusão em revisões de código: a falta de conhecimento na comunidade científica sobre confusão em revisões de código; e a falta de ferramentas para a identificação de confusão em comentários de revisão de código. No primeiro estudo, abordandamos o primeiro problema: criamos um entendimento sobre o que constitui confusão através da construção de uma definição de confusão e de um esquema de codificação de confusão. Em seguida, classificamos manualmente diversos comentários de revisões de código e criamos uma abordagem automática para detectar confusão, para abordar o segundo problema. Nossos classificadores apresentam performance considerável para a classificação de confusão. Complementarmente, para melhorar o entendimento atual sobre confusão em revisões de código, conduzimos um segundo estudo com o objetivo de identificar as razões da confusão, seus impactos e como os desenvolvedores lidam ela. Para isto, classificamos novamente os comentários de revisão de código e realizamos um questionário com desenvolvedores. Com base em nossos resultados, desenvolvemos um modelo de confusão em contexto com 30 razões para confusão, 14 impactos e 13 estratégias. As principais razões de confusão são: motivação ausente da alteração e discussão dos requisitos não funcionais da solução. Os principais impactos da confusão são: o atraso na integração da alteração e a diminuição na qualidade da revisão. As estratégias mais comuns para lidar com a confusão são: solicitar informação e melhorar a familiaridade com o código existente. Durante estes estudos, observamos que a identificação de confusão em perguntas é uma tarefa desafiadora e que as intenções comunicativas são uma das razões de confusão. Assim, decidimos realizar uma análise aprofundada da intenção comunicativa das perguntas dos desenvolvedores em revisões de código em nosso terceiro estudo. Nós categorizamos 499 perguntas em 12 diferentes categorias de intenções. Apesar da maioria das perguntas atender aos objetivos de solicitação de informação, estas ainda representam menos da metade das perguntas categorizadas. Estes resultados sugerem que as perguntas são realmente usadas pelos desenvolvedores em revisões de código para atender a uma variedade mais ampla de propósitos comunicativos, incluindo sugestões, solicitação de ações e criticismo.engUniversidade Federal de PernambucoPrograma de Pos Graduacao em Ciencia da ComputacaoUFPEBrasilAttribution-NonCommercial-NoDerivs 3.0 Brazilhttp://creativecommons.org/licenses/by-nc-nd/3.0/br/info:eu-repo/semantics/openAccessEngenharia de softwareRevisão de códigoUnderstanding confusion in code reviewsinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisdoutoradoreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPETHUMBNAILTESE Felipe Ebert.pdf.jpgTESE Felipe Ebert.pdf.jpgGenerated Thumbnailimage/jpeg1213https://repositorio.ufpe.br/bitstream/123456789/33481/5/TESE%20Felipe%20Ebert.pdf.jpg9920968da7c60885a0d5f7454f4539b0MD55ORIGINALTESE Felipe Ebert.pdfTESE Felipe Ebert.pdfapplication/pdf4120877https://repositorio.ufpe.br/bitstream/123456789/33481/1/TESE%20Felipe%20Ebert.pdfd8ec94b04a3bc8e1b88c6852c7ba233bMD51CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8811https://repositorio.ufpe.br/bitstream/123456789/33481/2/license_rdfe39d27027a6cc9cb039ad269a5db8e34MD52LICENSElicense.txtlicense.txttext/plain; charset=utf-82310https://repositorio.ufpe.br/bitstream/123456789/33481/3/license.txtbd573a5ca8288eb7272482765f819534MD53TEXTTESE Felipe Ebert.pdf.txtTESE Felipe Ebert.pdf.txtExtracted texttext/plain300031https://repositorio.ufpe.br/bitstream/123456789/33481/4/TESE%20Felipe%20Ebert.pdf.txtd70c5ac7721973ec61092d9144fb58ceMD54123456789/334812019-10-25 08:34:21.954oai:repositorio.ufpe.br:123456789/33481TGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKClRvZG8gZGVwb3NpdGFudGUgZGUgbWF0ZXJpYWwgbm8gUmVwb3NpdMOzcmlvIEluc3RpdHVjaW9uYWwgKFJJKSBkZXZlIGNvbmNlZGVyLCDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBQZXJuYW1idWNvIChVRlBFKSwgdW1hIExpY2Vuw6dhIGRlIERpc3RyaWJ1acOnw6NvIE7Do28gRXhjbHVzaXZhIHBhcmEgbWFudGVyIGUgdG9ybmFyIGFjZXNzw612ZWlzIG9zIHNldXMgZG9jdW1lbnRvcywgZW0gZm9ybWF0byBkaWdpdGFsLCBuZXN0ZSByZXBvc2l0w7NyaW8uCgpDb20gYSBjb25jZXNzw6NvIGRlc3RhIGxpY2Vuw6dhIG7Do28gZXhjbHVzaXZhLCBvIGRlcG9zaXRhbnRlIG1hbnTDqW0gdG9kb3Mgb3MgZGlyZWl0b3MgZGUgYXV0b3IuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKTGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKCkFvIGNvbmNvcmRhciBjb20gZXN0YSBsaWNlbsOnYSBlIGFjZWl0w6EtbGEsIHZvY8OqIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMpOgoKYSkgRGVjbGFyYSBxdWUgY29uaGVjZSBhIHBvbMOtdGljYSBkZSBjb3B5cmlnaHQgZGEgZWRpdG9yYSBkbyBzZXUgZG9jdW1lbnRvOwpiKSBEZWNsYXJhIHF1ZSBjb25oZWNlIGUgYWNlaXRhIGFzIERpcmV0cml6ZXMgcGFyYSBvIFJlcG9zaXTDs3JpbyBJbnN0aXR1Y2lvbmFsIGRhIFVGUEU7CmMpIENvbmNlZGUgw6AgVUZQRSBvIGRpcmVpdG8gbsOjbyBleGNsdXNpdm8gZGUgYXJxdWl2YXIsIHJlcHJvZHV6aXIsIGNvbnZlcnRlciAoY29tbyBkZWZpbmlkbyBhIHNlZ3VpciksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIsIG5vIFJJLCBvIGRvY3VtZW50byBlbnRyZWd1ZSAoaW5jbHVpbmRvIG8gcmVzdW1vL2Fic3RyYWN0KSBlbSBmb3JtYXRvIGRpZ2l0YWwgb3UgcG9yIG91dHJvIG1laW87CmQpIERlY2xhcmEgcXVlIGF1dG9yaXphIGEgVUZQRSBhIGFycXVpdmFyIG1haXMgZGUgdW1hIGPDs3BpYSBkZXN0ZSBkb2N1bWVudG8gZSBjb252ZXJ0w6otbG8sIHNlbSBhbHRlcmFyIG8gc2V1IGNvbnRlw7pkbywgcGFyYSBxdWFscXVlciBmb3JtYXRvIGRlIGZpY2hlaXJvLCBtZWlvIG91IHN1cG9ydGUsIHBhcmEgZWZlaXRvcyBkZSBzZWd1cmFuw6dhLCBwcmVzZXJ2YcOnw6NvIChiYWNrdXApIGUgYWNlc3NvOwplKSBEZWNsYXJhIHF1ZSBvIGRvY3VtZW50byBzdWJtZXRpZG8gw6kgbyBzZXUgdHJhYmFsaG8gb3JpZ2luYWwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBhIHRlcmNlaXJvcyBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2Ugb3MgZGlyZWl0b3MgZGUgb3V0cmEgcGVzc29hIG91IGVudGlkYWRlOwpmKSBEZWNsYXJhIHF1ZSwgbm8gY2FzbyBkbyBkb2N1bWVudG8gc3VibWV0aWRvIGNvbnRlciBtYXRlcmlhbCBkbyBxdWFsIG7Do28gZGV0w6ltIG9zIGRpcmVpdG9zIGRlCmF1dG9yLCBvYnRldmUgYSBhdXRvcml6YcOnw6NvIGlycmVzdHJpdGEgZG8gcmVzcGVjdGl2byBkZXRlbnRvciBkZXNzZXMgZGlyZWl0b3MgcGFyYSBjZWRlciDDoApVRlBFIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgTGljZW7Dp2EgZSBhdXRvcml6YXIgYSB1bml2ZXJzaWRhZGUgYSB1dGlsaXrDoS1sb3MgbGVnYWxtZW50ZS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBlc3NlIG1hdGVyaWFsIGN1am9zIGRpcmVpdG9zIHPDo28gZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3UgY29udGXDumRvIGRvIGRvY3VtZW50byBlbnRyZWd1ZTsKZykgU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVRlBFLCBkZWNsYXJhIHF1ZSBjdW1wcml1IHF1YWlzcXVlciBvYnJpZ2HDp8O1ZXMgZXhpZ2lkYXMgcGVsbyByZXNwZWN0aXZvIGNvbnRyYXRvIG91IGFjb3Jkby4KCkEgVUZQRSBpZGVudGlmaWNhcsOhIGNsYXJhbWVudGUgbyhzKSBub21lKHMpIGRvKHMpIGF1dG9yIChlcykgZG9zIGRpcmVpdG9zIGRvIGRvY3VtZW50byBlbnRyZWd1ZSBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIHBhcmEgYWzDqW0gZG8gcHJldmlzdG8gbmEgYWzDrW5lYSBjKS4KRepositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212019-10-25T11:34:21Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false
dc.title.pt_BR.fl_str_mv Understanding confusion in code reviews
title Understanding confusion in code reviews
spellingShingle Understanding confusion in code reviews
EBERT, Felipe
Engenharia de software
Revisão de código
title_short Understanding confusion in code reviews
title_full Understanding confusion in code reviews
title_fullStr Understanding confusion in code reviews
title_full_unstemmed Understanding confusion in code reviews
title_sort Understanding confusion in code reviews
author EBERT, Felipe
author_facet EBERT, Felipe
author_role author
dc.contributor.authorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/8344951848205980
dc.contributor.advisorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/7310046838140771
dc.contributor.author.fl_str_mv EBERT, Felipe
dc.contributor.advisor1.fl_str_mv LIMA FILHO, Fernando José Castor de
dc.contributor.advisor-co1.fl_str_mv SEREBRENIK, Alexander
contributor_str_mv LIMA FILHO, Fernando José Castor de
SEREBRENIK, Alexander
dc.subject.por.fl_str_mv Engenharia de software
Revisão de código
topic Engenharia de software
Revisão de código
description LIMA FILHO, Fernando José Castor de, também é conhecido(a) em citações bibliográficas por: CASTOR FILHO, Fernando
publishDate 2019
dc.date.accessioned.fl_str_mv 2019-09-23T18:00:43Z
dc.date.available.fl_str_mv 2019-09-23T18:00:43Z
dc.date.issued.fl_str_mv 2019-02-15
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/doctoralThesis
format doctoralThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://repositorio.ufpe.br/handle/123456789/33481
dc.identifier.dark.fl_str_mv ark:/64986/0013000015jfm
url https://repositorio.ufpe.br/handle/123456789/33481
identifier_str_mv ark:/64986/0013000015jfm
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv Attribution-NonCommercial-NoDerivs 3.0 Brazil
http://creativecommons.org/licenses/by-nc-nd/3.0/br/
info:eu-repo/semantics/openAccess
rights_invalid_str_mv Attribution-NonCommercial-NoDerivs 3.0 Brazil
http://creativecommons.org/licenses/by-nc-nd/3.0/br/
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Pernambuco
dc.publisher.program.fl_str_mv Programa de Pos Graduacao em Ciencia da Computacao
dc.publisher.initials.fl_str_mv UFPE
dc.publisher.country.fl_str_mv Brasil
publisher.none.fl_str_mv Universidade Federal de Pernambuco
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFPE
instname:Universidade Federal de Pernambuco (UFPE)
instacron:UFPE
instname_str Universidade Federal de Pernambuco (UFPE)
instacron_str UFPE
institution UFPE
reponame_str Repositório Institucional da UFPE
collection Repositório Institucional da UFPE
bitstream.url.fl_str_mv https://repositorio.ufpe.br/bitstream/123456789/33481/5/TESE%20Felipe%20Ebert.pdf.jpg
https://repositorio.ufpe.br/bitstream/123456789/33481/1/TESE%20Felipe%20Ebert.pdf
https://repositorio.ufpe.br/bitstream/123456789/33481/2/license_rdf
https://repositorio.ufpe.br/bitstream/123456789/33481/3/license.txt
https://repositorio.ufpe.br/bitstream/123456789/33481/4/TESE%20Felipe%20Ebert.pdf.txt
bitstream.checksum.fl_str_mv 9920968da7c60885a0d5f7454f4539b0
d8ec94b04a3bc8e1b88c6852c7ba233b
e39d27027a6cc9cb039ad269a5db8e34
bd573a5ca8288eb7272482765f819534
d70c5ac7721973ec61092d9144fb58ce
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)
repository.mail.fl_str_mv attena@ufpe.br
_version_ 1815173010378719232