Контекст
Поэтому я пытаюсь использовать MOSS , чтобы сравнить репо студента с полной справочной реализацией, которая (к сожалению) общедоступна.
Что мысделать это дать студентам базовое репо, а затем они раскошелиться и реализовать свой собственный код. Проблема в том, что законченные репо прошлых лет находятся в сети.
Текущая ситуация
Пока я проверял их репо на предмет мошенничества следующим образом:
Клонируйте их репо на моей машине
Запустите мох для всех файлов в своем репо против полной реализации онлайн
Просеять через каждыйблокировать потенциальное совпадение и посмотреть, действительно ли это мошенничество или ложное срабатывание * (см. ниже)
Проблема:
Проблема в том, что основной коднастолько массивен, что по крайней мере 60% любой реализации совпадают с эталонной реализацией. Если я вижу что-то более высокое, я должен отдельно проверить каждый блок кода, чтобы увидеть, является ли он частью базового кода. Иногда я даже не могу вспомнить, является ли это базовый код или нет, поэтому я трачу больше времени на его проверку. Весь этот процесс занимает слишком много времени, и класс очень быстро расширяется, поэтому становится невозможным делать это вручную для каждого ученика.
Мой вопрос:
Есть ли способ, еслиbase_repo
(тот, который мы даем студентам), чтобы сделать что-то, эквивалентное разнице в наборе:
student_repo = student_repo - base_repo
или, по крайней мере, если история коммитоврепо что-то вроде:
commit c005 - "student commit finished assignment!"
commit c004 - "student commit finished second step"
commit c003 - "student first commit: finished first step"
commit c002 - "instructor base_code complete!"
commit c001 - "instructor base_code commit2"
commit c000 - "instructor base_code commit1"
Могу ли я получить все строки, которые были не из коммитов c000
- c002
? (чтобы увидеть только все, что добавили студенты)
Если у меня есть для этого методика, я также могу сделать то же самое с онлайн-репозиториями, из-за которых студенты могут обманывать, и сравнить двав Мосс.
Таким образом, я не получу никаких ложных срабатываний в моих результатах MOSS и могу легко определить, скопировал ли ученик код.