Analysis of software engineering automation tools for Go

In this paper we discuss different software automation tools used for developing applications with the Go programming language. In this study we experimented with different kinds of tools, including code generating tools, static analysis tools, dynamic analysis tools, debuggers, formatters, and docu...

Full description

Autores:
Hoyos Ruge, Miguel
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2021
Institución:
Universidad de los Andes
Repositorio:
Séneca: repositorio Uniandes
Idioma:
eng
OAI Identifier:
oai:repositorio.uniandes.edu.co:1992/54945
Acceso en línea:
http://hdl.handle.net/1992/54945
Palabra clave:
go
golang
software engineering
devops
automation
GO (Programa para computador)
Ingeniería de software realizada por computador
Automatización
Lenguajes de programación
Ingeniería
Rights
openAccess
License
http://creativecommons.org/licenses/by-nc-nd/4.0/
id UNIANDES2_65578861faf2f2453c76f80b17535f1a
oai_identifier_str oai:repositorio.uniandes.edu.co:1992/54945
network_acronym_str UNIANDES2
network_name_str Séneca: repositorio Uniandes
repository_id_str
dc.title.none.fl_str_mv Analysis of software engineering automation tools for Go
title Analysis of software engineering automation tools for Go
spellingShingle Analysis of software engineering automation tools for Go
go
golang
software engineering
devops
automation
GO (Programa para computador)
Ingeniería de software realizada por computador
Automatización
Lenguajes de programación
Ingeniería
title_short Analysis of software engineering automation tools for Go
title_full Analysis of software engineering automation tools for Go
title_fullStr Analysis of software engineering automation tools for Go
title_full_unstemmed Analysis of software engineering automation tools for Go
title_sort Analysis of software engineering automation tools for Go
dc.creator.fl_str_mv Hoyos Ruge, Miguel
dc.contributor.advisor.none.fl_str_mv Linares Vásquez, Mario
Cardozo Álvarez, Nicolás
dc.contributor.author.none.fl_str_mv Hoyos Ruge, Miguel
dc.subject.keyword.none.fl_str_mv go
golang
software engineering
devops
automation
topic go
golang
software engineering
devops
automation
GO (Programa para computador)
Ingeniería de software realizada por computador
Automatización
Lenguajes de programación
Ingeniería
dc.subject.armarc.none.fl_str_mv GO (Programa para computador)
Ingeniería de software realizada por computador
Automatización
Lenguajes de programación
dc.subject.themes.es_CO.fl_str_mv Ingeniería
description In this paper we discuss different software automation tools used for developing applications with the Go programming language. In this study we experimented with different kinds of tools, including code generating tools, static analysis tools, dynamic analysis tools, debuggers, formatters, and documentation generating tools. We focus on how these tools can be used to increase developer productivity while reducing possible bugs that could be solved at the development stage.
publishDate 2021
dc.date.issued.none.fl_str_mv 2021-07-15
dc.date.accessioned.none.fl_str_mv 2022-02-18T20:51:04Z
dc.date.available.none.fl_str_mv 2022-02-18T20:51:04Z
dc.type.spa.fl_str_mv Trabajo de grado - Pregrado
dc.type.coarversion.fl_str_mv http://purl.org/coar/version/c_970fb48d4fbd8a85
dc.type.driver.spa.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.coar.spa.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.content.spa.fl_str_mv Text
dc.type.redcol.spa.fl_str_mv http://purl.org/redcol/resource_type/TP
format http://purl.org/coar/resource_type/c_7a1f
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/1992/54945
dc.identifier.instname.spa.fl_str_mv instname:Universidad de los Andes
dc.identifier.reponame.spa.fl_str_mv reponame:Repositorio Institucional Séneca
dc.identifier.repourl.spa.fl_str_mv repourl:https://repositorio.uniandes.edu.co/
url http://hdl.handle.net/1992/54945
identifier_str_mv instname:Universidad de los Andes
reponame:Repositorio Institucional Séneca
repourl:https://repositorio.uniandes.edu.co/
dc.language.iso.es_CO.fl_str_mv eng
language eng
dc.relation.references.es_CO.fl_str_mv C. Ou, "Go: A Documentary." https://golang.design/history/
R. C. Martin, Chapter 1 What Is Design and Architecture? - Clean Architecture: A Craftsman's Guide to Software Structure and Design, First Edition. Accessed: May 17, 2021. [Online]. Available: https://learning.oreilly.com/library/view/clean-architecture-a/9780134494272/ch1.xhtml
A. Anagnostopoulos, Hands-On Software Engineering with Golang. O'Riley. Accessed: Feb. 14, 2021. [Online]. Available: https://learning-oreilly-com.ezproxy.uniandes.edu.co:8443/library/view/hands-on-software-engineering/9781838554491/679a586a-b9ec-452a-8481-affd8e963bd0.xhtml
golang/mock. Go, 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/golang/mock
vektra/mockery: A mock code autogenerator for Golang. Accessed: May 25, 2021. [Online]. Available: https://github.com/vektra/mockery
scaffold · pkg.go.dev. Accessed: May 25, 2021. [Online]. Available: https://pkg.go.dev/github.com/metakeule/scaffold
99designs/gqlgen. 99designs, 2021. Accessed: Feb. 14, 2021. [Online]. Available: https://github.com/99designs/gqlgen
gRPC. Accessed: May 25, 2021. [Online]. Available: https://grpc.io/docs/languages/go/
opennota / check. Accessed: May 25, 2021. [Online]. Available: https://gitlab.com/opennota/check
M. Bohuslávek, mibk/dupl. 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/mibk/dupl
K. Kisiel, kisielk/errcheck. 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/kisielk/errcheck
fzipp, fzipp/gocyclo. 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/fzipp/gocyclo
gosec: Golang security checker. Accessed: May 25, 2021. [Online]. Available: https://github.com/securego/gosec
A. Kohler, alexkohler/prealloc. 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/alexkohler/prealloc
stripe/safesql. Stripe, 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/stripe/safesql
Introducing the Go Race Detector - The Go Blog. Accessed: May 25, 2021. [Online]. Available: https://blog.golang.org/race-detector
testing - The Go Programming Language. Accessed: May 25, 2021. [Online]. Available: https://golang.org/pkg/testing/
go-delve/delve. go-delve, 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/go-delve/delve
gofmt. Accessed: May 25, 2021. [Online]. Available: https://golang.org/cmd/gofmt/
Godoc: documenting Go code. Accessed: May 25, 2021. [Online]. Available: https://blog.golang.org/godoc
stretchr/testify. Stretchr, Inc., 2021. Accessed: May 17, 2021. [Online]. Available: https://github.com/stretchr/testify
Helm. Accessed: May 17, 2021. [Online]. Available: https://helm.sh/
A. Gerrand, ¿Go Slices: usage and internals - The Go Blog, Jan. 05, 2011. https://blog.golang.org/slices-intro (accessed May 17, 2021)
A. Khot, Race conditions and heisenbugs - Concurrent Patterns and Best Practices. Accessed: May 17, 2021. [Online]. Available: https://learning.oreilly.com/library/view/concurrent-patterns-and/9781788627900/f6273961-8089-4a16-9cf9-9d9d0df651a4.xhtml
dc.rights.uri.*.fl_str_mv http://creativecommons.org/licenses/by-nc-nd/4.0/
dc.rights.accessrights.spa.fl_str_mv info:eu-repo/semantics/openAccess
dc.rights.coar.spa.fl_str_mv http://purl.org/coar/access_right/c_abf2
rights_invalid_str_mv http://creativecommons.org/licenses/by-nc-nd/4.0/
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.es_CO.fl_str_mv 22 hojas
dc.format.mimetype.none.fl_str_mv application/pdf
dc.publisher.es_CO.fl_str_mv Universidad de los Andes
dc.publisher.program.es_CO.fl_str_mv Ingeniería de Sistemas y Computación
dc.publisher.faculty.es_CO.fl_str_mv Facultad de Ingeniería
dc.publisher.department.es_CO.fl_str_mv Departamento de Ingeniería de Sistemas y Computación
institution Universidad de los Andes
bitstream.url.fl_str_mv https://repositorio.uniandes.edu.co/bitstreams/7b8ec419-3b6d-4f47-8748-2ce455452bfb/download
https://repositorio.uniandes.edu.co/bitstreams/a522aa67-76ae-4303-b58c-17fa62a9124c/download
https://repositorio.uniandes.edu.co/bitstreams/098501d9-fc38-46a3-b32e-a181e1b97303/download
https://repositorio.uniandes.edu.co/bitstreams/960d3f57-2885-45e0-a296-e9189d3f1d2c/download
https://repositorio.uniandes.edu.co/bitstreams/2d10df78-3d37-4e3c-a20c-84a96eefb743/download
https://repositorio.uniandes.edu.co/bitstreams/e275b8bc-89c9-4f24-a363-17ce0394c276/download
https://repositorio.uniandes.edu.co/bitstreams/fc420dcd-8579-442a-8c71-feaa7dd989a7/download
https://repositorio.uniandes.edu.co/bitstreams/3a89f624-6d27-49ae-9630-cc683bdc0924/download
bitstream.checksum.fl_str_mv 80b66422e1c35248ba8d2964e4a14eb1
1e09bab484c6c38d59a26e2a340290dd
cbb822630a5a6841ff6dded20b75b07a
1cb82e5dfb3bfc9c153392a299a30438
d41d8cd98f00b204e9800998ecf8427e
5aa5c691a1ffe97abd12c2966efcb8d6
c2ba08fe57410ed9921b560c84ea85be
4f803bc4cccda99b83be9484b8011fc1
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio institucional Séneca
repository.mail.fl_str_mv adminrepositorio@uniandes.edu.co
_version_ 1812133921215741952
spelling Al consultar y hacer uso de este recurso, está aceptando las condiciones de uso establecidas por los autores.http://creativecommons.org/licenses/by-nc-nd/4.0/info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Linares Vásquez, Mariovirtual::7795-1Cardozo Álvarez, Nicolásvirtual::7796-1Hoyos Ruge, Miguelca79f6ea-430f-4b9f-adb5-e8d03da04a296002022-02-18T20:51:04Z2022-02-18T20:51:04Z2021-07-15http://hdl.handle.net/1992/54945instname:Universidad de los Andesreponame:Repositorio Institucional Sénecarepourl:https://repositorio.uniandes.edu.co/In this paper we discuss different software automation tools used for developing applications with the Go programming language. In this study we experimented with different kinds of tools, including code generating tools, static analysis tools, dynamic analysis tools, debuggers, formatters, and documentation generating tools. We focus on how these tools can be used to increase developer productivity while reducing possible bugs that could be solved at the development stage.Ingeniero de Sistemas y ComputaciónPregrado22 hojasapplication/pdfengUniversidad de los AndesIngeniería de Sistemas y ComputaciónFacultad de IngenieríaDepartamento de Ingeniería de Sistemas y ComputaciónAnalysis of software engineering automation tools for GoTrabajo de grado - Pregradoinfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fhttp://purl.org/coar/version/c_970fb48d4fbd8a85Texthttp://purl.org/redcol/resource_type/TPgogolangsoftware engineeringdevopsautomationGO (Programa para computador)Ingeniería de software realizada por computadorAutomatizaciónLenguajes de programaciónIngenieríaC. Ou, "Go: A Documentary." https://golang.design/history/R. C. Martin, Chapter 1 What Is Design and Architecture? - Clean Architecture: A Craftsman's Guide to Software Structure and Design, First Edition. Accessed: May 17, 2021. [Online]. Available: https://learning.oreilly.com/library/view/clean-architecture-a/9780134494272/ch1.xhtmlA. Anagnostopoulos, Hands-On Software Engineering with Golang. O'Riley. Accessed: Feb. 14, 2021. [Online]. Available: https://learning-oreilly-com.ezproxy.uniandes.edu.co:8443/library/view/hands-on-software-engineering/9781838554491/679a586a-b9ec-452a-8481-affd8e963bd0.xhtmlgolang/mock. Go, 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/golang/mockvektra/mockery: A mock code autogenerator for Golang. Accessed: May 25, 2021. [Online]. Available: https://github.com/vektra/mockeryscaffold · pkg.go.dev. Accessed: May 25, 2021. [Online]. Available: https://pkg.go.dev/github.com/metakeule/scaffold99designs/gqlgen. 99designs, 2021. Accessed: Feb. 14, 2021. [Online]. Available: https://github.com/99designs/gqlgengRPC. Accessed: May 25, 2021. [Online]. Available: https://grpc.io/docs/languages/go/opennota / check. Accessed: May 25, 2021. [Online]. Available: https://gitlab.com/opennota/checkM. Bohuslávek, mibk/dupl. 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/mibk/duplK. Kisiel, kisielk/errcheck. 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/kisielk/errcheckfzipp, fzipp/gocyclo. 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/fzipp/gocyclogosec: Golang security checker. Accessed: May 25, 2021. [Online]. Available: https://github.com/securego/gosecA. Kohler, alexkohler/prealloc. 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/alexkohler/preallocstripe/safesql. Stripe, 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/stripe/safesqlIntroducing the Go Race Detector - The Go Blog. Accessed: May 25, 2021. [Online]. Available: https://blog.golang.org/race-detectortesting - The Go Programming Language. Accessed: May 25, 2021. [Online]. Available: https://golang.org/pkg/testing/go-delve/delve. go-delve, 2021. Accessed: May 25, 2021. [Online]. Available: https://github.com/go-delve/delvegofmt. Accessed: May 25, 2021. [Online]. Available: https://golang.org/cmd/gofmt/Godoc: documenting Go code. Accessed: May 25, 2021. [Online]. Available: https://blog.golang.org/godocstretchr/testify. Stretchr, Inc., 2021. Accessed: May 17, 2021. [Online]. Available: https://github.com/stretchr/testifyHelm. Accessed: May 17, 2021. [Online]. Available: https://helm.sh/A. Gerrand, ¿Go Slices: usage and internals - The Go Blog, Jan. 05, 2011. https://blog.golang.org/slices-intro (accessed May 17, 2021)A. Khot, Race conditions and heisenbugs - Concurrent Patterns and Best Practices. Accessed: May 17, 2021. [Online]. Available: https://learning.oreilly.com/library/view/concurrent-patterns-and/9781788627900/f6273961-8089-4a16-9cf9-9d9d0df651a4.xhtml201632643Publicationhttps://scholar.google.es/citations?user=55fmMcoAAAAJvirtual::7795-1https://scholar.google.es/citations?user=3iTzjQsAAAAJvirtual::7796-10000-0003-0161-2888virtual::7795-10000-0002-1094-9952virtual::7796-10cbe51ff-e35a-4c3a-ad77-609b3cdfc9b2virtual::7795-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::7796-10cbe51ff-e35a-4c3a-ad77-609b3cdfc9b2virtual::7795-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::7796-1TEXTDocumentv2.pdf.txtDocumentv2.pdf.txtExtracted texttext/plain40028https://repositorio.uniandes.edu.co/bitstreams/7b8ec419-3b6d-4f47-8748-2ce455452bfb/download80b66422e1c35248ba8d2964e4a14eb1MD54Analysis-of-software-articulo.pdf.txtAnalysis-of-software-articulo.pdf.txtExtracted texttext/plain33946https://repositorio.uniandes.edu.co/bitstreams/a522aa67-76ae-4303-b58c-17fa62a9124c/download1e09bab484c6c38d59a26e2a340290ddMD57ORIGINALDocumentv2.pdfDocumentv2.pdfTrabajo de gradoapplication/pdf454649https://repositorio.uniandes.edu.co/bitstreams/098501d9-fc38-46a3-b32e-a181e1b97303/downloadcbb822630a5a6841ff6dded20b75b07aMD53Analysis-of-software-articulo.pdfAnalysis-of-software-articulo.pdfapplication/pdf332564https://repositorio.uniandes.edu.co/bitstreams/960d3f57-2885-45e0-a296-e9189d3f1d2c/download1cb82e5dfb3bfc9c153392a299a30438MD56CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-80https://repositorio.uniandes.edu.co/bitstreams/2d10df78-3d37-4e3c-a20c-84a96eefb743/downloadd41d8cd98f00b204e9800998ecf8427eMD52LICENSElicense.txtlicense.txttext/plain; charset=utf-81810https://repositorio.uniandes.edu.co/bitstreams/e275b8bc-89c9-4f24-a363-17ce0394c276/download5aa5c691a1ffe97abd12c2966efcb8d6MD51THUMBNAILDocumentv2.pdf.jpgDocumentv2.pdf.jpgIM Thumbnailimage/jpeg9613https://repositorio.uniandes.edu.co/bitstreams/fc420dcd-8579-442a-8c71-feaa7dd989a7/downloadc2ba08fe57410ed9921b560c84ea85beMD55Analysis-of-software-articulo.pdf.jpgAnalysis-of-software-articulo.pdf.jpgIM Thumbnailimage/jpeg22351https://repositorio.uniandes.edu.co/bitstreams/3a89f624-6d27-49ae-9630-cc683bdc0924/download4f803bc4cccda99b83be9484b8011fc1MD581992/54945oai:repositorio.uniandes.edu.co:1992/549452024-03-13 13:31:16.621http://creativecommons.org/licenses/by-nc-nd/4.0/open.accesshttps://repositorio.uniandes.edu.coRepositorio institucional Sénecaadminrepositorio@uniandes.edu.coWW8sIGVuIG1pIGNhbGlkYWQgZGUgYXV0b3IgZGVsIHRyYWJham8gZGUgdGVzaXMsIG1vbm9ncmFmw61hIG8gdHJhYmFqbyBkZSBncmFkbywgaGFnbyBlbnRyZWdhIGRlbCBlamVtcGxhciByZXNwZWN0aXZvIHkgZGUgc3VzIGFuZXhvcyBkZSBzZXIgZWwgY2FzbywgZW4gZm9ybWF0byBkaWdpdGFsIHkvbyBlbGVjdHLDs25pY28geSBhdXRvcml6byBhIGxhIFVuaXZlcnNpZGFkIGRlIGxvcyBBbmRlcyBwYXJhIHF1ZSByZWFsaWNlIGxhIHB1YmxpY2FjacOzbiBlbiBlbCBTaXN0ZW1hIGRlIEJpYmxpb3RlY2FzIG8gZW4gY3VhbHF1aWVyIG90cm8gc2lzdGVtYSBvIGJhc2UgZGUgZGF0b3MgcHJvcGlvIG8gYWplbm8gYSBsYSBVbml2ZXJzaWRhZCB5IHBhcmEgcXVlIGVuIGxvcyB0w6lybWlub3MgZXN0YWJsZWNpZG9zIGVuIGxhIExleSAyMyBkZSAxOTgyLCBMZXkgNDQgZGUgMTk5MywgRGVjaXNpw7NuIEFuZGluYSAzNTEgZGUgMTk5MywgRGVjcmV0byA0NjAgZGUgMTk5NSB5IGRlbcOhcyBub3JtYXMgZ2VuZXJhbGVzIHNvYnJlIGxhIG1hdGVyaWEsIHV0aWxpY2UgZW4gdG9kYXMgc3VzIGZvcm1hcywgbG9zIGRlcmVjaG9zIHBhdHJpbW9uaWFsZXMgZGUgcmVwcm9kdWNjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSwgdHJhbnNmb3JtYWNpw7NuIHkgZGlzdHJpYnVjacOzbiAoYWxxdWlsZXIsIHByw6lzdGFtbyBww7pibGljbyBlIGltcG9ydGFjacOzbikgcXVlIG1lIGNvcnJlc3BvbmRlbiBjb21vIGNyZWFkb3IgZGUgbGEgb2JyYSBvYmpldG8gZGVsIHByZXNlbnRlIGRvY3VtZW50by4gIAoKCkxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gc2UgZW1pdGUgZW4gY2FsaWRhZCBkZSBhdXRvciBkZSBsYSBvYnJhIG9iamV0byBkZWwgcHJlc2VudGUgZG9jdW1lbnRvIHkgbm8gY29ycmVzcG9uZGUgYSBjZXNpw7NuIGRlIGRlcmVjaG9zLCBzaW5vIGEgbGEgYXV0b3JpemFjacOzbiBkZSB1c28gYWNhZMOpbWljbyBkZSBjb25mb3JtaWRhZCBjb24gbG8gYW50ZXJpb3JtZW50ZSBzZcOxYWxhZG8uIExhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gc2UgaGFjZSBleHRlbnNpdmEgbm8gc29sbyBhIGxhcyBmYWN1bHRhZGVzIHkgZGVyZWNob3MgZGUgdXNvIHNvYnJlIGxhIG9icmEgZW4gZm9ybWF0byBvIHNvcG9ydGUgbWF0ZXJpYWwsIHNpbm8gdGFtYmnDqW4gcGFyYSBmb3JtYXRvIGVsZWN0csOzbmljbywgeSBlbiBnZW5lcmFsIHBhcmEgY3VhbHF1aWVyIGZvcm1hdG8gY29ub2NpZG8gbyBwb3IgY29ub2Nlci4gCgoKRWwgYXV0b3IsIG1hbmlmaWVzdGEgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwgeSBsYSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvcywgcG9yIGxvIHRhbnRvLCBsYSBvYnJhIGVzIGRlIHN1IGV4Y2x1c2l2YSBhdXRvcsOtYSB5IHRpZW5lIGxhIHRpdHVsYXJpZGFkIHNvYnJlIGxhIG1pc21hLiAKCgpFbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhIGVuIGN1ZXN0acOzbiwgZWwgYXV0b3IgYXN1bWlyw6EgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQsIHkgc2FsZHLDoSBkZSBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcywgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcyBsYSBVbml2ZXJzaWRhZCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLiAKCg==