Vyhledávání duplicitních a zkopíruj/vlož bloků ve zdrojových kódech v jazyce GO

Abstract
Duplicity a duplikované oblasti ve zdrojových kódech jsou problém, který je třeba řešit nejen v rámci hledání plagiátů, ale především pro odstranění případných nechtěných duplikovaných částí kódu, vzniklých ze špatného návrhu struktury programu. Práce popisuje algoritmus pro hledání takových duplicit. Algoritmus byl implementován v jazyce Go s možností distribuovaného výpočtu. K samotnému vyhledávání je použit sufixový strom, který je sestavován pro serializované derivačními stromy vstupních souborů. Řeší se také odstraňování redundantních výsledků a seskupování podobných duplicit. Model distribuce tvoří jeden řídící uzel a více výpočetních uzlů. Řízení probíhá pomocí vzdáleného volání procedur. Rozhraní programu je koncipováno jako konzolová aplikace, která nabízí dvě možnosti prezentace nalezených duplicit: textový nebo HTML výstup.
Duplicities and duplicated parts of a source code are a problem needing solving not only due to the search for plagiarism but more importantly for eliminating non-intentional duplicates in a source code caused by inaccurate design of the program structure. This thesis shows an algorithm capable of finding such duplicities. The algorithm has been implemented in Go programming language with the option for distributed calculations. The actual search for duplicities has been implemented through the method of a suffix tree, which is being built for serialized abstract syntax trees of the input files. The algorithm also deals with removing redundant parts of the code and grouping similar parts of the code. The distributional model is implemented by one master node and several computing nodes. The communication is implemented via remote procedure calls. The console is used to provide program interface, which offers two different possibilities for presenting the found duplicities: HTML or plain-text output.
Description
Subject(s)
duplicity, distribuce, sufixový strom, programovací jazyk Go, duplicities, distribution, suffix tree, Go programming language
Citation
ISSN
ISBN