Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Сохранение (кэширование) результатов проверок по репозиторию (репозиториям) #158

Open
zmm opened this issue Jun 21, 2023 · 2 comments · Fixed by #176 or #196
Labels
enhancement New feature or request Hard Task that hard to implement Major Top priority task moevm Внедрение в учебный процесс МОЭВМ
Milestone

Comments

@zmm
Copy link
Member

zmm commented Jun 21, 2023

Есть идея сохранять на файлы / в БД статус попарных проверок с привязкой к коммитам / датам измененений, чтобы не делать в повторных запусках лишние проверки (не сравнивать файлы, которые мы сравнили ранее, а новых изменений в них нет)

@zmm zmm added the moevm Внедрение в учебный процесс МОЭВМ label Jun 21, 2023
@Artanias Artanias added this to the v0.5.0 milestone Jun 22, 2023
@Artanias Artanias added enhancement New feature or request Major Top priority task Hard Task that hard to implement labels Jun 22, 2023
@zmm
Copy link
Member Author

zmm commented Jul 5, 2023

Какой хочется видеть эту фичу - максимальная комплектация:

  • в процессе проверки набора репозиториев / диапазона веток / файлов приложение должно кэшировать (== сохранять в БД )
    -- построенные синтаксические деревья проверяемых файлов, помечая их составным ключом: имя файла, путь, название репо, дата изменения файла.
    -- сохраненные результаты сравнения пар, идентификатор - два составных ключа по принципу из пункта выше
  • если производим повторную проверку, то
    -- в начале запрашиваем значения плагиата для пар в кэше,
    -- затем (если пары нет) построенные деревья в кэше.
    -- если дата изменения файлов больше чем дата из кэша, то после выполнения сравнения запись в кэше обновляем

Минимальная комплектация - все что выше, но кэшируем только результаты сравнений.

Что использовать в качестве БД - MongoDB, деревья сохраняем в виде JSON.
Добавляем контейнер с БД и создаем docker-compose, каталог с данными БД превращаем в volume. Тогда все решение не будет терять данные при перезапуске.

@Artanias Artanias modified the milestones: v0.5.0, v0.4.0 Aug 31, 2023
@Artanias Artanias linked a pull request Sep 10, 2023 that will close this issue
Artanias added a commit that referenced this issue Sep 21, 2023
- Save check reports in the csv file;
- Now used ruff instead of use flake8;
- Upped libraries versions for the script for time survey;
- More typing added.

Refs: #176, #158.
@Artanias Artanias reopened this Sep 21, 2023
@Artanias Artanias modified the milestones: v0.4.0, v0.5.0 Nov 26, 2023
@Artanias Artanias moved this to To do in Codeplag tasks (CP) Jul 14, 2024
@Artanias Artanias moved this from To do to In progress in Codeplag tasks (CP) Jul 14, 2024
@Artanias Artanias moved this from In progress to Hold in Codeplag tasks (CP) Jul 14, 2024
@Artanias
Copy link
Collaborator

Artanias commented Jul 24, 2024

Добавить сверку хэша для файлов/метаданных (ASTFeatures), собранных с файла (проверяем сходство с файлом повторно только если его хэш сумма изменилась по отношению к прошлой).
Получение ASTFeatures судя по экспериментам в https://github.com/OSLL/code-plagiarism/blob/main/docs/notebooks/time_survey.py.ipynb занимает (до 0.14с для работ длиной 1000 строк) сравнительно мало времени, относительно проверок (для структурной до 90с при сравнении работы длиной в 500 строк с работой в 1000 строк), но, например, для внешних источников это дополнительный запрос.
Также относительно быстрых метрик при сравнее 500 строчной работы с 1000 строчной разница в 100 раз, 0.14с для получения метаданных и 0.0014с для быстрой проверки.

UPD 04.08.2024.
Но при этом получение ASTFeatures из любой работы происходит в любом случае, так что пока эта логика с проверкой и вычислением хэша будет внедрена, может в дальнейшем оно будет как-то более хитро оптимизировано.

@Artanias Artanias linked a pull request Aug 4, 2024 that will close this issue
@Artanias Artanias modified the milestones: v0.5.0, v0.6.0 Aug 4, 2024
@Artanias Artanias moved this from Hold to In progress in Codeplag tasks (CP) Aug 4, 2024
@github-project-automation github-project-automation bot moved this from In progress to v0.5.0 in Codeplag tasks (CP) Aug 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Hard Task that hard to implement Major Top priority task moevm Внедрение в учебный процесс МОЭВМ
Projects
Status: To do
2 participants