-
Notifications
You must be signed in to change notification settings - Fork 3
Semester report
Anton Lamtev edited this page Jul 6, 2020
·
21 revisions
- Авторизация через GitHub
- OAuth2 GitHub access token хранится в БД
- JSON Web Token используется для идентификации клиента сервером (модель c short lifetime access_token и long-lived refresh_token)
- Создание проекта с помощью ссылки на GitHub репозиторий
- Проверка прав на создание (только админскими+ правами в GitHub репозитории можно создавать проект в нашем сервисе)
- Подтягивание существующих PR
- Установка web-хука, который срабатывает при обновлении PR
- Обработка на сервере web-хука, с последующими обновлением данных в БД и запуском детектирования клонов. Информация о клонах так же помещается в БД.
- Отображение на главной странице созданных проектов
- Отображение списка PR для каждого из проектов (в порядке убывания даты обновления)
- Для каждого PR можно посмотреть
- Сводную информацию
- Дифф (Исходный код загружается с помощью JGit)
- Найденных клонов (Клоны ищутся с помощью сжатого суффиксного дерева А. Сухинина)
- Дифф с другим PR из этого проекта
- Для read-only доступа авторизация не требуется
- Конфигурирование отслеживаемых репозиториев
- Извлечение исходного кода потенциальных кандидатов из решений прошлых лет
- Определение степени заимствований между кандидатами и исследуемым PR
- Ранжирование источников заимствований
- Формирование отчёта о заимствованиях (пока только список клонов в виде диффа)
- Публикация отчёта в PR
- Аналитический отчет
- Граф pull request’ов с метаинформацией и весами дуг-заимствований (есть наработки на стороне UI)
- Diff по клику на дугу
- Отсутствие возможности поиска клонов "по кнопке", а также при создании проекта для уже существующих ПР.
- При постановке детектору клонов задачи, в качестве источников поиска клонов ему передаются файлы, которые находятся в репозиториях с состоянием коммитов, которые соответствуют Пулл-реквестам, обновленным раньше исследуемого на плагиат. То есть не происходит поиск клонов среди промежуточных коммитов пулл-реквестов.
- Повторный запуск клон детектора не является идемпотентной операцией, то есть дубликаты клонов будут записываться в БД
- Суффиксное дерево строится каждый раз заново на каждый триггер веб хуком. Количество используемой памяти тут никак не контролируется. Более того это так же неэффективно по времени. Наверное, стоит иметь по 1 суффиксному дереву на 1 проект
- Обзор GitHub API - страница на wiki
- Невлитый в develop PR "Pull-requests parser"
- В теории - обработка веб хука и выполнение запросов к GitHub API для получения данных об PR без сохранения в БД, а также загрузка захардкоженых файлов с помощью JGit без дальшейших действий с ними.
- +313 −5
- Не все замечания инспекций Code-climate исправлены
- Не все замечания от коллег исправлены
- 19 коммитов с 16 апреля по 27 мая
- Перед промежуточным дедлайном заявленная в этом ПР функциональность была реализована другим разработчиком
- TODO потраченное время на ресерч и кодинг