Scientific journal
Modern high technologies
ISSN 1812-7320
"Перечень" ВАК
ИФ РИНЦ = 0,940

AUTOMATED CODE REVIEW SYSTEM FOR TRAINING SPECIALISTS IN THE FIELD OF INFORMATION TECHNOLOGY

Nazhimova N.A. 1 Nazhimov A.V. 2
1 Nizhny Novgorod state technical University named after R.E. Alekseev
2 National Research Lobachevsky State University of Nizhny Novgorod
1016 KB
The article discusses an automated code review system for IT students, based on the use of the Git version control system and the GitHub cloud repository service. The aim of the study is to develop an automated code review system for IT students. The key advantages of this system are described, such as automation of the review process, increased objectivity of assessments, scalability, timely feedback, and support for distance learning. Automation allows educators to be freed from routine tasks, enabling them to focus on more significant aspects of the educational process, including individual student support and curriculum development. GitHub Actions tools are integrated to perform code testing. This creates an efficient and reliable infrastructure for assignment evaluation. The importance of using modern tools in the educational process is emphasized, as it helps prepare students for real-world professional activities. The article also discusses directions for future work, including expanding system functionality, developing methods for personalized feedback, applying machine learning for code analysis, and integrating with educational platforms. These improvements can enhance the quality of education, make the review process more flexible and adaptive, and equip students with the necessary skills for working in modern software development environments. The automated code review system based on Git and GitHub represents an important step towards innovation in education and the training of highly qualified IT specialists.
automated code review
testing
Git
GitHub
GitHub Actions
IT specialties
education

В настоящее время профессии из сферы информационных технологий становятся все более востребованными и динамично развивающимися, требуя от высших учебных заведений и преподавателей IT-специальностей более эффективных методов обучения и оценки знаний [1]. При этом значительная часть процесса обучения сопряжена с написанием кода программ на различных языках программирования, набор которых с каждым днем становится шире. В этом контексте автоматизация процесса проверки заданий по написанию кода становится необходимой и актуальной задачей.

Автоматизация процесса проверки заданий по программированию имеет ряд значимых преимуществ. Прежде всего, она позволяет освободить время преподавателя от монотонной и рутинной работы, связанной с проверкой большого объема кода. Это время можно использовать для более важных задач, таких как разработка учебных материалов, проведение индивидуальных консультаций со студентами и повышение качества обучения в целом. Кроме того, автоматизированные системы проверки кода (АСПК) позволяют улучшить качество обратной связи для студентов. Быстрая и точная оценка и комментирование кода помогают студентам лучше понять свои ошибки и улучшить свои навыки программирования. АСПК также обеспечивают необходимую объективность. Оценки основываются на заданных критериях и алгоритмах, что исключает субъективные суждения и обеспечивает равные условия для всех студентов. АСПК могут легко масштабироваться для обработки большого объема работ, что особенно важно при проведении массовых офлайн- или онлайн-курсов. При этом время, необходимое для проверки одного задания, существенно сокращается. В условиях дистанционного обучения АСПК становится особенно ценной, поскольку облегчает оценку работ студентов и обеспечивает непрерывное обучение без необходимости присутствия в аудитории. В целом использование современных технологий в обучении, включая АСПК, демонстрирует передовой подход учебного заведения и его готовность использовать инновации для обеспечения высокого качества образования, что соответствует Указу Президента РФ от 21.07.2020 № 474 «О национальных целях развития Российской Федерации на период до 2030 года» [2].

Цель исследования заключается в разработке автоматизированной системы проверки кода студентов IT-специальностей.

Материалы и методы исследования

Рассмотрим различные подходы и инструменты, которые могут быть использованы для реализации АСПК, включая использование тестовых фреймворков, статический анализатор кода, различные плагины и расширения для интегрированных сред разработки (IDE), интеграция с системами управления версиями.

Использование тестовых фреймворков: тестовые фреймворки, такие как JUnit для Java, pytest для Python или Jasmine для JavaScript, позволяют написать автоматизированные тесты для разных аспектов кода, включая его функциональность, производительность и безопасность.

Статические анализаторы кода: инструменты статического анализа кода, например, ESLint для JavaScript или pylint для Python, автоматически проверяют код на соответствие стандартам кодирования, выявляют потенциальные ошибки и предупреждают о неправильном использовании языковых конструкций [3].

Плагины и расширения для IDE: многие современные интегрированные среды разработки (IDE), такие как Visual Studio Code, IntelliJ IDEA или PyCharm, предлагают плагины и расширения для автоматической проверки кода на лету, а также для выполнения автоматизированных тестов и анализа качества кода [4].

Все рассмотренные выше варианты реализации АСПК вполне пригодны для проверки кода в контексте разработки программного обеспечения, однако их сложно применить для проверки кода студентов, выполняющих определенное задание. Во-первых, все описанные системы напрямую не поддерживают обмен кодом и возможность его обсуждения со студентом. Во-вторых, использование конкретного инструментария накладывает ограничение на использование различных языков программирования в рамках одной АСПК. В-третьих, многие из описанных решений так или иначе являются коммерческими продуктами западных разработчиков, что в условиях санкций может накладывать определенные ограничения на их использование. Описанные недостатки можно преодолеть благодаря использованию в качестве основы для АСПК систем управления версиями. Использование систем управления версиями, таких как Git, в сочетании с автоматизированными средствами непрерывной интеграции и непрерывной доставки (CI/CD), позволяет автоматически проверять код, оставлять обратную связь и реализовать возможность проверки кода на разных языках программирования в рамках одной АСПК.

В работе предложено использовать систему контроля версий Git в качестве основы для создания АСПК. Следует отметить, что знание студентами основ системы контроля версий Git является необходимым условием для успешного применения АСПК в процессе обучения. Однако, как показывает опыт, подобные знания легко прививаются в рамках 5-часового лабораторного практикума и в свою очередь являются весьма полезными в контексте будущего трудоустройства по ряду причин, описанных ниже.

Git – это распределенная система контроля версий (DVCS), которая позволяет разработчикам отслеживать изменения в коде, работать совместно над проектами и управлять различными версиями кода [5]. В отличие от централизованных систем контроля версий, Git позволяет каждому разработчику иметь полную копию репозитория, что увеличивает надежность и гибкость работы. Git упрощает совместную работу над проектами, особенно в больших командах. Возможность создавать ветки и выполнять слияние изменений позволяет разработчикам работать над разными частями проекта одновременно, не мешая друг другу. Это важное умение для студентов, так как большинство проектов в индустрии разрабатываются коллективно. Git сохраняет историю всех изменений, сделанных в проекте, что позволяет разработчикам отслеживать и анализировать каждое из них в отдельности. Это полезно для выявления ошибок и анализа их причин. Студенты могут экспериментировать с новыми идеями без риска повредить основной код, что способствует более глубокому пониманию принципов разработки программного обеспечения. Git интегрируется с множеством современных инструментов и платформ, таких как GitHub, GitLab, Bitbucket и др. [6]. Знание Git предоставляет студентам доступ к этим инструментам, что позволяет им участвовать в открытых проектах open-source сообщества. Знание Git является необходимым требованием для большинства позиций в сфере разработки программного обеспечения. Это важный навык, который значительно повышает конкурентоспособность будущих специалистов на рынке труда.

Алгоритм работы АСПК на базе системы контроля версий Git и облачного сервиса GitHub в нотации BPMN 2.0 показан на рис. 1.

missing image file

Рис. 1. Алгоритм работы АСПК на базе системы контроля версий Git и облачного сервиса GitHub в нотации BPMN 2.0

Преподаватель, использующий АСПК, начинает работу с создания репозитория с текущим заданием по написанию кода. Предполагается, что репозиторий создается на локальной машине педагога и далее отправляется на облачный сервис удаленных репозиториев GitHub. Здесь следует отметить, что использование GitHub в качестве основы для создания АСПК обусловлено высокой популярностью данного сервиса. Однако справедливо будет заметить, что и прочие подобные сервисы (GitLab, Bitbucket и др.), также обладают всем необходимым функционалом. Таким образом, на данном шаге алгоритма мы имеем репозиторий, который содержит файл с описанием задания. Затем ссылка на данный репозиторий отправляется студентам. Здесь может быть использован любой сервис обмена сообщениями либо система электронного обучения вуза. Получив сообщение, студент делает форк (fork) репозитория с заданием (рис. 2), то есть создает его копию в своем аккаунте облачного сервиса репозиториев, в нашем случае это GitHub. Затем студент клонирует упомянутый форк-репозиторий на свой локальный компьютер, использую команду git clone <URL репозитория>. В данном репозитории студент создает ветку, в качестве названия для которой выбирается фамилия студента. Команда для создания ветки git branch <название ветки>. Далее студент приступает к выполнению задания.

По завершении выполнения задания студент делает последний коммит командой git commit и отправляет изменения в свой удаленный репозиторий на облачном сервисе GitHub командой git push. Затем, используя инструмент Pull Request, студент отправляет задание на проверку преподавателю (рис. 2).

missing image file

Рис. 2. Управляющие элементы на странице репозитория в GitHub для создания fork и pull request

При создании pull request преподаватель получает уведомление о новом решении на задание по написанию кода. Если в дальнейшем не требуются автоматические тесты, то на этом шаге можно остановиться, проверить код вручную и отправить комментарий непосредственно на странице pull request. В случае необходимости автоматической проверки кода в АСПК на базе Git и GitHub должны быть настроены инструменты GitHub Actions.

GitHub Actions – это встроенная в GitHub платформа автоматизации, предназначенная для упрощения выполнения различных задач в процессе разработки программного обеспечения. Этот набор инструментов позволяет автоматизировать такие процессы, как CI/CD, тестирование, развертывание и отправка уведомлений [7].

Как было отмечено выше, автоматическое тестирование кода можно настроить для абсолютного большинства современных языков программирования. Приведем в качестве примера алгоритм для настройки автоматической проверки кода на языке Python через GitHub Actions при создании pull request:

Создание файла конфигурации GitHub Actions:

1. Перейдите в репозиторий на GitHub.

2. В верхнем меню выберите вкладку Actions.

3. Нажмите на кнопку New workflow.

4. В появившемся окне выберите Set up a workflow yourself или один из предустановленных шаблонов, например Python application.

Создание основного файла конфигурации:

1. В каталоге репозитория должна быть создана директория .github/workflows.

2. В этой директории должен быть создан файл с расширением .yml, например python-app.yml (рис. 3).

Настройка кода проекта:

1. Убедитесь, что в вашем проекте есть файл requirements.txt для установки зависимостей, если они требуются.

2. Убедитесь, что у вас есть тесты в проекте. Например, создайте директорию tests и добавьте туда файл test_sample.py (рис. 4) с простым тестом.

Автоматическое выполнение GitHub Actions:

1. После создания pull request, GitHub Actions автоматически запустит конфигурацию, указанную в файле .github/workflows/python-app.yml.

2. На вкладке Actions в репозитории преподавателя можно будет наблюдать за ходом выполнения задачи, включая установку зависимостей, проверку стиля кода с помощью flake8 и выполнение тестов с помощью pytest.

Таким образом, GitHub Actions позволяет автоматизировать процесс проверки кода в рамках АСПК при создании pull request студентами. Это помогает обеспечить высокое качество кода и способствует выявлению ошибок.

missing image file

Рис. 3. Код для файла python-app.yml

missing image file

Рис. 4. Код для файла test_sample.py

Результаты исследования и их обсуждение

В данной статье была рассмотрена система автоматической проверки кода студентов IT-специальностей, основанная на использовании Git и GitHub. Подробно описаны преимущества этой системы, которые делают ее незаменимым инструментом в образовательной среде, позволяя преподавателям сосредоточиться на более важных аспектах обучения и профессионального развития студентов.

Следует также отметить направления дальнейшей работы, которые включают в себя: расширение функциональности: интеграция дополнительных инструментов для проверки кода, таких как статические анализаторы, профайлеры производительности и инструменты для тестирования безопасности; персонализация обратной связи: разработка методов автоматической генерации персонализированных комментариев и рекомендаций для студентов на основе их кода и истории работы; машинное обучение и искусственный интеллект: использование методов машинного обучения для анализа кода студентов, предсказания возможных ошибок и предоставления рекомендаций по улучшению кода; интеграция с учебными платформами: создание интеграций с популярными образовательными платформами и системами управления обучением, что позволит упростить процесс создания и управления учебными материалами.

Заключение

Возможность использования современных инструментов и платформ, таких как системы контроля версий, облачные сервисы удаленных репозиториев, скрипты для автоматической проверки кода на различных языках программирования, позволяют реализовать эффективную и надежную инфраструктуру для проверки заданий по созданию компьютерных программ различной сложности. Реализация таких систем особенно важна в условиях многочисленных групп и дистанционного обучения, которые соответствуют текущей ситуации в высшем техническом образовании в нашей стране.