Skip to content

AleksMa/GraphStealChecker

Repository files navigation

Graph Steal Checker

Проверка исходных текстов программ на плагиат с использованием графа зависимости программы (program dependence graph).

Поддержанные языки программирования:

  • Python

Установка

Требуются установленные go1.11+, python3.8+ и gcc.

git clone https://github.com/AleksMa/GraphStealChecker.git
cd GraphStealChecker
git submodule update --init --recursive
pip install -r requirements.txt

Использование

go build -o ./bin/main main.go
./bin/main -p=8080

Загрузка программ на проверку производится по адресу 127.0.0.1:<port>, где - указанный во флаге -p порт, по умолчанию 8080.

Параметры:

  • Лимит времени проверки - задается в секундах, устанавливает максимальное время поиска наибольших общих подграфов, натуральное число
  • Минимальная доля вершин - какая часть вершин графа каждой функции по меньшей мере должна входить в общий подграф (ограничение снизу размер общего подграфа), вещественное число от 0 до 1
  • Уровень правдоподобия - параметр проверки статистической гипотезы на предмет близости графов при поиске максимального общего подграфа, вещественное число от 0 до 1

Примеры файлов для проверки:

  • data/simpleX.py - тривиальные примеры кода
  • data/lab2/ - лабораторные работы по курсу "Алгоритмы компьютерной графики". Как правило, содержат похожие участки кода (например, функции обработки нажатий на клавиши).

Структура

  • check - пакет работы с графом зависимости программ и проверяемым исходным кодом, Go
  • data - примеры Python-программ для проверки
  • net - пакет работы с сетью, Go
  • PyDG - подмодуль генерации графа зависимости программ, Python3
  • PyMCS - алгоритм поиска максимальных общих подграфов с точностью до изоморфизма, Python3

About

Code Plagiarism Checker Based on PDG

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published