crap score
Calculates targeted CRAP (Change Risk Anti-Patterns) scores for a named .NET method, class, or single source file. Use when the user explicitly asks to compute CRAP scores or assess risky untested code for a specific target, combining Cobertura coverage data with cyclomatic complexity analysis. DO NOT USE FOR: project-wide coverage analysis, coverage plateau or
Что делает навык
Вычисляет целевые оценки CRAP (Change Risk Anti-Patterns) для методов, классов или файлов .NET, объединяя данные покрытия Cobertura с цикломатической сложностью. Используется для выявления кода, который одновременно сложен и плохо покрыт тестами, чтобы определить приоритеты для рефакторинга и написания тестов.
Когда применять
- Пользователь явно просит рассчитать CRAP-оценки для конкретного метода, класса или файла.
- Необходимо оценить рискованный непокрытый тестами код для конкретной цели, объединив данные покрытия и сложность.
- Пользователь хочет определить, какие методы требуют тестирования в первую очередь, исходя из риска, связанного с низким покрытием и высокой сложностью.
- Требуется оценить качество тестовBeyond простых процентов покрытия, выявив методы с высоким риском изменений.
Как работает
- Сбор данных покрытия: использование предоставленного отчета Cobertura или запуск тестов через run-tests с генерацией Cobertura (например, через coverlet.collector или Microsoft.Testing.Extensions.CodeCoverage).
- Вычисление цикломатической сложности: использование машинно-произведенных метрик или ручной подсчет точек принятия решений (if, for, catch, логические операторы и т.д.) с базовой сложностью 1.
- Извлечение покрытия из Cobertura XML: парсинг line-rate или вычисление доли покрытых строк для каждого метода, сопоставление имен методов.
- Расчет CRAP-оценок: применение формулы CRAP(m) = comp(m)^2 * (1 - cov(m))^3 + comp(m) для каждого метода в области видимости.
- Представление результатов: вывод отсортированной таблицы (от высшего CRAP к низшему) с указанием сложности, покрытия, оценки и уровня риска.
- Предоставление рекомендаций: предложение добавить тесты или уменьшить сложность, расчет необходимого покрытия для снижения CRAP ниже порога 15.
Примеры запросов агенту
Что понадобится
- Доступ к отчету покрытия в формате Cobertura XML или возможность его генерации.
- Инструмент run-tests для определения платформы тестирования и совместимых команд.
- Возможность анализа исходного кода для подсчета цикломатической сложности.
Описание составлено по SKILL.md навыка, сверено 05.10.2026.
Как подключить
SKILL.md к навыкам ассистентаНавык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.