Pokrycie i raporty gas
Miary jakości
Pokrycie i raporty gas to bezpłatna lekcja Web3 & DApp Development Fundamentals na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Web3 & DApp Development Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Web3 & DApp Development Fundamentals zawiera 4 lekcji w sumie.
Metryki jakości
Dwie metryki pomagają ocenić jakość kontraktu:
- Pokrycie kodu — jaka część kodu Solidity jest wykonywana przez testy.
- Zużycie gazu — jak kosztowne jest wywołanie funkcji.
Obie metryki są dostępne jako wtyczki Hardhat, a Toolbox zawiera narzędzie gas reporter.
Co mówi pokrycie
Pokrycie mierzy odsetek instrukcji, gałęzi i funkcji, które zostały objęte testami.
- Niskie pokrycie oznacza nieprzetestowane ścieżki kodu — a więc potencjalne ukryte błędy.
- Pokrycie na poziomie 100% nie gwarantuje poprawności, ale luki są sygnałem ostrzegawczym.
Instalowanie narzędzia pokrycia
Wtyczka solidity-coverage instrumentuje kontrakty i generuje raport pokrycia:
npm install --save-dev solidity-coverageNastępnie należy załadować ją w konfiguracji:
require("solidity-coverage");npm install --save-dev solidity-coverage
// in hardhat.config.js:
require("solidity-coverage");Uruchamianie pokrycia
Uruchom zadanie pokrycia, aby wykonać testy z instrumentacją:
npx hardhat coverageNarzędzie wyświetla tabelę dla każdego pliku i zapisuje raport HTML w katalogu coverage/, który można otworzyć w przeglądarce.
npx hardhat coverageOdczytywanie tabeli pokrycia
Raport zawiera cztery kolumny:
- % Stmts — wykonane instrukcje.
- % Branch — wykonane gałęzie if/else.
- % Funcs — wywołane funkcje.
- % Lines — osiągnięte wiersze.
Pokrycie gałęzi jest często najtrudniejsze do zwiększenia — należy upewnić się, że przetestowano obie strony każdego warunku.
Raport gazu
hardhat-gas-reporter (znajdujący się w Toolboxie) wyświetla koszty gazu dla każdego wywołania funkcji podczas testów. Włącz go w konfiguracji:
module.exports = {
gasReporter: {
enabled: true,
},
};Po wykonaniu npx hardhat test narzędzie wyświetla tabelę.
module.exports = {
gasReporter: {
enabled: true,
},
};Odczytywanie tabeli gazu
Raport gazu pokazuje dla każdej metody:
- Min / Max / Avg — minimalne, maksymalne i średnie zużycie gazu podczas wywołań.
- # calls — ile razy metoda została uruchomiona w testach.
- Deployment cost — koszt wdrożenia każdego kontraktu.
Funkcje, których wartości minimalne i maksymalne znacznie się różnią, często zawierają wartą zbadania logikę warunkową.
Ceny w walucie fiducjarnej
Raport gazu może wyświetlać szacunkowe koszty w prawdziwych pieniądzach, pobierając cenę gazu i tokena:
gasReporter: {
enabled: true,
currency: "USD",
gasPrice: 30,
}Ułatwia to przedstawianie interesariuszom rzeczywistego kosztu operacji.
gasReporter: {
enabled: true,
currency: "USD",
gasPrice: 30,
}Przełączanie za pomocą zmiennych środowiskowych
Pokrycie i raportowanie gazu spowalniają testy, dlatego warto uzależnić ich działanie od zmiennej środowiskowej:
gasReporter: {
enabled: process.env.REPORT_GAS === "true",
}Uruchamiaj REPORT_GAS=true npx hardhat test tylko wtedy, gdy potrzebujesz raportu.
gasReporter: {
enabled: process.env.REPORT_GAS === "true",
}Używanie metryk w CI
W ramach ciągłej integracji można:
- Przerywać kompilację, jeśli pokrycie spadnie poniżej określonego progu.
- Dodawać komentarze z różnicami w zużyciu gazu do żądań pull.
Te zabezpieczenia zapobiegają cichemu pogarszaniu się jakości wraz z rozrostem bazy kodu.
Zapisywanie do pliku
Raport gazu może zapisać tabelę do pliku w celu archiwizacji lub porównywania w CI:
gasReporter: {
enabled: true,
outputFile: "gas-report.txt",
noColors: true,
}Wyłączenie kolorów poprawia czytelność pliku. Pokrycie również generuje raport HTML coverage/ oraz plik lcov.info.
gasReporter: {
enabled: true,
outputFile: "gas-report.txt",
noColors: true,
}Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat raportów pokrycia i gazu.
Podsumowanie
Nauczyli się Państwo mierzyć jakość testów i zużycia gazu.
solidity-coverageraportuje pokrycie instrukcji, gałęzi, funkcji i wierszy za pomocąnpx hardhat coverage.- Pokrycie gałęzi najlepiej ujawnia nieprzetestowane ścieżki.
- Raport gazu (znajdujący się w Toolboxie) wyświetla zużycie gazu dla poszczególnych metod oraz koszty wdrożenia.
- Może wyceniać wywołania w walucie fiducjarnej i być przełączany za pomocą zmiennej środowiskowej.
- Wymuszaj progi w CI, aby zapobiegać regresjom.
Ucz się Web3 & DApp Development Fundamentals dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 29
- Lekcje
- 105
Często zadawane pytania
Czy lekcja „Pokrycie i raporty gas” jest bezpłatna?
Tak — pełny tekst „Pokrycie i raporty gas” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Web3 & DApp Development Fundamentals, przejdź na CoddyKit PRO. Kurs Web3 & DApp Development Fundamentals zawiera 4 lekcji w sumie.
Co nauczysz się w „Pokrycie i raporty gas”?
Miary jakości Ćwiczysz Web3 & DApp Development Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Web3 & DApp Development Fundamentals?
Nie wymagamy żadnego doświadczenia. Web3 & DApp Development Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Pokrycie i raporty gas”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Web3 & DApp Development Fundamentals?
Tak. Każda lekcja Web3 & DApp Development Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Pisanie testów
- Testowanie revertów i zdarzeń
- Pokrycie i raporty gas
- Fixtures