Detección de reutilización de código fuente monolingüe y translingüe

[EN] Automatic detection of source code re-use consists in determining whether a (piece of) code has been created considering another source.Plagiarism and forks in software projects are two examples of types of re-use in source codes. With the advent of the Web and electronic media it has grown eno...

Descripción completa

Detalles Bibliográficos
Autor: Flores Sáez, Enrique
Tipo de recurso: tesis doctoral
Fecha de publicación:2016
País:España
Institución:Universitat Politècnica de València (UPV)
Repositorio:RiuNet. Repositorio Institucional de la Universitat Politécnica de Valéncia
Idioma:español
OAI Identifier:oai:riunet.upv.es:10251/66868
Acceso en línea:https://riunet.upv.es/handle/10251/66868
Access Level:acceso abierto
Palabra clave:Detección de reutilización en códigos fuente
Detección de reutilización monolingüe
Detección de reutilización translingüe
Detección de plagio
LENGUAJES Y SISTEMAS INFORMATICOS
Descripción
Sumario:[EN] Automatic detection of source code re-use consists in determining whether a (piece of) code has been created considering another source.Plagiarism and forks in software projects are two examples of types of re-use in source codes. With the advent of the Web and electronic media it has grown enormously the ease of access to source code to be read, copied or modified. This represents a great temptation for developers with the aim of reducing (time or economic) costs, decide to use previously debugged and tested source codes. This phenomenon has caused experts in programming languages to study the problem. The large amount of resources available on the Web makes impossible a manual analysis of suspect source codes of being re-used. Therefore, there is an urgent need to develop automated tools that can accurately detect re-used cases. Automatic re-use detection tools based on natural language processing techniques and information retrieval are able to perform many comparisons of source codes efficiently. In this thesis we propose a set of models that are suitable at both monolingual or crosslingual level. That is, two source codes written in the same, or different, programming language can be compared. Therefore, it allows us to make comparisons between almost any pair of programming languages unlike the proposals of the state of the art. First, we studied the most common changes made by programmers to avoid the detection. To address these changes and improve the detection, we have proposed a set of pre-processing. The models have been evaluated and analysed in real academic settings as well as large-scale scenarios. Finally, our best proposals were compared with some of the state of the art proposals within the same evaluation framework. These tests of our models were performed millions of monolingual and crosslingual comparisons using several techniques that were effective when applied to detection re-use in texts written in natural language. Most of the resources developed in the framework of this thesis are freely available to the scientific community. Using part of these resources, we have set up two evaluation scenarios (monolingual and crosslingual) that are a reference for current and future research works can adjust and compare their proposals.