ПРОЦЕС ВИЯВЛЕННЯ БЛОКІВ З ПОВТОРАМИ І НАДЛИШКОВІСТЮ ПРИ ВИКОРИСТАННІ МОВНО-НЕЗАЛЕЖНОГО ІНКРЕМЕНТНОГО ДЕТЕКТОРУ
THE PROCESS OF DETECTING BLOCKS WITH REPETITIONS AND EXCESS BUILDING USING A LANGUAGE-INDEPENDENT INCREASE DETECTOR
Сторінки: 39-45. Номер: №3, 2021 (297)
Автори:
Н.І. ПРАВОРСЬКА, О.В. БАРМАК, Д.М. МЕДЗАТИЙ
Хмельницький національний університет
Т.В. ШЕСТАКЕВИЧ
Львівська політехніка
N.I. PRAVORSKA, О.В. BARMAC, D.M. MEDZATIY
Khmelnytsky National University
T.V. SHESTAKEVYCH
Lviv Polytechnic
DOI: https://www.doi.org/10.31891/2307-5732-2021-297-3-39-45
Надійшла / Paper received : 13.05.2021 р
Надрукована / Paper Printed : 30.06.2021 р
Анотація мовою оригіналу
Для уникнення порушень нормального функціонування розробленого програмного забезпечення, спричиненого помилками, навіть коли розробкою займаються професіонали, використовується ряд автоматизованих інструментів, які дають змогу проводити оцінювання програмного коду. Для виявлення помилок, які з’являються через дублювання блоків виконуваного коду, зазвичай застосовують різноманітні детектори. Важливість при розробці подібних детекторів полягає в тому, щоб продукт не був залежним від мови програмування та мав нескладний алгоритм знаходження клонованих блоків коду. В основі підходу мовно-незалежного детектора повторів покладено метод, який базується на використанні індексу клону. Він представляє собою глобальну структуру даних, яка нагадує типовий інвертований індекс. За основу такого підходу береться текст, тобто метод стає базою для досліджень незалежних від мови.
Ключові слова: програмний код, мовно-незалежний детектор, інкрементний підхід, робочий процес, індекс повторення, індекс клону, хеш-функція, хеш-значення, коміт, репозиторій.
Розширена анотація англійською мовою
To avoid malfunctions of the developed software caused by errors, even when developed by professionals, a number of automated tools are used, which allow to evaluate the software code. A variety of detectors are commonly used to detect errors that occur due to duplicate blocks of executable code. The importance of developing such detectors is that the product is not dependent on the programming language and has a simple algorithm for finding cloned blocks of code. The approach of the language-independent repetition detector is based on a method based on the use of the clone index. It is a global data structure that resembles a typical inverted index. This approach is based on the text, ie the method becomes the basis for research independent of language. In recent years, additional methods have become increasingly popular, which analyze the source and executable code at a smaller level, and there are attempts to avoid unnecessary recalculations, by transferring information between versions.
Reviewing the research presented in the works of scientists dealing with this problem, it was decided to propose an approach to improve methods for detecting repetitions and redundancy of program code based on language-independent incremental repetition detector (MNIDP). Most additional research is based on tree-like and graphical methods, ie they are strictly dependent on the programming language. The solution in the MNIDP campaign is to take the text as a basis, ie the method becomes the basis for research independent of language. This technique is not strictly language-independent, but due to the fact that the tokenization stage will be included, with the help of minor adjustments the desired result has been achieved. This provides a detailed analysis of the internal composition (namely, elements) of the detector and explanations of the work at different stages of the detection process.
Keywords: program code, language-independent detector, incremental approach, workflow, iteration index, clone index, hash function, hash value, commit, repository.
References
- Nils Göde and Rainer Koschke. Incremental clone detection. In 2009 13th European Conference on Software Maintenance and Reengineering, pages 219–228. IEEE, 2009.
- Tung Thanh Nguyen, Hoan Anh Nguyen, Jafar M Al-Kofahi, Nam H Pham, and Tien N Nguyen. Scalable and incremental clone detection for evolving software. In 2009 IEEE International Conference on Software Maintenance, pages 491–494. IEEE, 2009.
- Yoshiki Higo, Ueda Yasushi, Minoru Nishino, and Shinji Kusumoto. Incremental code clone detection: A pdg-based approach. In 2011 18th Working Conference on Reverse Engineering, pages 3–12. IEEE, 2011.
- Benjamin Hummel, Elmar Juergens, Lars Heinemann, and Michael Conradt. Indexbased code clone detection: incremental, distributed, scalable. In 2010 IEEE International Conference on Software Maintenance, pages 1–9. IEEE, 2010.
- Luca Pascarella, Magiel Bruntink, and Alberto Bacchelli. Classifying code comments in java software systems. Empirical Software Engineering, 24(3):1499–1537, 2019.