Использование GitHub в обучении студентов. Автоматизация проверок. Часть I

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В конце декабря 2020 года я написал несколько статей на Хабре по своему опыту использования GitHub в обучении студентов (ссылки на них будут в конце сей статьи).

Сегодня же хочу рассказать об автоматизации проверки кода студентов. Примеры будут про C#, т.к. это мой основной язык, на котором я преподаю программирование.

Для меня при обучении программированию важно, чтобы студенты умели не только правильно решать задания, но и красиво писать код. В обучении и проверки заданий я использую EditorConfig, dotnet cli и GitHub Actions. Но обо всём по порядку.


EditorConfig

Для C# существуют различные рекомендации по стилю кода, по именованию. Например:

  • https://docs.microsoft.com/ru-ru/dotnet/csharp/fundamentals/coding-style/coding-conventions

  • https://google.github.io/styleguide/csharp-style.html

Подробно о стилевых особенностях останавливаться не буду. Они могут разниться в командах, да и кому как удобнее. Плюс правил очень много.

Для формализации описания правил использую файл .editorconfig, как сказано в документации Microsoft. За основу взял файл из примера и немного его дополнил. Вот мой файл .editorconfig для C#. Сей файл помещается в корень решения. Это необходимо чтобы правила оформления применялись для всего решения. При этом не важно в какой IDE вы пишите код, EditorConfig поддерживается многими редакторами и средами разработки. Подробнее о поддержке редакторами и формате файла можете почитать на оф. сайте EditorConfig.

dotnet format

Для ручной проверки написанного кода на соответствие правил оформления можно использовать команду `dotnet format`. Подробнее о команде можно узнать из оф. документации Microsoft. К тому же она умеет и автоматически исправлять и приводить код в соответствии с правилами в .editorconfig. Но мне это не нужно для проверки заданий от студента. Наоборот нужно получить только отчёт об оформлении кода. Поэтому я использую команду со следующими ключами: dotnet format --no-restore --verify-no-changes

GitHub Actions

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

Порядок действия

  1. Для начала необходимо задание залить в репозиторий на GitHub.

  2. После этого нужно объяснить студентам что сдают они задние через pull request из своего форка. Подробнее о таком способе работы у меня написано здесь.

  3. Добавляете в корень репозитория файл .editorconfig с вашим набором правил.

  4. Создаётся файл формата YAML dotnet-format.yml для проверки кода на соответствие code style. Файл должен находиться по следующему пути: ./.github/workflows/ (в корне проекта создаётся папка .github, а в ней подпапка workflows). Содержимое файла приведено ниже.

name: dotnet format
on:
  pull_request:
    branches: [ "master" ]

  jobs:
  check-format:
    runs-on: windows-latest
    
      steps:
      - name: Setup .NET Core
        uses: actions/setup-dotnet@v2
          with:
          dotnet-version: '6.0.x'
       
        - name: Check out code
        uses: actions/checkout@v3
       
        - name: Run dotnet format
        run: dotnet format --no-restore --verify-no-changes

Если кратко, то содержимое файла описывает следующее:

  • файл будет запускаться при создании запросов на слияние (pull request) в ветку master

  • в виртуальной среде с Windows будет устанавливаться .NET 6

  • проверка форматирования кода с выдачей отчёта

Пример вывода отчёта:

Вот так, не сильно сложно, можно упростить себе работу по проверке заданий от студентов.

Предыдущие статьи:

  • Использование GitHub в обучении студентов

  • Использование GitHub в обучении. Примеры. Часть I

  • Использование GitHub в обучении. Примеры. Часть II

  • Использование GitHub в обучении. Примеры. Часть III

Источник: https://habr.com/ru/post/687940/


Интересные статьи

Интересные статьи

В обзоре собраны краткие описания каждого компонента экосистемы, чтобы дать понимание – как выглядит мир Spring, и ориентиры – что из этого стоит изучить глубже и применять в проекте.
Принято считать, что Энрико Ферми первым описал парадокс, носящий теперь его имя. Парадокс заключается в следующем – можно выдвинуть множество аргументов в пользу того, что в нашей Галактике должн...
Если играться с контроллерами, то почему с маленькими? Очень часто, когда речь заходит об автоматизации чего-либо, то в разговоре всплывает Arduino, его производные или же Raspberry PI...
Привет. Меня зовут Олег и я занимаюсь внедрениями систем управления предприятиями более четверти века.Я решил написать цикл статей на основе материалов моей книжки “ERP д...
Постройка новой штаб-квартиры Amazon навела на мысль. Компания известна своей экономией везде, где только можно. Она готова бороться с Конгрессом за каждый доллар оплаты сотрудников на складе...