Cross-language clone detection in mobile programming languages

La detección de clones en el código fuente es una técnica de análisis de programas que brinda información sobre el código en múltiples campos, como el plagio de código, la protección de la propiedad intelectual y el análisis de la calidad del código. En respuesta al aumento de las bases de código es...

Full description

Autores:
Jiménez Gacha, Stephannie
Tipo de recurso:
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/53123
Acceso en línea:
http://hdl.handle.net/1992/53123
Palabra clave:
Código fuente (Computación)
Ingeniería
Rights
openAccess
License
http://creativecommons.org/licenses/by-nc-nd/4.0/
id UNIANDES2_16f04decd99bdffd4257a1ee9b3add73
oai_identifier_str oai:repositorio.uniandes.edu.co:1992/53123
network_acronym_str UNIANDES2
network_name_str Séneca: repositorio Uniandes
repository_id_str
dc.title.eng.fl_str_mv Cross-language clone detection in mobile programming languages
title Cross-language clone detection in mobile programming languages
spellingShingle Cross-language clone detection in mobile programming languages
Código fuente (Computación)
Ingeniería
title_short Cross-language clone detection in mobile programming languages
title_full Cross-language clone detection in mobile programming languages
title_fullStr Cross-language clone detection in mobile programming languages
title_full_unstemmed Cross-language clone detection in mobile programming languages
title_sort Cross-language clone detection in mobile programming languages
dc.creator.fl_str_mv Jiménez Gacha, Stephannie
dc.contributor.advisor.none.fl_str_mv Cardozo Álvarez, Nicolás
dc.contributor.author.none.fl_str_mv Jiménez Gacha, Stephannie
dc.contributor.jury.none.fl_str_mv Takahashi Rodríguez, Silvia
Rakic, Gordana
dc.subject.armarc.none.fl_str_mv Código fuente (Computación)
topic Código fuente (Computación)
Ingeniería
dc.subject.themes.none.fl_str_mv Ingeniería
description La detección de clones en el código fuente es una técnica de análisis de programas que brinda información sobre el código en múltiples campos, como el plagio de código, la protección de la propiedad intelectual y el análisis de la calidad del código. En respuesta al aumento de las bases de código escritas en varios lenguajes de programación, nuevas técnicas que abordan la detección de clones de código permiten el análisis de dichos sistemas políglotas. El proceso de desarrollo de software para aplicaciones móviles es un caso importante en el que los desarrolladores deben mantener versiones sincronizadas de su código base en al menos dos lenguajes de programación diferentes. El enfoque propuesto en este documento para detectar clones implica el uso de un árbol de sintaxis concreto enriquecido (eCST) como representación intermedia para cualquier lenguaje que se construya utilizando la gramática de cada lenguaje de programación compatible. La técnica desarrollada puede estimar las similitudes de código correctamente para pruebas controladas en las que los clones de Tipo 1, 2 y 3 se inyectaron manualmente en fragmentos de código simples tanto en la configuración de un solo idioma como en la de varios idiomas. Usando una pequeña aplicación móvil de ejemplo (cada base de código con más de 50 LOC cada una), podemos detectar 90 clones de código. Sin embargo, observamos que la principal limitación de nuestro enfoque es que no tenemos en cuenta comandos específicos del marco de la GUI, ya que estos no están incluidos actualmente en la gramática de los lenguajes analizados.
publishDate 2021
dc.date.accessioned.none.fl_str_mv 2021-11-03T16:11:59Z
dc.date.available.none.fl_str_mv 2021-11-03T16:11:59Z
dc.date.issued.none.fl_str_mv 2021
dc.type.spa.fl_str_mv Trabajo de grado - Maestría
dc.type.coarversion.fl_str_mv http://purl.org/coar/version/c_970fb48d4fbd8a85
dc.type.driver.spa.fl_str_mv info:eu-repo/semantics/masterThesis
dc.type.content.spa.fl_str_mv Text
dc.type.redcol.spa.fl_str_mv http://purl.org/redcol/resource_type/TM
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/1992/53123
dc.identifier.pdf.none.fl_str_mv 24038.pdf
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/53123
identifier_str_mv 24038.pdf
instname:Universidad de los Andes
reponame:Repositorio Institucional Séneca
repourl:https://repositorio.uniandes.edu.co/
dc.language.iso.none.fl_str_mv eng
language eng
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.none.fl_str_mv 19 páginas
dc.format.mimetype.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad de los Andes
dc.publisher.program.none.fl_str_mv Maestría en Ingeniería de Sistemas y Computación
dc.publisher.faculty.none.fl_str_mv Facultad de Ingeniería
dc.publisher.department.none.fl_str_mv Departamento de Ingeniería de Sistemas y Computación
publisher.none.fl_str_mv Universidad de los Andes
institution Universidad de los Andes
bitstream.url.fl_str_mv https://repositorio.uniandes.edu.co/bitstreams/f1ef1a03-4a45-488e-bc42-98b80ee210f9/download
https://repositorio.uniandes.edu.co/bitstreams/bd2f8641-7518-458c-a93c-148520863406/download
https://repositorio.uniandes.edu.co/bitstreams/d0fe6e72-3e29-47a2-811f-2b8e1cbb1ed5/download
bitstream.checksum.fl_str_mv 7f71c3e56e22061bab9999ff788ef2ba
f56aafcc6a0318761540948187ccd970
5e2891d5caacb7aadf9aef670fec3ae8
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
repository.name.fl_str_mv Repositorio institucional Séneca
repository.mail.fl_str_mv adminrepositorio@uniandes.edu.co
_version_ 1812134011127988224
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_abf2Cardozo Álvarez, Nicolásvirtual::13318-1Jiménez Gacha, Stephannie40c04b95-f057-4259-b4cb-8967121a93a9600Takahashi Rodríguez, SilviaRakic, Gordana2021-11-03T16:11:59Z2021-11-03T16:11:59Z2021http://hdl.handle.net/1992/5312324038.pdfinstname:Universidad de los Andesreponame:Repositorio Institucional Sénecarepourl:https://repositorio.uniandes.edu.co/La detección de clones en el código fuente es una técnica de análisis de programas que brinda información sobre el código en múltiples campos, como el plagio de código, la protección de la propiedad intelectual y el análisis de la calidad del código. En respuesta al aumento de las bases de código escritas en varios lenguajes de programación, nuevas técnicas que abordan la detección de clones de código permiten el análisis de dichos sistemas políglotas. El proceso de desarrollo de software para aplicaciones móviles es un caso importante en el que los desarrolladores deben mantener versiones sincronizadas de su código base en al menos dos lenguajes de programación diferentes. El enfoque propuesto en este documento para detectar clones implica el uso de un árbol de sintaxis concreto enriquecido (eCST) como representación intermedia para cualquier lenguaje que se construya utilizando la gramática de cada lenguaje de programación compatible. La técnica desarrollada puede estimar las similitudes de código correctamente para pruebas controladas en las que los clones de Tipo 1, 2 y 3 se inyectaron manualmente en fragmentos de código simples tanto en la configuración de un solo idioma como en la de varios idiomas. Usando una pequeña aplicación móvil de ejemplo (cada base de código con más de 50 LOC cada una), podemos detectar 90 clones de código. Sin embargo, observamos que la principal limitación de nuestro enfoque es que no tenemos en cuenta comandos específicos del marco de la GUI, ya que estos no están incluidos actualmente en la gramática de los lenguajes analizados.Clone detection in source code is a program analysis technique that gives insight about the code in multiple fields, like code plagiarism, intellectual property protection, and code quality analysis. In response to the rise of multi-language code bases, new techniques addressing cross-language code clone detection enable the analysis of such polyglot systems. The software development process for mobile applications is an important case in which developers must maintain synchronized versions of their code-base in at least two different programming languages. The proposed approach in this paper for detecting clones involves the use of an enriched concrete syntax tree (eCST) as an intermediate representation for any language that is constructed using the grammar of each supported programming language. The developed technique can estimate code similarities correctly for controlled tests where Type 1, 2, and 3 clones were manually injected in simple code snippets in both, the single-language and multi-language settings. Using a small example mobile application (each code base with over 50 LOC each), we are able to detect 90 code clones. However, we note that the main limitation of our approach is that we do not take into account specific GUI framework commands, as these are not currently included in the grammar for the analyzed languages.Magíster en Ingeniería de Sistemas y ComputaciónMaestría19 páginasapplication/pdfengUniversidad de los AndesMaestría en Ingeniería de Sistemas y ComputaciónFacultad de IngenieríaDepartamento de Ingeniería de Sistemas y ComputaciónCross-language clone detection in mobile programming languagesTrabajo de grado - Maestríainfo:eu-repo/semantics/masterThesishttp://purl.org/coar/version/c_970fb48d4fbd8a85Texthttp://purl.org/redcol/resource_type/TMCódigo fuente (Computación)Ingeniería201423727Publicationhttps://scholar.google.es/citations?user=3iTzjQsAAAAJvirtual::13318-10000-0002-1094-9952virtual::13318-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::13318-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::13318-1ORIGINAL24038.pdfapplication/pdf1452562https://repositorio.uniandes.edu.co/bitstreams/f1ef1a03-4a45-488e-bc42-98b80ee210f9/download7f71c3e56e22061bab9999ff788ef2baMD51THUMBNAIL24038.pdf.jpg24038.pdf.jpgIM Thumbnailimage/jpeg23485https://repositorio.uniandes.edu.co/bitstreams/bd2f8641-7518-458c-a93c-148520863406/downloadf56aafcc6a0318761540948187ccd970MD55TEXT24038.pdf.txt24038.pdf.txtExtracted texttext/plain62575https://repositorio.uniandes.edu.co/bitstreams/d0fe6e72-3e29-47a2-811f-2b8e1cbb1ed5/download5e2891d5caacb7aadf9aef670fec3ae8MD541992/53123oai:repositorio.uniandes.edu.co:1992/531232024-03-13 14:54:28.309http://creativecommons.org/licenses/by-nc-nd/4.0/open.accesshttps://repositorio.uniandes.edu.coRepositorio institucional Sénecaadminrepositorio@uniandes.edu.co