[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. / [ES] La detección automática de reutilización en códigos fuente consiste en determinar si un (fragmento de) código ha sido creado considerando otro como fuente. El plagio y las ramificaciones en proyectos software son dos ejemplos de tipos de reutilización en códigos fuente. Con la llegada de la Web y los medios electrónicos ha crecido enormemente la facilidad de acceso a códigos fuente para ser leídos, copiados o modificados. Esto supone una gran tentación para programadores que, con propósitos de reducir costes (temporales o económicos), deciden utilizar códigos fuente previamente depurados y probados. Este fenómeno ha causado que expertos en lenguajes de programación estudien el problema.
La gran cantidad de recursos disponibles en la Web hace imposible un análisis manual de códigos fuente sospechosos de haber sido reutilizados. Por ello, existe una necesidad urgente de desarrollar herramientas automáticas capaces de detectar con precisión los casos de reutilización. Basándose en técnicas del procesamiento del lenguaje natural y recuperación de información, las herramientas de detección automáticas de reutilización son capaces de realizar multitud de comparaciones de códigos fuente de forma eficiente.
En esta tesis proponemos un conjunto de modelos que pueden aplicarse indistintamente a nivel monolingüe o translingüe. Es decir, se pueden comparar dos códigos que están escritos en el mismo, o en distinto, lenguaje de programación.
Por lo tanto, nos permite realizar comparaciones entre casi cualquier par de lenguajes de programación a diferencia de las propuestas del estado de la cuestión. %que solo se aplican a un grupo muy reducido de lenguajes de programación.
Inicialmente, hemos estudiado las modificaciones más comunes realizadas por los programadores para evitar ser detectados. Para tratar estas modificaciones y mejorar la detección, hemos propuesto una serie de preprocesos. Se han evaluado y analizado los modelos tanto en un escenario académico real como en un escenario de detección a gran escala. Finalmente, nuestras mejores propuestas se han comparado con otras propuestas del estado de la cuestión dentro de un mismo marco de evaluación.
Estas pruebas de nuestros modelos se han realizado mediante millones de comparaciones tanto a nivel monolingüe como translingüe empleando diversas técnicas que fueron efectivas al aplicarlas sobre textos escritos en lenguaje natural.
La mayor parte de los recursos desarrollados en el marco de esta tesis están a libre disposición de la comunidad científica. Utilizando parte de estos recursos, hemos configurado dos escenarios (monolingües y translingües) de evaluación que son un referente para que actuales y futuros trabajos de investigación puedan ajustar y comparar sus propuestas. / [CA] La detecció automàtica de reutilització en codis consisteix a determinar si un (fragment de) codi ha sigut creat considerant un altre com a font. El plagi i les bifurcacions en projectes de programari són dos exemples de tipus de reutilització en codis font. Amb l'arribada de la Web i els mitjans electrònics ha crescut enormement la facilitat d'accés a codis font per a ser llegits, copiats o modificats. Açò suposa una gran temptació per a programadors que amb propòsits de reduir costos (temporals o econòmics) decideixen utilitzar codis font prèviament depurats i provats. Aquest fenomen ha causat que experts en llenguatges de programació estudien aquest problema.
La gran quantitat de recursos en la Web fa impossible una anàlisi manual de codis font sospitosos d'haver sigut reutilitzats. Es per aquest motiu que existeix una necessitat urgent de desenvolupar eines automàtiques capaces de detectar amb precisió els casos de reutilització. Basant-se en tecnologies de teoria de llenguatges i recuperació d'informació, les eines de detecció automàtiques de reutilització són capaces de realitzar multitud de comparacions de codis font de forma eficient.
En aquesta tesi proposem un conjunt de models que poden aplicar-se indistintament a nivell monolingüe o translingüe. És a dir, es poden comparar dos codis que estan escrits en el mateix, o diferent, llenguatge de programació. Per tant, ens permet realitzar comparacions entre quasi qualsevol parell de llenguatges de programació a diferència de les propostes de l'estat de la qüestió. La nostra experimentació ha seguit un cert paral$\cdot$lelisme entre la detecció de reutilització monolingüe i la translingüe. Inicialment, hem estudiat les modificacions més comunes realitzades pels programadors per evitar ser detectats. Per tractar aquestes modificacions i millorar la detecció, hem proposat una sèrie de preprocesos.
S'han avaluat i analitzat els models tant en un escenari acadèmic real com en un escenari de detecció a gran escala. Finalment, hem comparat les nostres millors propostes amb altres propostes de l'estat de la qüestió dins d'un mateix marc d'avaluació.
Aquestes proves i comparacions dels nostres models s'han realitzat mitjançant milions de comparacions tant a nivell monolingüe com translingüe emprant diverses tècniques que van ser efectives en aplicar-se sobre textos escrits en lenguatge natural. La major part dels recursos creats en el marc d'aquesta tesi han estat de creació pròpia i estan a lliure disposició de la comunitat científica. Utilitzant part d'aquests recursos, hem proposat dos escenaris (monolingüe i translingüe) d'avaluació que són un referent perquè actuals i futurs treballs d'investigació puguin ajustar i comparar les seves propostes. / Flores Sáez, E. (2016). Detección de reutilización de código fuente monolingüe y translingüe [Tesis doctoral]. Universitat Politècnica de València. https://doi.org/10.4995/Thesis/10251/66868
Identifer | oai:union.ndltd.org:upv.es/oai:riunet.upv.es:10251/66868 |
Date | 01 July 2016 |
Creators | Flores Sáez, Enrique |
Contributors | Moreno Boronat, Lidia Ana, Rosso, Paolo, Universitat Politècnica de València. Departamento de Sistemas Informáticos y Computación - Departament de Sistemes Informàtics i Computació |
Publisher | Universitat Politècnica de València |
Source Sets | Universitat Politècnica de València |
Language | Spanish |
Detected Language | Spanish |
Type | info:eu-repo/semantics/doctoralThesis, info:eu-repo/semantics/acceptedVersion |
Rights | http://rightsstatements.org/vocab/InC/1.0/, info:eu-repo/semantics/openAccess |
Page generated in 0.0025 seconds