mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-06-04 12:32:58 +00:00
fix
This commit is contained in:
@@ -0,0 +1,696 @@
|
||||
{
|
||||
"command": "scan",
|
||||
"overall_score": 81.0,
|
||||
"objective_score": 82.8,
|
||||
"strict_score": 73.3,
|
||||
"strict_target_score": 95.0,
|
||||
"strict_target_gap": 21.7,
|
||||
"prev_overall_score": 81.0,
|
||||
"prev_objective_score": 82.8,
|
||||
"prev_strict_score": 73.3,
|
||||
"delta_comparable": true,
|
||||
"delta_comparable_reason": null,
|
||||
"profile": "full",
|
||||
"noise_budget": 10,
|
||||
"noise_global_budget": 0,
|
||||
"hidden_by_detector": {
|
||||
"subjective_review": 58,
|
||||
"test_coverage": 29
|
||||
},
|
||||
"hidden_total": 87,
|
||||
"diff": {
|
||||
"new": 0,
|
||||
"auto_resolved": 0,
|
||||
"reopened": 0,
|
||||
"total_current": 235,
|
||||
"suspect_detectors": [],
|
||||
"chronic_reopeners": [],
|
||||
"skipped_other_lang": 0,
|
||||
"skipped_out_of_scope": 0,
|
||||
"ignored": 0,
|
||||
"ignore_patterns": 0,
|
||||
"ignored_by_detector": {},
|
||||
"ignored_by_tier": {},
|
||||
"raw_findings": 235,
|
||||
"suppressed_pct": 0.0
|
||||
},
|
||||
"stats": {
|
||||
"total": 599,
|
||||
"open": 109,
|
||||
"fixed": 110,
|
||||
"auto_resolved": 254,
|
||||
"wontfix": 126,
|
||||
"false_positive": 0,
|
||||
"by_tier": {
|
||||
"1": {
|
||||
"open": 1,
|
||||
"fixed": 61,
|
||||
"auto_resolved": 3,
|
||||
"wontfix": 0,
|
||||
"false_positive": 0
|
||||
},
|
||||
"2": {
|
||||
"open": 0,
|
||||
"fixed": 49,
|
||||
"auto_resolved": 88,
|
||||
"wontfix": 18,
|
||||
"false_positive": 0
|
||||
},
|
||||
"3": {
|
||||
"open": 40,
|
||||
"fixed": 0,
|
||||
"auto_resolved": 138,
|
||||
"wontfix": 108,
|
||||
"false_positive": 0
|
||||
},
|
||||
"4": {
|
||||
"open": 68,
|
||||
"fixed": 0,
|
||||
"auto_resolved": 25,
|
||||
"wontfix": 0,
|
||||
"false_positive": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"warnings": [],
|
||||
"dimension_scores": {
|
||||
"File health": {
|
||||
"score": 100.0,
|
||||
"strict": 83.1,
|
||||
"checks": 83,
|
||||
"issues": 0,
|
||||
"tier": 3,
|
||||
"detectors": {
|
||||
"structural": {
|
||||
"potential": 83,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
}
|
||||
}
|
||||
},
|
||||
"Code quality": {
|
||||
"score": 100.0,
|
||||
"strict": 92.2,
|
||||
"checks": 574,
|
||||
"issues": 0,
|
||||
"tier": 3,
|
||||
"detectors": {
|
||||
"unused": {
|
||||
"potential": 83,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
},
|
||||
"logs": {
|
||||
"potential": 83,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
},
|
||||
"exports": {
|
||||
"potential": 135,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
},
|
||||
"props": {
|
||||
"potential": 53,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
},
|
||||
"smells": {
|
||||
"potential": 83,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
},
|
||||
"react": {
|
||||
"potential": 11,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
},
|
||||
"orphaned": {
|
||||
"potential": 37,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
},
|
||||
"flat_dirs": {
|
||||
"potential": 24,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
},
|
||||
"naming": {
|
||||
"potential": 24,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
},
|
||||
"facade": {
|
||||
"potential": 37,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
},
|
||||
"patterns": {
|
||||
"potential": 4,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
}
|
||||
}
|
||||
},
|
||||
"Duplication": {
|
||||
"score": 100.0,
|
||||
"strict": 99.8,
|
||||
"checks": 130,
|
||||
"issues": 0,
|
||||
"tier": 3,
|
||||
"detectors": {
|
||||
"dupes": {
|
||||
"potential": 130,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
}
|
||||
}
|
||||
},
|
||||
"Test health": {
|
||||
"score": 45.9,
|
||||
"strict": 24.7,
|
||||
"checks": 1122,
|
||||
"issues": 107,
|
||||
"tier": 4,
|
||||
"detectors": {
|
||||
"test_coverage": {
|
||||
"potential": 1044,
|
||||
"pass_rate": 0.4384041957357197,
|
||||
"issues": 39,
|
||||
"weighted_failures": 586.3060196519086
|
||||
},
|
||||
"subjective_review": {
|
||||
"potential": 78,
|
||||
"pass_rate": 0.7384615384615385,
|
||||
"issues": 68,
|
||||
"weighted_failures": 20.4
|
||||
}
|
||||
}
|
||||
},
|
||||
"Security": {
|
||||
"score": 100.0,
|
||||
"strict": 100.0,
|
||||
"checks": 120,
|
||||
"issues": 0,
|
||||
"tier": 4,
|
||||
"detectors": {
|
||||
"security": {
|
||||
"potential": 83,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
},
|
||||
"cycles": {
|
||||
"potential": 37,
|
||||
"pass_rate": 1.0,
|
||||
"issues": 0,
|
||||
"weighted_failures": 0.0
|
||||
}
|
||||
}
|
||||
},
|
||||
"Naming Quality": {
|
||||
"score": 82.0,
|
||||
"strict": 82.0,
|
||||
"checks": 10,
|
||||
"issues": 0,
|
||||
"tier": 4,
|
||||
"detectors": {
|
||||
"subjective_assessment": {
|
||||
"potential": 10,
|
||||
"pass_rate": 0.82,
|
||||
"issues": 0,
|
||||
"weighted_failures": 1.8
|
||||
}
|
||||
}
|
||||
},
|
||||
"Error Consistency": {
|
||||
"score": 68.0,
|
||||
"strict": 68.0,
|
||||
"checks": 10,
|
||||
"issues": 0,
|
||||
"tier": 4,
|
||||
"detectors": {
|
||||
"subjective_assessment": {
|
||||
"potential": 10,
|
||||
"pass_rate": 0.68,
|
||||
"issues": 0,
|
||||
"weighted_failures": 3.2
|
||||
}
|
||||
}
|
||||
},
|
||||
"Abstraction Fit": {
|
||||
"score": 75.0,
|
||||
"strict": 75.0,
|
||||
"checks": 10,
|
||||
"issues": 0,
|
||||
"tier": 4,
|
||||
"detectors": {
|
||||
"subjective_assessment": {
|
||||
"potential": 10,
|
||||
"pass_rate": 0.75,
|
||||
"issues": 0,
|
||||
"weighted_failures": 2.5
|
||||
}
|
||||
}
|
||||
},
|
||||
"Logic Clarity": {
|
||||
"score": 88.0,
|
||||
"strict": 88.0,
|
||||
"checks": 10,
|
||||
"issues": 0,
|
||||
"tier": 4,
|
||||
"detectors": {
|
||||
"subjective_assessment": {
|
||||
"potential": 10,
|
||||
"pass_rate": 0.88,
|
||||
"issues": 0,
|
||||
"weighted_failures": 1.2
|
||||
}
|
||||
}
|
||||
},
|
||||
"AI Generated Debt": {
|
||||
"score": 72.0,
|
||||
"strict": 72.0,
|
||||
"checks": 10,
|
||||
"issues": 0,
|
||||
"tier": 4,
|
||||
"detectors": {
|
||||
"subjective_assessment": {
|
||||
"potential": 10,
|
||||
"pass_rate": 0.72,
|
||||
"issues": 0,
|
||||
"weighted_failures": 2.8
|
||||
}
|
||||
}
|
||||
},
|
||||
"Type Safety": {
|
||||
"score": 70.0,
|
||||
"strict": 70.0,
|
||||
"checks": 10,
|
||||
"issues": 0,
|
||||
"tier": 4,
|
||||
"detectors": {
|
||||
"subjective_assessment": {
|
||||
"potential": 10,
|
||||
"pass_rate": 0.7,
|
||||
"issues": 0,
|
||||
"weighted_failures": 3.0
|
||||
}
|
||||
}
|
||||
},
|
||||
"Contract Coherence": {
|
||||
"score": 74.0,
|
||||
"strict": 74.0,
|
||||
"checks": 10,
|
||||
"issues": 0,
|
||||
"tier": 4,
|
||||
"detectors": {
|
||||
"subjective_assessment": {
|
||||
"potential": 10,
|
||||
"pass_rate": 0.74,
|
||||
"issues": 0,
|
||||
"weighted_failures": 2.6
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"potentials": {
|
||||
"typescript": {
|
||||
"logs": 83,
|
||||
"unused": 83,
|
||||
"exports": 135,
|
||||
"deprecated": 0,
|
||||
"structural": 83,
|
||||
"flat_dirs": 24,
|
||||
"props": 53,
|
||||
"single_use": 0,
|
||||
"coupling": 0,
|
||||
"cycles": 37,
|
||||
"orphaned": 37,
|
||||
"patterns": 4,
|
||||
"naming": 24,
|
||||
"facade": 37,
|
||||
"test_coverage": 1044,
|
||||
"smells": 83,
|
||||
"react": 11,
|
||||
"security": 83,
|
||||
"subjective_review": 78,
|
||||
"dupes": 130
|
||||
}
|
||||
},
|
||||
"zone_distribution": {
|
||||
"generated": 84,
|
||||
"test": 27,
|
||||
"production": 83,
|
||||
"config": 2
|
||||
},
|
||||
"narrative": {
|
||||
"phase": "middle_grind",
|
||||
"headline": "109 findings open. Test health (24.7%) needs attention \u2014 run `desloppify next` to start.",
|
||||
"dimensions": {
|
||||
"lowest_dimensions": [
|
||||
{
|
||||
"name": "Test health",
|
||||
"strict": 24.7,
|
||||
"issues": 107,
|
||||
"impact": 0.0
|
||||
},
|
||||
{
|
||||
"name": "Error Consistency",
|
||||
"strict": 68.0,
|
||||
"issues": 0,
|
||||
"impact": 0.0,
|
||||
"subjective": true,
|
||||
"impact_description": "re-review to improve"
|
||||
},
|
||||
{
|
||||
"name": "Type Safety",
|
||||
"strict": 70.0,
|
||||
"issues": 0,
|
||||
"impact": 0.0,
|
||||
"subjective": true,
|
||||
"impact_description": "re-review to improve"
|
||||
}
|
||||
],
|
||||
"biggest_gap_dimensions": [
|
||||
{
|
||||
"name": "Test health",
|
||||
"lenient": 45.9,
|
||||
"strict": 24.7,
|
||||
"gap": 21.2,
|
||||
"wontfix_count": 16
|
||||
},
|
||||
{
|
||||
"name": "File health",
|
||||
"lenient": 100.0,
|
||||
"strict": 83.1,
|
||||
"gap": 16.9,
|
||||
"wontfix_count": 20
|
||||
},
|
||||
{
|
||||
"name": "Code quality",
|
||||
"lenient": 100.0,
|
||||
"strict": 92.2,
|
||||
"gap": 7.8,
|
||||
"wontfix_count": 89
|
||||
}
|
||||
],
|
||||
"stagnant_dimensions": [
|
||||
{
|
||||
"name": "File health",
|
||||
"strict": 83.1,
|
||||
"stuck_scans": 5
|
||||
},
|
||||
{
|
||||
"name": "Code quality",
|
||||
"strict": 92.2,
|
||||
"stuck_scans": 5
|
||||
},
|
||||
{
|
||||
"name": "Duplication",
|
||||
"strict": 99.8,
|
||||
"stuck_scans": 5
|
||||
},
|
||||
{
|
||||
"name": "Security",
|
||||
"strict": 100.0,
|
||||
"stuck_scans": 5
|
||||
},
|
||||
{
|
||||
"name": "Naming Quality",
|
||||
"strict": 82.0,
|
||||
"stuck_scans": 5
|
||||
},
|
||||
{
|
||||
"name": "Error Consistency",
|
||||
"strict": 68.0,
|
||||
"stuck_scans": 5
|
||||
},
|
||||
{
|
||||
"name": "Abstraction Fit",
|
||||
"strict": 75.0,
|
||||
"stuck_scans": 5
|
||||
},
|
||||
{
|
||||
"name": "Logic Clarity",
|
||||
"strict": 88.0,
|
||||
"stuck_scans": 5
|
||||
},
|
||||
{
|
||||
"name": "AI Generated Debt",
|
||||
"strict": 72.0,
|
||||
"stuck_scans": 5
|
||||
},
|
||||
{
|
||||
"name": "Type Safety",
|
||||
"strict": 70.0,
|
||||
"stuck_scans": 5
|
||||
},
|
||||
{
|
||||
"name": "Contract Coherence",
|
||||
"strict": 74.0,
|
||||
"stuck_scans": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
"actions": [
|
||||
{
|
||||
"priority": 1,
|
||||
"type": "auto_fix",
|
||||
"detector": "unused",
|
||||
"count": 1,
|
||||
"description": "1 unused findings \u2014 run `desloppify fix unused-imports --dry-run` to preview, then apply",
|
||||
"command": "desloppify fix unused-imports --dry-run",
|
||||
"impact": 0.0,
|
||||
"dimension": "Code quality",
|
||||
"lane": "cleanup"
|
||||
},
|
||||
{
|
||||
"priority": 2,
|
||||
"type": "auto_fix",
|
||||
"detector": "smells",
|
||||
"count": 1,
|
||||
"description": "1 smells findings \u2014 run `desloppify fix dead-useeffect --dry-run` to preview, then apply",
|
||||
"command": "desloppify fix dead-useeffect --dry-run",
|
||||
"impact": 0.0,
|
||||
"dimension": "Code quality",
|
||||
"lane": "cleanup"
|
||||
},
|
||||
{
|
||||
"priority": 3,
|
||||
"type": "refactor",
|
||||
"detector": "test_coverage",
|
||||
"count": 39,
|
||||
"description": "39 test_coverage findings \u2014 add tests for untested production modules \u2014 prioritize by import count",
|
||||
"command": "desloppify show test_coverage --status open",
|
||||
"impact": 0.0,
|
||||
"dimension": "Test health",
|
||||
"lane": "test_coverage"
|
||||
},
|
||||
{
|
||||
"priority": 4,
|
||||
"type": "manual_fix",
|
||||
"detector": "subjective_review",
|
||||
"count": 68,
|
||||
"description": "68 files need design review \u2014 run `desloppify review --prepare` to generate review context",
|
||||
"command": "desloppify review --prepare",
|
||||
"impact": 0.0,
|
||||
"dimension": "Test health",
|
||||
"lane": "refactor"
|
||||
},
|
||||
{
|
||||
"priority": 5,
|
||||
"type": "debt_review",
|
||||
"detector": null,
|
||||
"description": "3.6 pts of wontfix debt \u2014 review stale decisions",
|
||||
"command": "desloppify show --status wontfix",
|
||||
"gap": 3.6,
|
||||
"lane": "debt_review"
|
||||
}
|
||||
],
|
||||
"strategy": {
|
||||
"fixer_leverage": {
|
||||
"auto_fixable_count": 2,
|
||||
"total_count": 109,
|
||||
"coverage": 0.018,
|
||||
"impact_ratio": 0.0,
|
||||
"recommendation": "none"
|
||||
},
|
||||
"lanes": {
|
||||
"cleanup": {
|
||||
"actions": [
|
||||
2,
|
||||
1
|
||||
],
|
||||
"file_count": 2,
|
||||
"total_impact": 0.0,
|
||||
"automation": "full",
|
||||
"run_first": false
|
||||
},
|
||||
"refactor": {
|
||||
"actions": [
|
||||
4
|
||||
],
|
||||
"file_count": 68,
|
||||
"total_impact": 0.0,
|
||||
"automation": "manual",
|
||||
"run_first": false
|
||||
},
|
||||
"test_coverage": {
|
||||
"actions": [
|
||||
3
|
||||
],
|
||||
"file_count": 39,
|
||||
"total_impact": 0.0,
|
||||
"automation": "manual",
|
||||
"run_first": false
|
||||
},
|
||||
"debt_review": {
|
||||
"actions": [
|
||||
5
|
||||
],
|
||||
"file_count": 0,
|
||||
"total_impact": 0.0,
|
||||
"automation": "manual",
|
||||
"run_first": false
|
||||
}
|
||||
},
|
||||
"can_parallelize": true,
|
||||
"hint": "3 independent workstreams, safe to parallelize. Rescan after each phase to verify."
|
||||
},
|
||||
"tools": {
|
||||
"fixers": [
|
||||
{
|
||||
"name": "unused-imports",
|
||||
"detector": "unused",
|
||||
"open_count": 1,
|
||||
"command": "desloppify fix unused-imports --dry-run"
|
||||
},
|
||||
{
|
||||
"name": "unused-vars",
|
||||
"detector": "unused",
|
||||
"open_count": 1,
|
||||
"command": "desloppify fix unused-vars --dry-run"
|
||||
},
|
||||
{
|
||||
"name": "unused-params",
|
||||
"detector": "unused",
|
||||
"open_count": 1,
|
||||
"command": "desloppify fix unused-params --dry-run"
|
||||
},
|
||||
{
|
||||
"name": "dead-useeffect",
|
||||
"detector": "smells",
|
||||
"open_count": 1,
|
||||
"command": "desloppify fix dead-useeffect --dry-run"
|
||||
},
|
||||
{
|
||||
"name": "empty-if-chain",
|
||||
"detector": "smells",
|
||||
"open_count": 1,
|
||||
"command": "desloppify fix empty-if-chain --dry-run"
|
||||
}
|
||||
],
|
||||
"move": {
|
||||
"available": true,
|
||||
"relevant": false,
|
||||
"reason": null,
|
||||
"usage": "desloppify move <source> <dest> [--dry-run]"
|
||||
},
|
||||
"plan": {
|
||||
"command": "desloppify plan",
|
||||
"description": "Generate prioritized markdown cleanup plan"
|
||||
},
|
||||
"badge": {
|
||||
"generated": true,
|
||||
"in_readme": true,
|
||||
"path": "scorecard.png",
|
||||
"recommendation": null
|
||||
}
|
||||
},
|
||||
"debt": {
|
||||
"overall_gap": 3.6,
|
||||
"wontfix_count": 126,
|
||||
"worst_dimension": "Test health",
|
||||
"worst_gap": 21.2,
|
||||
"trend": "growing"
|
||||
},
|
||||
"milestone": null,
|
||||
"primary_action": {
|
||||
"priority": 1,
|
||||
"type": "auto_fix",
|
||||
"detector": "unused",
|
||||
"command": "desloppify fix unused-imports --dry-run",
|
||||
"description": "1 unused findings \u2014 run `desloppify fix unused-imports --dry-run` to preview, then apply",
|
||||
"impact": 0.0,
|
||||
"lane": "cleanup",
|
||||
"count": 1
|
||||
},
|
||||
"why_now": "`unused` is currently the highest-priority unresolved workstream.",
|
||||
"verification_step": {
|
||||
"command": "desloppify scan",
|
||||
"reason": "Re-scan to verify the change and catch cascading findings before reporting progress.",
|
||||
"success_signal": "Open findings drop and strict score direction remains positive."
|
||||
},
|
||||
"risk_flags": [],
|
||||
"strict_target": {
|
||||
"target": 95.0,
|
||||
"current": 73.3,
|
||||
"gap": 21.7,
|
||||
"state": "below",
|
||||
"warning": null
|
||||
},
|
||||
"reminders": [
|
||||
{
|
||||
"type": "report_scores",
|
||||
"message": "ALWAYS share ALL scores with the user: overall, objective, and strict, plus every dimension score (lenient + strict), including subjective dimensions. The goal is to maximize strict scores.",
|
||||
"command": null,
|
||||
"severity": "critical",
|
||||
"priority": 0,
|
||||
"stage": "reporting",
|
||||
"no_decay": true
|
||||
}
|
||||
],
|
||||
"reminder_history": {
|
||||
"report_scores": 59,
|
||||
"auto_fixers_available": 3,
|
||||
"dry_run_first": 3,
|
||||
"zone_classification": 3,
|
||||
"feedback_nudge": 3,
|
||||
"stagnant_nudge": 11,
|
||||
"wontfix_growing": 3
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"review_max_age_days": 30,
|
||||
"holistic_max_age_days": 30,
|
||||
"generate_scorecard": true,
|
||||
"badge_path": "scorecard.png",
|
||||
"exclude": [],
|
||||
"ignore": [],
|
||||
"ignore_metadata": {},
|
||||
"zone_overrides": {},
|
||||
"review_dimensions": [],
|
||||
"review_allow_custom_dimensions": false,
|
||||
"review_custom_dimensions": [],
|
||||
"large_files_threshold": 0,
|
||||
"props_threshold": 0,
|
||||
"finding_noise_budget": 10,
|
||||
"finding_noise_global_budget": 0,
|
||||
"target_strict_score": 95,
|
||||
"languages": {}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user