Skip to main content

crap4go

Use when the user asks for a CRAP report, cyclomatic complexity analysis, or code quality metrics on a Go project

معلومات المصدر

المستودع
unclebob/crap4go
آخر نشاط في المصدر
٢١ مايو ٢٠٢٦ في ١٩:٠٥
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٣٥
التفرعات
٨

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
crap4go
description
Use when the user asks for a CRAP report, cyclomatic complexity analysis, or code quality metrics on a Go project
# crap4go - CRAP Metric for Go Computes the **CRAP** (Change Risk Anti-Pattern) score for every Go function and method. CRAP combines cyclomatic complexity with test coverage to identify functions that are both complex and under-tested. ## Setup Run from the root of a Go module: ```bash go run github.com/unclebob/crap4go/cmd/crap4go@latest ``` Or install it: ```bash go install github.com/unclebob/crap4go/cmd/crap4go@latest crap4go ``` ## Usage ```bash # Analyze all non-test Go source files under the module crap4go # Filter to specific path fragments crap4go internal/combat movement ``` crap4go automatically deletes old coverage reports, runs `go test ./... -coverprofile=target/coverage/coverage.out`, and then analyzes the results. ### Output A table sorted by CRAP score, worst first: ``` CRAP Report =========== Function Package CC Cov% CRAP ------------------------------------------------------------------------------------- Widget.Run widget 12 45.0% 130.2 simple widget 1 100.0% 1.0 ``` ## Interpreting Scores | CRAP Score | Meaning | |-----------|---------| | 1-5 | Clean - low complexity, well tested | | 5-30 | Moderate - consider refactoring or adding tests | | 30+ | Crappy - high complexity with poor coverage | ## How It Works 1. Deletes old coverage reports and runs Go coverage 2. Finds non-test `.go` files, excluding `.git`, `target`, and `vendor` 3. Extracts functions and methods with line ranges 4. Computes cyclomatic complexity (`if`, `for`, `range`, switch cases, select clauses, `&&`, `||`) 5. Reads Go coverage profile segments for per-function statement coverage 6. Applies CRAP formula: `CC² x (1 - cov)³ + CC` 7. Sorts by CRAP score descending and prints report
عرض على GitHub