find-untested-sources

Detects source files lacking test references via static parse-only analysis and emits prioritized JSON reports.

Updated Aug 9, 2026
One-click install
npx skills add https://github.com/adinj00/player-performance --skill find-untested-sources-adinj00
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: find-untested-sources
Source: https://github.com/adinj00/player-performance/tree/main/.agents/skills/find-untested-sources
Command: npx skills add https://github.com/adinj00/player-performance --skill find-untested-sources-adinj00

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires Microsoft.CodeAnalysis.CSharp, tree-sitter-language-pack, and includes scripts (resource) components.

What problem does it solve? Before writing new tests, developers need to know which source files have no test coverage, but traditional coverage tools require a full build and passing test run that can take minutes. This Skill answers that question statically in seconds by parsing source and test files without compilation, producing a prioritized worklist of untested files. ## Core Features & Use Cases - Dual analysis engines: A Roslyn-based C# analyzer with namespace-aware disambiguation for .NET repos, and a tree-sitter polyglot analyzer supporting Python, TypeScript/JavaScript, Go, Java, Rust, Ruby, and C#. - Source-to-test pairing map: Builds a deterministic mapping of which test files reference which source files, plus orphan test detection. - Prioritized JSON output: Lists untested files ordered by declaration count (API surface) with a suggested_test_path for each, ready to feed a test-generation agent. - Use Case: Point the analyzer at a large monorepo before a testing sprint to get the top 20 highest-API-surface files with no tests, then hand that list to a test-writing agent. ## Quick Start Ask the agent to run the find-untested-sources analyzer on your repository root and return the top untested files with suggested test paths.

Frequently Asked Questions about find-untested-sources

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I find untested source files in my repository?

Run the analyzer script against your repo root: dotnet run scripts/Find-UntestedSources.cs for .NET repos, or python scripts/find_untested_sources.py for polyglot repos. It parses all files statically and outputs JSON listing untested sources ordered by declaration count with suggested test paths.

What is the difference between the Roslyn and tree-sitter engines?

The Roslyn engine only handles C# but does strict namespace-aware disambiguation, making it more accurate on duplicated short names like Settings or Context. The tree-sitter engine supports Python, TypeScript, JavaScript, Go, Java, Rust, Ruby, and C# using import resolution plus identifier overlap.

Does this replace code coverage tools?

No. It answers which files have no referencing test at all, not which lines or branches were executed. For line/branch coverage or CRAP risk scores, use a coverage-analysis tool; this skill is a fast pre-test-writing triage step.

What dependencies are required to run the analysis?

The C# engine needs a .NET SDK supporting file-based apps and the Microsoft.CodeAnalysis.CSharp NuGet package. The polyglot engine needs Python 3.10+ and the tree-sitter-language-pack pip package, which bundles parsers for 300+ languages.

Why are some tested files reported as untested?

Static parse-only analysis misses types referenced only via reflection, DI container string names, or extension methods invoked as instance methods. Short identifiers under 4 characters are also dropped in the polyglot engine to avoid noisy pairings.

Can I restrict the analysis to specific languages?

Yes. The polyglot script accepts repeatable --lang flags, for example --lang python --lang typescript, to limit scanning to those languages. You can also use --limit-untested to truncate the report to the top N entries.