TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.49K subscribers
Post #929 619
Foundry с 0. Часть 17

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

Что мне нравилось в Hardhat, так это то, что отчеты там можно было генерировать в формате html сразу, без дополнительных "плясок с баяном". В Foundry дело обстоит несколько сложнее, особенно для пользователей Windows.

Вообще, для того, чтобы посмотреть отчет о покрытии кода тестами, нужно выполнить простую команду:

forge coverage


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

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

Также есть команда:

forge coverage --report debug


которая выведет списком в терминале протестированные и нет пункты.

Ну, и последняя команда:

forge coverage --report lcov


которая сформирует отчет в формате файла .info, и вот тут начинаются "танцы".

С помощью этого файла можно было бы сформировать удобный отчет в формате html (простой веб страницы), как это делается в Hardhat, но есть некоторые проблемы...

В сети я нашел рекомендации формировать такой отчет с помощью программы genhtml. Делается это также в терминале командой:

https://linux.die.net/man/1/lcov

genhtml -o report --branch-coverage


или другими, которые можно посмотреть тут:

https://manpages.ubuntu.com/manpages/xenial/man1/genhtml.1.html

Однако эта прога работает только с системами Linux и на Windows не ставится. По крайней мере, сделать у меня это без напряга не получилось.

Другие программы или даже плаггины в самом VScode работают крайне криво, и я не могу порекомендовать какую-либо из них.

P.S. Если вы знаете что-то, что поможет конвертировать файлы из lcov в html без потери данных, прошу написать в комментариях.

Тем не менее, хочу рассказать о другом плагине, который помогает просматривать покрытие тестами прямо в контракте - Coverage Gutters (у меня от ryanluker).

После его установки и генерации lcov.info с forge, вы можете зайти в Command Palette (ctrl+shift+p), не уверен, как это переводится на русский, и выбрать Display Coverage (ctrl+shift+7). Код в контракте выделится красными, желтыми и зелеными полосками, которые как раз и обозначают места, требующие вашего внимания.

В принципе, достаточно удобно просматривать код и понимать, что еще нужно протестировать.

Единственный момент, о котором редко говорят в теме тестов, это то, что покрытие кода на 100% не значит, что он безопасный на 100% и функции выполняют задумку разработчиков.

Есть еще логические баги и уязвимости, которые необходимо проверять отдельными тестами - сценариями использования протокола. Об этом мы будем говорить чуть позже.

Так же существует отчет по газу, который можно получить командой:

forge test --gas-report


Он показывает расход газа на ту или иную функцию, а также количество вызовов этой функции в контракте.

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

Вместе с этим вы можете скачать для себя популярный анализатор кода - 4naly3er.

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

В общем, полезная штука, которая используется на конкурсной площадке code4rena и на основе которой создаются более мощные программы для анализа кода.

#foundry #lesson17
  • 🔥 6
More from @solidityset
  1. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  2. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
  3. Sep 14, 2026Графы повсюду Если вы также следите за новостями в мире ИИ, то наверняка уже все чаще встр…
  4. Sep 10, 2026GTA6, Cyberleek, блокчейн и безопасность Увидел несколько постов (тут и тут) про Cyberleek…
  5. Sep 9, 2026Работа с чистой энергией Дисклеймер Сегодня ава и название канала, наконец, поменялись. Я…
  6. Sep 9, 2026Channel name was changed to «Из Solidity в AI и дальше»
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →