Использование husky и lint-staged для очистки коммитов кода C# и улучшения его качества

Этот учебник, основанный на статье Джона, показывает, как легко использовать инструменты, общие для других фреймворков, для обеспечения соблюдения стандартов кодирования всеми разработчиками в проекте мобильного приложения MAUI/Xamarin. Никто не любит, когда его придираются в своих PR-обзорах, особенно в таких мелочах, как 6 ненужных разрывов строк ​​или неправильное размещение фигурных скобок, просто чтобы убедиться, что все придерживаются одних и тех же стандартов кодирования. Важно поддерживать хорошее качество кода, не занимаясь разработкой самостоятельно. Если у вас нет хорошей документации, другим разработчикам придется догадываться, основываясь на других файлах, поэтому полезно иметь автоматический линтер кода, который обнаруживает и исправляет все проблемы с форматированием кода.

Предпосылки:

  1. Установите узел на свой компьютер и убедитесь, что он доступен в вашем терминале, запустив node -v
  2. Установите dotnet cli и убедитесь, что он доступен, запустив dotnet -v
  3. Затем установите формат dotnet: dotnet tool install -g dotnet-format, который помогает форматировать код C# в проектах dotnet.

Процедура

  1. Вам нужно добавить файл package.json в корневую папку вашего репозитория, что вы можете сделать, открыв репозиторий в командной строке npm init --yes. Это позволяет запускать команды npm
  2. Добавьте файл .editorconfig в корневую папку и добавьте код отсюда и сохраните его. Этот файл выполняет множество функций, и для нас он содержит все правила форматирования, которые вы хотите применить.
  3. Мы установим Husky в наш проект, который творит чудеса, используя npx husky-init && npm install. Вы заметите, что несколько временных файлов будут установлены, но он также добавит элементы в ваш файл package.json и новый файл .husky/pre-commit, который является ловушкой перед фиксацией, которая вызывается, когда вы пытаетесь что-то зафиксировать (либо нажатием кнопки кнопку в клиенте Git или через терминал). Если команда не выполнена, она остановит фиксацию и покажет ошибку
  4. Затем установитеlint-staged, используя это в каталоге проекта npm install lint-staged --save-dev
  5. Внутри вашего .husky/pre-commit замените npm test на npx lint-staged --relative, чтобы использовались относительные пути к файлам.
  6. Затем добавьте это в свой файл package.json (я помещаю свои скрипты ниже): “lint-staged”: {“*.cs”: “dotnet format --include”}. Эта команда вызывается lint-staged для всех файлов с суффиксом .cs в вашем коммите, и вот как изменения будут выглядеть в коммите:

Что следует отметить:

  • Чтобы проверить это в действии, вы можете попробовать добавить неправильный дополнительный разрыв строки и зафиксировать файл, и вы должны увидеть, что весь файл автоматически исправляется внутри фиксации.
  • После того, как ваша фиксация кода будет отправлена, и ваши коллеги получат последние изменения, им просто нужно запустить npm install в корневом каталоге, и магия предварительной фиксации должна работать на их компьютере также во время любой фиксации.
  • Описанные выше шаги подходят для проектов, в которых файл SLN находится в том же каталоге, что и скрытая папка .git. Вам нужно будет внести некоторые изменения, чтобы заставить его работать с другими структурами папок.

Не стесняйтесь обращаться ко мне с вопросами в Twitter или Linkedin, а также ознакомьтесь с другими нашими статьями Преобразование названий стран в смайлики с флагами или Начало работы с NFC! Или наше новое и растущее фитнес-приложение для iOS!