dart-collect-coverage — скилл для Claude Code: как настроить
Настраивает сбор тестового покрытия в проектах на Dart и Flutter через пакет coverage и генерирует отчёт в формате LCOV. Помогает отслеживать метрики тестов.
npx skills add dart-lang/skills --skill dart-collect-coverage -a claude-codeЧто делает dart-collect-coverage
Скилл автоматизирует получение метрик покрытия для Dart и Flutter. Он добавляет пакет coverage в блок dev_dependencies через команду dart pub add или flutter pub add, после чего запускает скрипт coverage:test_with_coverage. На выходе формируются сырые данные coverage/coverage.json и готовый отчёт coverage/lcov.info. В монорепозиториях утилита позволяет передавать пути к отдельным пакетам явно.
Для детального контроля доступен ручной сбор. Тесты запускаются с флагом --pause-isolates-on-exit и открытым портом VM service (например, 8181). Команда coverage:collect_coverage забирает данные из работающего процесса, а coverage:format_coverage преобразует результат в LCOV. Для сбора покрытия веток и функций требуется Dart VM 2.17.0 или новее.
Исключать файлы или блоки кода можно комментариями // coverage:ignore-file, // coverage:ignore-start и // coverage:ignore-line. Флаг --check-ignore учитывает эти директивы при форматировании отчёта.
Какие задачи решает
- Добавить coverage в зависимости разработки проекта на Dart или Flutter
- Запустить тесты и собрать готовый отчёт LCOV через test_with_coverage
- Настроить ручной сбор метрик через Dart VM service на порту 8181
- Исключить нетестируемые участки кода с помощью комментариев игнорирования
Примеры запросов агенту
- Собери LCOV-отчёт о покрытии тестами для текущего Dart-проекта
- Добавь пакет coverage в dev_dependencies и запусти тесты с генерацией coverage/lcov.info
- Собери покрытие по веткам и функциям через VM service на порту 8181
Как установить dart-collect-coverage
1Через Skills CLI (Vercel)
npx skills add dart-lang/skills --skill dart-collect-coverage -a claude-code2Вручную: положить файлы
~/.claude/skills/dart-collect-coverage/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/dart-collect-coverage/
1Через Skills CLI (Vercel)
npx skills add dart-lang/skills --skill dart-collect-coverage -a codex2Вручную: положить файлы
.agents/skills/dart-collect-coverage/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add dart-lang/skills --skill dart-collect-coverage -a cursor2Вручную: положить файлы
.cursor/skills/dart-collect-coverage/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install dart-lang/skills dart-collect-coverage2Вручную: положить файлы
.github/skills/dart-collect-coverage/SKILL.md1Через Skills CLI (Vercel)
npx skills add dart-lang/skills --skill dart-collect-coverage -a gemini-cli2Командой платформы
gemini skills install https://github.com/dart-lang/skills --path skills/dart-collect-coverageВручную: положить файлы
.devin/skills/dart-collect-coverage/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add dart-lang/skills --skill dart-collect-coverage -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о dart-collect-coverage
Как установить dart-collect-coverage в Claude Code?
Выполните команду npx skills add dart-lang/skills --skill dart-collect-coverage -a claude-code. Конфигурация сохранится в файле ~/.claude/skills/dart-collect-coverage/SKILL.md.
Что делает dart-collect-coverage?
Скилл координирует запуск тестов Dart и Flutter, извлекает данные покрытия из виртуальной машины и сохраняет их в формате LCOV.
Что требуется для сбора покрытия по функциям и веткам?
Для анализа веток и функций нужна версия Dart VM 2.17.0 или новее. Сбор выполняется утилитой coverage:collect_coverage с флагами --function-coverage и --branch-coverage.
Исходный текст
SKILL.md · BSD-3-Clause
---
name: dart-collect-coverage
description: Collect coverage using the coverage packge and create an LCOV report
metadata:
model: models/gemini-3.1-pro-preview
last_modified: Fri, 24 Apr 2026 15:14:32 GMT
---
# Implementing Dart and Flutter Test Coverage
## Contents
- [Testing Fundamentals](#testing-fundamentals)
- [Coverage Directives](#coverage-directives)
- [Workflow: Configuring and Generating Coverage Reports](#workflow-configuring-and-generating-coverage-reports)
- [Workflow: Advanced Manual Coverage Collection](#workflow-advanced-manual-coverage-collection)
- [Examples](#examples)
## Testing Fundamentals
Structure your test suites using the standard Dart testing paradigms. Use `package:test` for Dart projects and `flutter_test` for Flutter projects.
- **Unit Tests:** Verify individual functions, methods, or classes.
- **Component/Widget Tests:** Verify component behavior, layout, and interaction using mock objects (`package:mockito`).
- **Integration Tests:** Verify entire app flows on simulated or real devices.
## Coverage Directives
Exclude specific lines, blocks, or entire files from coverage metrics using inline comments. Pass the `--check-ignore` flag during formatting to enforce these directives.
- Ignore a single line: `// coverage:ignore-line`
- Ignore a block of code: `// coverage:ignore-start` and `// coverage:ignore-end`
- Ignore an entire file: `// coverage:ignore-file`
## Workflow: Configuring and Generating Coverage Reports
Follow this sequential workflow to add the coverage package, execute tests, and generate an LCOV report.
**Task Progress Checklist:**
- [ ] 1. Add `coverage` as a `dev_dependency`.
- [ ] 2. Execute the automated coverage script.
- [ ] 3. Validate the LCOV output.
### 1. Add Dependencies
Add the `coverage` package as a `dev_dependency` to your project. Do not add it to standard dependencies.
If working in a standard Dart project:
```bash
dart pub add dev:coverage
```
If working in a Flutter project:
```bash
flutter pub add dev:coverage
```
### 2. Collect Coverage and Generate LCOV
Use the bundled `test_with_coverage` script. This script automatically runs all tests, collects the JSON coverage data from the Dart VM, and formats it into an LCOV report.
```bash
dart run coverage:test_with_coverage
```
*Note: If working within a Dart workspace (monorepo), specify the test directories explicitly (e.g., `dart run coverage:test_with_coverage -- pkgs/foo/test pkgs/bar/test`).*
### 3. Feedback Loop: Validate Output
**Run validator -> review errors -> fix:**
1. Verify that the `coverage/` directory was created in the project root.
2. Ensure `coverage/coverage.json` (raw data) and `coverage/lcov.info` (formatted report) exist.
3. If coverage is missing for specific files, ensure they are imported and executed by your test files, or add `// coverage:ignore-file` if they are intentionally excluded.
## Workflow: Advanced Manual Coverage Collection
If you require granular control over the VM service, isolate pausing, or need branch/function-level coverage, use the manual collection workflow.
**Task Progress Checklist:**
- [ ] 1. Run tests with VM service enabled.
- [ ] 2. Collect raw JSON coverage.
- [ ] 3. Format JSON to LCOV.
### 1. Run Tests with VM Service
Execute tests while pausing isolates on exit and exposing the VM service on a specific port (e.g., 8181).
```bash
dart run --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=8181 test &
```
### 2. Collect Raw Coverage
Extract the coverage data from the running VM service and output it to a JSON file.
```bash
dart run coverage:collect_coverage --wait-paused --uri=http://127.0.0.1:8181/ -o coverage/coverage.json --resume-isolates
```
*Optional: Append `--function-coverage` and `--branch-coverage` to gather deeper metrics (requires Dart VM 2.17.0+).*
### 3. Format to LCOV
Convert the raw JSON data into the standard LCOV format.
```bash
dart run coverage:format_coverage --packages=.dart_tool/package_config.json --lcov -i coverage/coverage.json -o coverage/lcov.info --check-ignore
```
## Examples
### Example: `pubspec.yaml` Configuration
Ensure your `pubspec.yaml` reflects the `coverage` package strictly under `dev_dependencies`.
```yaml
name: my_dart_app
environment:
sdk: ^3.0.0
dependencies:
path: ^1.8.0
dev_dependencies:
test: ^1.24.0
coverage: ^1.15.0
```
### Example: Applying Ignore Directives
Use ignore directives to prevent generated code or untestable edge cases from lowering coverage scores.
```dart
// coverage:ignore-file
import 'package:meta/meta.dart';
class SystemConfig {
final String env;
SystemConfig(this.env);
// coverage:ignore-start
void legacyInit() {
print('Deprecated initialization');
}
// coverage:ignore-end
bool isProduction() {
if (env == 'prod') return true;
return false; // coverage:ignore-line
}
}
```
© dart-lang · BSD-3-Clause · dart-lang/skills