run-coverage — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited run-coverage (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Run a .NET test project with code coverage enabled and display a structured summary of line and branch coverage per class and method.
improve-test-coverageanalyze-coverage-gaps.csproj, no NUnit/xUnit/MSTest references)| Input | Required | Description |
|---|---|---|
testProjectPath | Yes | Full path to the .csproj test project file |
filter | Yes | Test filter string matched against FullyQualifiedName (partial match if no dots; exact match if contains dots) |
workingDir | No | Working directory; defaults to the project directory |
includeClass | No | Restrict coverage collection to a single class name (e.g. OrderService). Emits /p:Include=[*]*<name> to dotnet test. Use ONLY when you want coverage scoped to one class. Do NOT pass a namespace — the filter will silently exclude real classes. Omit for broad/multi-class coverage. |
forceRestore | No | Set to true after scaffolding a new test project or adding NuGet packages. |
sessionId | No | Isolate output directories when multiple agents run concurrently. |
Check that the reportgenerator global tool is installed:
dotnet tool list -g | grep reportgeneratorIf missing, install it:
dotnet tool install -g dotnet-reportgenerator-globaltoolCall RunTestsWithCoverage with the provided testProjectPath and filter.
Pass includeClass only when coverage should be scoped to a single class (e.g. the specific class under test). Leave it unset for broad filters that span multiple classes — otherwise coverage numbers will be artificially zeroed for classes outside the include pattern.
The tool returns paths to:
Summary.json — AI-optimized coverage summarycoverage.cobertura.xml — detailed Cobertura XML reportCall GetCoverageSummary with the summaryJsonPath returned from Step 2.
Returns a JSON array sorted by branch coverage (lowest first) with:
lineCoverage and branchCoverage (0.0–1.0)methods array sorted by branch coverage ascendingIf a broad filter was used, call GetFileCoverage for specific source files to check if they meet the 80% target.
Returns allMeetTarget: true/false per file — useful for deciding which files need work.
Display coverage as a table. Highlight any class or method below 80% line or branch coverage.
Example format:
Class: MyService
Line: 72% Branch: 61%
Methods (lowest branch first):
ProcessOrder Line: 50% Branch: 40%
ValidateInput Line: 85% Branch: 75%RunTestsWithCoverage completed without errorsSummary.json path was returned and passed to GetCoverageSummary| Pitfall | Solution |
|---|---|
reportgenerator not found | Install via dotnet tool install -g dotnet-reportgenerator-globaltool |
| Filter matches no tests | Broaden the filter or use a partial class name |
Summary.json not found | Check the path returned by RunTestsWithCoverage; ensure tests ran successfully |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.