Студент ФКТИ Артем Семидолин разработал программу для отслеживания плагиата в коде приложений, что позволило ему войти в число победителей конкурса, организованного Кружковым движением НТИ.
29.09.2022
Первый Всероссийский конкурс open source проектов школьников и студентов проходил с апреля по август 2022 года. Его организаторами выступило Кружковое движение НТИ при поддержке ведущих IT-компаний страны, Министерства цифрового развития, связи и массовых коммуникаций РФ, а также Министерства науки и высшего образования РФ.
Всего в конкурсе приняли участие более 400 школьников и студентов из 68 регионов России. Победителями и призерами стали 13 человек, в их число вошел студент 5 курса факультета компьютерных технологий и информатики (ФКТИ) СПбГЭТУ «ЛЭТИ» Артем Семидолин. Лэтишник стал одним из лучших в треке «Создатели», участники которого заявляли собственные проекты с открытым кодом.
Во время конкурса заявленные работы были размещены в открытом доступе, и участники могли оценивать проекты друг друга. По их оценкам был сформирован лидерборд. Помимо этого, все конкурсные работы прошли экспертизу у специалистов ведущих IT-компаний.
В рамках конкурса Артем предложил программу для поиска схожих участков кода на основе сравнения абстрактных синтаксических деревьев. Проект под названием codeplag проверяет код в программах, написанных на языках программирования Python 3 и C/C++. Алгоритм позволяет выявить плагиат, а также изменения внутренней структуры программного обеспечения. Основная логика программы написана на языке программирования Python 3.
«На данный момент программа позволяет искать схожие фрагменты Python модулей и C файлов в локальном или облачном хранилище (на данный момент поддерживается только GitHub). При анализе программ с помощью встроенных средств языка получается их абстрактное синтаксическое дерево, внутренние «вершины» которого сопоставлены с операторами языка программирования, а «листья» – с соответствующими операндами. По результатам итерации по нему формируется упрощенная структура кода, считаются количество операторов, ключевых слов, литералов, происходит токенизация программы. Далее полученные данные программ сравниваются между собой реализованными алгоритмами, после чего подозрительные программы выводятся на экран консоли с вычисленным процентом схожести».
Изначально в разработке программы, кроме Артема, принимали участие студенты ФКТИ Александр Евсиков и Дмитрий Николаев. Два года назад проректор по цифровой трансформации СПбГЭТУ «ЛЭТИ» Кирилл Владимирович Кринкин предложил реализовать программу для автоматизации работы преподавателя в задаче поиска схожих фрагментов исходных кодов на базе сравнения абстрактных синтаксических деревьев. С этого момента и началась разработка данного приложения.
Сейчас программа используется на кафедре математического обеспечения и применения ЭВМ СПбГЭТУ «ЛЭТИ» для проверки студенческих работ. В дальнейшем планируется усовершенствовать алгоритм.
«Изначально от конкурса хотел получить фидбек для дальнейшего развития проекта и не рассчитывал на призовое место, так как, на мой взгляд, были представлены очень сильные работы. Однако был приятно удивлен, оказавшись в числе победителей».
За победу в конкурсе студент получил памятные призы от партнеров конкурса – «Яндекс» и «Ростелеком», значки кружкового движения НТИ и диплом победителя конкурса в направлении «Создатели».
Участие студентов СПбГЭТУ «ЛЭТИ» в конкурсах находится в русле образовательной и молодежной политик вуза в рамках программы развития «Приоритет 2030».