Использование husky и lint-staged для очистки коммитов кода C# и улучшения его качества
Этот учебник, основанный на статье Джона, показывает, как легко использовать инструменты, общие для других фреймворков, для обеспечения соблюдения стандартов кодирования всеми разработчиками в проекте мобильного приложения MAUI/Xamarin. Никто не любит, когда его придираются в своих PR-обзорах, особенно в таких мелочах, как 6 ненужных разрывов строк или неправильное размещение фигурных скобок, просто чтобы убедиться, что все придерживаются одних и тех же стандартов кодирования. Важно поддерживать хорошее качество кода, не занимаясь разработкой самостоятельно. Если у вас нет хорошей документации, другим разработчикам придется догадываться, основываясь на других файлах, поэтому полезно иметь автоматический линтер кода, который обнаруживает и исправляет все проблемы с форматированием кода.
Предпосылки:
- Установите узел на свой компьютер и убедитесь, что он доступен в вашем терминале, запустив
node -v
- Установите dotnet cli и убедитесь, что он доступен, запустив
dotnet -v
- Затем установите формат dotnet:
dotnet tool install -g dotnet-format
, который помогает форматировать код C# в проектах dotnet.
Процедура
- Вам нужно добавить файл
package.json
в корневую папку вашего репозитория, что вы можете сделать, открыв репозиторий в командной строкеnpm init --yes
. Это позволяет запускать команды npm - Добавьте файл
.editorconfig
в корневую папку и добавьте код отсюда и сохраните его. Этот файл выполняет множество функций, и для нас он содержит все правила форматирования, которые вы хотите применить. - Мы установим Husky в наш проект, который творит чудеса, используя
npx husky-init && npm install
. Вы заметите, что несколько временных файлов будут установлены, но он также добавит элементы в ваш файл package.json и новый файл.husky/pre-commit
, который является ловушкой перед фиксацией, которая вызывается, когда вы пытаетесь что-то зафиксировать (либо нажатием кнопки кнопку в клиенте Git или через терминал). Если команда не выполнена, она остановит фиксацию и покажет ошибку - Затем установите
lint-staged
, используя это в каталоге проектаnpm install lint-staged --save-dev
- Внутри вашего
.husky/pre-commit
заменитеnpm test
наnpx lint-staged --relative
, чтобы использовались относительные пути к файлам. - Затем добавьте это в свой файл package.json (я помещаю свои скрипты ниже):
“lint-staged”: {“*.cs”: “dotnet format --include”}
. Эта команда вызываетсяlint-staged
для всех файлов с суффиксом.cs
в вашем коммите, и вот как изменения будут выглядеть в коммите:
Что следует отметить:
- Чтобы проверить это в действии, вы можете попробовать добавить неправильный дополнительный разрыв строки и зафиксировать файл, и вы должны увидеть, что весь файл автоматически исправляется внутри фиксации.
- После того, как ваша фиксация кода будет отправлена, и ваши коллеги получат последние изменения, им просто нужно запустить
npm install
в корневом каталоге, и магия предварительной фиксации должна работать на их компьютере также во время любой фиксации. - Описанные выше шаги подходят для проектов, в которых файл
SLN
находится в том же каталоге, что и скрытая папка.git
. Вам нужно будет внести некоторые изменения, чтобы заставить его работать с другими структурами папок.
Не стесняйтесь обращаться ко мне с вопросами в Twitter или Linkedin, а также ознакомьтесь с другими нашими статьями Преобразование названий стран в смайлики с флагами или Начало работы с NFC! Или наше новое и растущее фитнес-приложение для iOS!