Skip to content

Latest commit

 

History

History
57 lines (34 loc) · 5.06 KB

linting-and-formatting.md

File metadata and controls

57 lines (34 loc) · 5.06 KB

Linting and Formatting

Для того чтобы писать чистый и понятный другим разработчикам команды код обычно используют два вида инструментов: линтеры и форматеры.

Линтеры автоматически анализируют код на наличие возможных программных ошибок и ошибок стиля.

Форматеры автоматически форматируют код в соответствии с предопределенными правилами и значениями отступов по умолчанию.

Язык Solidity не является исключением. Мы предлагаем обратить внимание на следующие инструменты, которые позволят автоматизировать рабочий процесс написания кода в команде.

Важно! Для того чтобы начать писать смарт-контракты на Solidity не обязательно сразу глубоко уметь разбираться во всех инструментах для линтинга и форматирования кода. Но важно знать, какие есть инструменты и для чего они используются. И когда в ходе разработки ты почувствуешь необходимость в использование какого-то из этих инструментов, ты уже будешь знать, что тебе нужно использовать.

Linters

  • Solhint. Самый популярный линтер.
  • Ethlint. Раньше этот инструмент назывался Solium.

Formatters

Git hooks

Про то что такое, git hooks можно почитать тут

  • Husky. Этот инструмент может запускать линтер и форматер перед каждым commit, push или receive.

Расширения для vscode

Общие расширения

HardHat

Foundry

Важно! Нужно быть внимательным. Расширения для поддержки языка могут конфликтовать друг с другом. Не обязательно использовать все расширения сразу.

Список интеграций для других IDE можно посмотреть тут.

Linting and formatting для тестов

Есть несколько подходов в организации тестов для смарт контрактов. Например, для Foundry тесты пишутся на языке Solidity и это значит, что нам достаточно стандартного линтинга и форматирования только для языка Solidity.

В других средах разработки ситуация может быть немного иной. Например в Hardhat используются: библиотека ethers.js и тестовый фреимворк mocha. Это подразумевает написание тестов на языке javascript или typescript.

  • ESLint. Понадобится для линтинга js или ts.

Важно! Для других фреймворков могут понадобиться свои инструменты линтинга и форматирования.