@vyuhlabs/dxkit 2.4.5 → 2.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1022 -0
- package/README.md +160 -45
- package/dist/analysis-result.d.ts +112 -0
- package/dist/analysis-result.d.ts.map +1 -0
- package/dist/analysis-result.js +52 -0
- package/dist/analysis-result.js.map +1 -0
- package/dist/analyzers/bom/detailed.d.ts.map +1 -1
- package/dist/analyzers/bom/detailed.js +19 -0
- package/dist/analyzers/bom/detailed.js.map +1 -1
- package/dist/analyzers/bom/gather.d.ts +27 -26
- package/dist/analyzers/bom/gather.d.ts.map +1 -1
- package/dist/analyzers/bom/gather.js +26 -87
- package/dist/analyzers/bom/gather.js.map +1 -1
- package/dist/analyzers/bom/index.d.ts +0 -7
- package/dist/analyzers/bom/index.d.ts.map +1 -1
- package/dist/analyzers/bom/index.js +98 -48
- package/dist/analyzers/bom/index.js.map +1 -1
- package/dist/analyzers/bom/types.d.ts +11 -13
- package/dist/analyzers/bom/types.d.ts.map +1 -1
- package/dist/analyzers/cache.d.ts +95 -0
- package/dist/analyzers/cache.d.ts.map +1 -0
- package/dist/analyzers/cache.js +309 -0
- package/dist/analyzers/cache.js.map +1 -0
- package/dist/analyzers/coverage-runner.d.ts +56 -0
- package/dist/analyzers/coverage-runner.d.ts.map +1 -0
- package/dist/analyzers/coverage-runner.js +72 -0
- package/dist/analyzers/coverage-runner.js.map +1 -0
- package/dist/analyzers/dashboard/index.d.ts +24 -0
- package/dist/analyzers/dashboard/index.d.ts.map +1 -0
- package/dist/analyzers/dashboard/index.js +666 -0
- package/dist/analyzers/dashboard/index.js.map +1 -0
- package/dist/analyzers/developer/gather.d.ts.map +1 -1
- package/dist/analyzers/developer/gather.js +205 -37
- package/dist/analyzers/developer/gather.js.map +1 -1
- package/dist/analyzers/developer/index.d.ts +1 -1
- package/dist/analyzers/developer/index.d.ts.map +1 -1
- package/dist/analyzers/developer/index.js +19 -8
- package/dist/analyzers/developer/index.js.map +1 -1
- package/dist/analyzers/dispatcher.d.ts +37 -0
- package/dist/analyzers/dispatcher.d.ts.map +1 -1
- package/dist/analyzers/dispatcher.js +56 -9
- package/dist/analyzers/dispatcher.js.map +1 -1
- package/dist/analyzers/docs/shallow.d.ts +17 -5
- package/dist/analyzers/docs/shallow.d.ts.map +1 -1
- package/dist/analyzers/docs/shallow.js +65 -2
- package/dist/analyzers/docs/shallow.js.map +1 -1
- package/dist/analyzers/dx/shallow.d.ts +17 -5
- package/dist/analyzers/dx/shallow.d.ts.map +1 -1
- package/dist/analyzers/dx/shallow.js +66 -2
- package/dist/analyzers/dx/shallow.js.map +1 -1
- package/dist/analyzers/health/actions.d.ts +1 -1
- package/dist/analyzers/health/actions.d.ts.map +1 -1
- package/dist/analyzers/health/actions.js +27 -9
- package/dist/analyzers/health/actions.js.map +1 -1
- package/dist/analyzers/health/detailed.d.ts +2 -1
- package/dist/analyzers/health/detailed.d.ts.map +1 -1
- package/dist/analyzers/health/detailed.js +11 -7
- package/dist/analyzers/health/detailed.js.map +1 -1
- package/dist/analyzers/health.d.ts +27 -0
- package/dist/analyzers/health.d.ts.map +1 -1
- package/dist/analyzers/health.js +271 -33
- package/dist/analyzers/health.js.map +1 -1
- package/dist/analyzers/licenses/gather.d.ts +35 -8
- package/dist/analyzers/licenses/gather.d.ts.map +1 -1
- package/dist/analyzers/licenses/gather.js +70 -13
- package/dist/analyzers/licenses/gather.js.map +1 -1
- package/dist/analyzers/licenses/index.d.ts +1 -1
- package/dist/analyzers/licenses/index.d.ts.map +1 -1
- package/dist/analyzers/licenses/index.js +52 -11
- package/dist/analyzers/licenses/index.js.map +1 -1
- package/dist/analyzers/licenses/types.d.ts +15 -0
- package/dist/analyzers/licenses/types.d.ts.map +1 -1
- package/dist/analyzers/maintainability/shallow.d.ts +17 -5
- package/dist/analyzers/maintainability/shallow.d.ts.map +1 -1
- package/dist/analyzers/maintainability/shallow.js +80 -2
- package/dist/analyzers/maintainability/shallow.js.map +1 -1
- package/dist/analyzers/quality/detailed.d.ts.map +1 -1
- package/dist/analyzers/quality/detailed.js +4 -6
- package/dist/analyzers/quality/detailed.js.map +1 -1
- package/dist/analyzers/quality/gather.d.ts +1 -14
- package/dist/analyzers/quality/gather.d.ts.map +1 -1
- package/dist/analyzers/quality/gather.js +48 -137
- package/dist/analyzers/quality/gather.js.map +1 -1
- package/dist/analyzers/quality/index.d.ts +9 -2
- package/dist/analyzers/quality/index.d.ts.map +1 -1
- package/dist/analyzers/quality/index.js +189 -117
- package/dist/analyzers/quality/index.js.map +1 -1
- package/dist/analyzers/quality/shallow.d.ts +50 -5
- package/dist/analyzers/quality/shallow.d.ts.map +1 -1
- package/dist/analyzers/quality/shallow.js +155 -2
- package/dist/analyzers/quality/shallow.js.map +1 -1
- package/dist/analyzers/quality/types.d.ts +14 -0
- package/dist/analyzers/quality/types.d.ts.map +1 -1
- package/dist/analyzers/security/actions.d.ts +11 -4
- package/dist/analyzers/security/actions.d.ts.map +1 -1
- package/dist/analyzers/security/actions.js +87 -37
- package/dist/analyzers/security/actions.js.map +1 -1
- package/dist/analyzers/security/aggregator.d.ts +236 -0
- package/dist/analyzers/security/aggregator.d.ts.map +1 -0
- package/dist/analyzers/security/aggregator.js +347 -0
- package/dist/analyzers/security/aggregator.js.map +1 -0
- package/dist/analyzers/security/detailed.d.ts +2 -2
- package/dist/analyzers/security/detailed.d.ts.map +1 -1
- package/dist/analyzers/security/detailed.js +10 -9
- package/dist/analyzers/security/detailed.js.map +1 -1
- package/dist/analyzers/security/gather.d.ts +103 -1
- package/dist/analyzers/security/gather.d.ts.map +1 -1
- package/dist/analyzers/security/gather.js +281 -9
- package/dist/analyzers/security/gather.js.map +1 -1
- package/dist/analyzers/security/index.d.ts +15 -0
- package/dist/analyzers/security/index.d.ts.map +1 -1
- package/dist/analyzers/security/index.js +463 -50
- package/dist/analyzers/security/index.js.map +1 -1
- package/dist/analyzers/security/shallow.d.ts +50 -6
- package/dist/analyzers/security/shallow.d.ts.map +1 -1
- package/dist/analyzers/security/shallow.js +154 -2
- package/dist/analyzers/security/shallow.js.map +1 -1
- package/dist/analyzers/security/types.d.ts +51 -0
- package/dist/analyzers/security/types.d.ts.map +1 -1
- package/dist/analyzers/tests/detailed.d.ts.map +1 -1
- package/dist/analyzers/tests/detailed.js +2 -3
- package/dist/analyzers/tests/detailed.js.map +1 -1
- package/dist/analyzers/tests/gather.d.ts +2 -1
- package/dist/analyzers/tests/gather.d.ts.map +1 -1
- package/dist/analyzers/tests/gather.js +98 -69
- package/dist/analyzers/tests/gather.js.map +1 -1
- package/dist/analyzers/tests/index.d.ts +11 -2
- package/dist/analyzers/tests/index.d.ts.map +1 -1
- package/dist/analyzers/tests/index.js +85 -18
- package/dist/analyzers/tests/index.js.map +1 -1
- package/dist/analyzers/tests/shallow.d.ts +19 -5
- package/dist/analyzers/tests/shallow.d.ts.map +1 -1
- package/dist/analyzers/tests/shallow.js +89 -2
- package/dist/analyzers/tests/shallow.js.map +1 -1
- package/dist/analyzers/tests/types.d.ts +41 -1
- package/dist/analyzers/tests/types.d.ts.map +1 -1
- package/dist/analyzers/tools/autogen-header.d.ts +8 -0
- package/dist/analyzers/tools/autogen-header.d.ts.map +1 -0
- package/dist/analyzers/tools/autogen-header.js +107 -0
- package/dist/analyzers/tools/autogen-header.js.map +1 -0
- package/dist/analyzers/tools/cloc.d.ts.map +1 -1
- package/dist/analyzers/tools/cloc.js +36 -5
- package/dist/analyzers/tools/cloc.js.map +1 -1
- package/dist/analyzers/tools/coverage.d.ts +1 -1
- package/dist/analyzers/tools/coverage.d.ts.map +1 -1
- package/dist/analyzers/tools/coverage.js.map +1 -1
- package/dist/analyzers/tools/debug-statements.d.ts +17 -0
- package/dist/analyzers/tools/debug-statements.d.ts.map +1 -0
- package/dist/analyzers/tools/debug-statements.js +58 -0
- package/dist/analyzers/tools/debug-statements.js.map +1 -0
- package/dist/analyzers/tools/default-exclusions.gitignore +28 -0
- package/dist/analyzers/tools/exclusions.d.ts +33 -6
- package/dist/analyzers/tools/exclusions.d.ts.map +1 -1
- package/dist/analyzers/tools/exclusions.js +95 -26
- package/dist/analyzers/tools/exclusions.js.map +1 -1
- package/dist/analyzers/tools/generic.d.ts +17 -2
- package/dist/analyzers/tools/generic.d.ts.map +1 -1
- package/dist/analyzers/tools/generic.js +206 -109
- package/dist/analyzers/tools/generic.js.map +1 -1
- package/dist/analyzers/tools/gitleaks.d.ts.map +1 -1
- package/dist/analyzers/tools/gitleaks.js +48 -1
- package/dist/analyzers/tools/gitleaks.js.map +1 -1
- package/dist/analyzers/tools/graphify.d.ts +30 -2
- package/dist/analyzers/tools/graphify.d.ts.map +1 -1
- package/dist/analyzers/tools/graphify.js +131 -15
- package/dist/analyzers/tools/graphify.js.map +1 -1
- package/dist/analyzers/tools/jscpd.d.ts +12 -2
- package/dist/analyzers/tools/jscpd.d.ts.map +1 -1
- package/dist/analyzers/tools/jscpd.js +129 -6
- package/dist/analyzers/tools/jscpd.js.map +1 -1
- package/dist/analyzers/tools/minified-detection.d.ts +9 -0
- package/dist/analyzers/tools/minified-detection.d.ts.map +1 -0
- package/dist/analyzers/tools/minified-detection.js +147 -0
- package/dist/analyzers/tools/minified-detection.js.map +1 -0
- package/dist/analyzers/tools/nuget-package-reference.d.ts +131 -0
- package/dist/analyzers/tools/nuget-package-reference.d.ts.map +1 -0
- package/dist/analyzers/tools/nuget-package-reference.js +175 -0
- package/dist/analyzers/tools/nuget-package-reference.js.map +1 -0
- package/dist/analyzers/tools/osv-scanner-deps.d.ts +48 -0
- package/dist/analyzers/tools/osv-scanner-deps.d.ts.map +1 -0
- package/dist/analyzers/tools/{osv-scanner-maven.js → osv-scanner-deps.js} +78 -46
- package/dist/analyzers/tools/osv-scanner-deps.js.map +1 -0
- package/dist/analyzers/tools/osv.d.ts +36 -0
- package/dist/analyzers/tools/osv.d.ts.map +1 -1
- package/dist/analyzers/tools/osv.js +26 -0
- package/dist/analyzers/tools/osv.js.map +1 -1
- package/dist/analyzers/tools/parallel.d.ts +1 -1
- package/dist/analyzers/tools/parallel.d.ts.map +1 -1
- package/dist/analyzers/tools/parallel.js +2 -2
- package/dist/analyzers/tools/parallel.js.map +1 -1
- package/dist/analyzers/tools/risk-score.d.ts +7 -0
- package/dist/analyzers/tools/risk-score.d.ts.map +1 -1
- package/dist/analyzers/tools/risk-score.js +9 -2
- package/dist/analyzers/tools/risk-score.js.map +1 -1
- package/dist/analyzers/tools/run-tests-helper.d.ts +43 -0
- package/dist/analyzers/tools/run-tests-helper.d.ts.map +1 -0
- package/dist/analyzers/tools/run-tests-helper.js +156 -0
- package/dist/analyzers/tools/run-tests-helper.js.map +1 -0
- package/dist/analyzers/tools/runner.d.ts.map +1 -1
- package/dist/analyzers/tools/runner.js +75 -12
- package/dist/analyzers/tools/runner.js.map +1 -1
- package/dist/analyzers/tools/semgrep.d.ts +39 -2
- package/dist/analyzers/tools/semgrep.d.ts.map +1 -1
- package/dist/analyzers/tools/semgrep.js +131 -9
- package/dist/analyzers/tools/semgrep.js.map +1 -1
- package/dist/analyzers/tools/timing.d.ts +17 -3
- package/dist/analyzers/tools/timing.d.ts.map +1 -1
- package/dist/analyzers/tools/timing.js +36 -14
- package/dist/analyzers/tools/timing.js.map +1 -1
- package/dist/analyzers/tools/tool-registry.d.ts +10 -0
- package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
- package/dist/analyzers/tools/tool-registry.js +120 -1
- package/dist/analyzers/tools/tool-registry.js.map +1 -1
- package/dist/analyzers/tools/tools-unavailable-prose.d.ts +18 -0
- package/dist/analyzers/tools/tools-unavailable-prose.d.ts.map +1 -0
- package/dist/analyzers/tools/tools-unavailable-prose.js +69 -0
- package/dist/analyzers/tools/tools-unavailable-prose.js.map +1 -0
- package/dist/analyzers/tools/upgrade-plan-resolver.d.ts.map +1 -1
- package/dist/analyzers/tools/upgrade-plan-resolver.js +7 -0
- package/dist/analyzers/tools/upgrade-plan-resolver.js.map +1 -1
- package/dist/analyzers/tools/vendored-advisor.d.ts +43 -0
- package/dist/analyzers/tools/vendored-advisor.d.ts.map +1 -0
- package/dist/analyzers/tools/vendored-advisor.js +107 -0
- package/dist/analyzers/tools/vendored-advisor.js.map +1 -0
- package/dist/analyzers/tools/walk-paths.d.ts +78 -0
- package/dist/analyzers/tools/walk-paths.d.ts.map +1 -0
- package/dist/analyzers/tools/walk-paths.js +150 -0
- package/dist/analyzers/tools/walk-paths.js.map +1 -0
- package/dist/analyzers/tools/walk-source-files.d.ts +70 -0
- package/dist/analyzers/tools/walk-source-files.d.ts.map +1 -0
- package/dist/analyzers/tools/walk-source-files.js +369 -0
- package/dist/analyzers/tools/walk-source-files.js.map +1 -0
- package/dist/analyzers/types.d.ts +204 -4
- package/dist/analyzers/types.d.ts.map +1 -1
- package/dist/analyzers/xlsx/bom.d.ts.map +1 -1
- package/dist/analyzers/xlsx/bom.js +8 -1
- package/dist/analyzers/xlsx/bom.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +557 -189
- package/dist/cli.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +24 -7
- package/dist/detect.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +103 -53
- package/dist/doctor.js.map +1 -1
- package/dist/languages/capabilities/provider.d.ts +130 -1
- package/dist/languages/capabilities/provider.d.ts.map +1 -1
- package/dist/languages/capabilities/types.d.ts +68 -7
- package/dist/languages/capabilities/types.d.ts.map +1 -1
- package/dist/languages/csharp.d.ts +15 -1
- package/dist/languages/csharp.d.ts.map +1 -1
- package/dist/languages/csharp.js +624 -146
- package/dist/languages/csharp.js.map +1 -1
- package/dist/languages/go.d.ts.map +1 -1
- package/dist/languages/go.js +89 -11
- package/dist/languages/go.js.map +1 -1
- package/dist/languages/index.d.ts +131 -2
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +208 -0
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/java.d.ts.map +1 -1
- package/dist/languages/java.js +121 -32
- package/dist/languages/java.js.map +1 -1
- package/dist/languages/kotlin.d.ts.map +1 -1
- package/dist/languages/kotlin.js +140 -32
- package/dist/languages/kotlin.js.map +1 -1
- package/dist/languages/python.d.ts.map +1 -1
- package/dist/languages/python.js +149 -44
- package/dist/languages/python.js.map +1 -1
- package/dist/languages/ruby.d.ts +115 -0
- package/dist/languages/ruby.d.ts.map +1 -0
- package/dist/languages/ruby.js +665 -0
- package/dist/languages/ruby.js.map +1 -0
- package/dist/languages/rust.d.ts.map +1 -1
- package/dist/languages/rust.js +103 -16
- package/dist/languages/rust.js.map +1 -1
- package/dist/languages/types.d.ts +228 -5
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript.d.ts.map +1 -1
- package/dist/languages/typescript.js +201 -14
- package/dist/languages/typescript.js.map +1 -1
- package/dist/scoring/dimensions/documentation.d.ts +53 -0
- package/dist/scoring/dimensions/documentation.d.ts.map +1 -0
- package/dist/scoring/dimensions/documentation.js +106 -0
- package/dist/scoring/dimensions/documentation.js.map +1 -0
- package/dist/scoring/dimensions/dx.d.ts +53 -0
- package/dist/scoring/dimensions/dx.d.ts.map +1 -0
- package/dist/scoring/dimensions/dx.js +105 -0
- package/dist/scoring/dimensions/dx.js.map +1 -0
- package/dist/scoring/dimensions/maintainability.d.ts +53 -0
- package/dist/scoring/dimensions/maintainability.d.ts.map +1 -0
- package/dist/scoring/dimensions/maintainability.js +101 -0
- package/dist/scoring/dimensions/maintainability.js.map +1 -0
- package/dist/scoring/dimensions/quality.d.ts +108 -0
- package/dist/scoring/dimensions/quality.d.ts.map +1 -0
- package/dist/scoring/dimensions/quality.js +174 -0
- package/dist/scoring/dimensions/quality.js.map +1 -0
- package/dist/scoring/dimensions/security.d.ts +84 -0
- package/dist/scoring/dimensions/security.d.ts.map +1 -0
- package/dist/scoring/dimensions/security.js +135 -0
- package/dist/scoring/dimensions/security.js.map +1 -0
- package/dist/scoring/dimensions/testing.d.ts +56 -0
- package/dist/scoring/dimensions/testing.d.ts.map +1 -0
- package/dist/scoring/dimensions/testing.js +98 -0
- package/dist/scoring/dimensions/testing.js.map +1 -0
- package/dist/scoring/evaluator.d.ts +27 -0
- package/dist/scoring/evaluator.d.ts.map +1 -0
- package/dist/scoring/evaluator.js +124 -0
- package/dist/scoring/evaluator.js.map +1 -0
- package/dist/scoring/format.d.ts +34 -0
- package/dist/scoring/format.d.ts.map +1 -0
- package/dist/scoring/format.js +63 -0
- package/dist/scoring/format.js.map +1 -0
- package/dist/scoring/index.d.ts +37 -0
- package/dist/scoring/index.d.ts.map +1 -0
- package/dist/scoring/index.js +57 -0
- package/dist/scoring/index.js.map +1 -0
- package/dist/scoring/overall.d.ts +54 -0
- package/dist/scoring/overall.d.ts.map +1 -0
- package/dist/scoring/overall.js +76 -0
- package/dist/scoring/overall.js.map +1 -0
- package/dist/scoring/result.d.ts +111 -0
- package/dist/scoring/result.d.ts.map +1 -0
- package/dist/scoring/result.js +14 -0
- package/dist/scoring/result.js.map +1 -0
- package/dist/scoring/spec.d.ts +76 -0
- package/dist/scoring/spec.d.ts.map +1 -0
- package/dist/scoring/spec.js +22 -0
- package/dist/scoring/spec.js.map +1 -0
- package/dist/scoring/thresholds.d.ts +56 -0
- package/dist/scoring/thresholds.d.ts.map +1 -0
- package/dist/scoring/thresholds.js +75 -0
- package/dist/scoring/thresholds.js.map +1 -0
- package/dist/tools-cli.d.ts.map +1 -1
- package/dist/tools-cli.js +21 -2
- package/dist/tools-cli.js.map +1 -1
- package/dist/types.d.ts +17 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/.claude/commands/dashboard.md +17 -9
- package/templates/.claude/rules/ruby.md +11 -0
- package/templates/configs/ruby/README.md +6 -0
- package/dist/analyzers/scoring.d.ts +0 -49
- package/dist/analyzers/scoring.d.ts.map +0 -1
- package/dist/analyzers/scoring.js +0 -422
- package/dist/analyzers/scoring.js.map +0 -1
- package/dist/analyzers/security/scoring.d.ts +0 -29
- package/dist/analyzers/security/scoring.d.ts.map +0 -1
- package/dist/analyzers/security/scoring.js +0 -40
- package/dist/analyzers/security/scoring.js.map +0 -1
- package/dist/analyzers/tools/osv-scanner-maven.d.ts +0 -42
- package/dist/analyzers/tools/osv-scanner-maven.d.ts.map +0 -1
- package/dist/analyzers/tools/osv-scanner-maven.js.map +0 -1
|
@@ -33,75 +33,67 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
36
|
+
exports.qualityMetricsToScoreInput = qualityMetricsToScoreInput;
|
|
37
37
|
exports.analyzeQuality = analyzeQuality;
|
|
38
38
|
exports.formatQualityReport = formatQualityReport;
|
|
39
39
|
/**
|
|
40
40
|
* Quality analyzer — public API.
|
|
41
41
|
*/
|
|
42
42
|
const path = __importStar(require("path"));
|
|
43
|
-
const
|
|
44
|
-
const
|
|
43
|
+
const cache_1 = require("../cache");
|
|
44
|
+
const health_1 = require("../health");
|
|
45
45
|
const timing_1 = require("../tools/timing");
|
|
46
46
|
const gather_1 = require("./gather");
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (m.consoleLogCount > 500)
|
|
80
|
-
score -= 15;
|
|
81
|
-
else if (m.consoleLogCount > 100)
|
|
82
|
-
score -= 10;
|
|
83
|
-
else if (m.consoleLogCount > 20)
|
|
84
|
-
score -= 5;
|
|
85
|
-
// Lint errors
|
|
86
|
-
if (m.lintErrors > 50)
|
|
87
|
-
score -= 10;
|
|
88
|
-
else if (m.lintErrors > 10)
|
|
89
|
-
score -= 5;
|
|
90
|
-
// Stale files committed to git
|
|
91
|
-
if (m.staleFiles.length > 3)
|
|
92
|
-
score -= 5;
|
|
93
|
-
else if (m.staleFiles.length > 0)
|
|
94
|
-
score -= 2;
|
|
95
|
-
// Mixed JS/TS in source directories
|
|
96
|
-
if (m.mixedLanguages)
|
|
97
|
-
score -= 5;
|
|
98
|
-
return Math.max(0, Math.min(100, score));
|
|
47
|
+
const scoring_1 = require("../../scoring");
|
|
48
|
+
const tools_unavailable_prose_1 = require("../tools/tools-unavailable-prose");
|
|
49
|
+
/**
|
|
50
|
+
* Adapter from the standalone Quality report's `QualityMetrics` into
|
|
51
|
+
* the canonical `QualityScoreInput` partition. `m.sourceFiles` carries
|
|
52
|
+
* the canonical repo source-file count from the cached health metrics
|
|
53
|
+
* — the same denominator the health-side Code Quality dimension uses
|
|
54
|
+
* — so both surfaces' density penalties land on identical values.
|
|
55
|
+
*/
|
|
56
|
+
function qualityMetricsToScoreInput(m) {
|
|
57
|
+
return {
|
|
58
|
+
sourceFiles: m.sourceFiles,
|
|
59
|
+
lintErrors: m.lintErrors,
|
|
60
|
+
lintAvailable: m.lintTool !== null,
|
|
61
|
+
consoleLogCount: m.consoleLogCount,
|
|
62
|
+
todoCount: m.todoCount,
|
|
63
|
+
fixmeCount: m.fixmeCount,
|
|
64
|
+
hackCount: m.hackCount,
|
|
65
|
+
staleFiles: m.staleFiles.length,
|
|
66
|
+
mixedLanguages: m.mixedLanguages,
|
|
67
|
+
filesOver500Lines: m.filesOver500Lines,
|
|
68
|
+
largestFileLines: m.largestFileLines,
|
|
69
|
+
anyTypeCount: m.anyTypeCount,
|
|
70
|
+
typeErrors: m.typeErrors,
|
|
71
|
+
duplicationPercentage: m.duplication?.percentage ?? null,
|
|
72
|
+
duplicationAvailable: m.duplication !== null,
|
|
73
|
+
maxFunctionsInFile: m.maxFunctionsInFile,
|
|
74
|
+
deadImportCount: m.deadImportCount,
|
|
75
|
+
orphanModuleCount: m.orphanModuleCount,
|
|
76
|
+
structuralAvailable: m.maxFunctionsInFile !== null,
|
|
77
|
+
commentRatio: m.commentRatio,
|
|
78
|
+
};
|
|
99
79
|
}
|
|
100
80
|
async function analyzeQuality(repoPath, options = {}) {
|
|
101
81
|
const verbose = !!options.verbose;
|
|
102
|
-
const stack = (0, detect_1.detect)(repoPath);
|
|
103
82
|
const toolsUsed = ['grep', 'find'];
|
|
104
83
|
const toolsUnavailable = [];
|
|
84
|
+
// Single canonical analysis envelope shared with `health` and the
|
|
85
|
+
// other migrated consumers. Pulling provenance + sourceFiles count
|
|
86
|
+
// from the cache means the density denominator the standalone Quality
|
|
87
|
+
// score uses is the SAME denominator the health-side Code Quality
|
|
88
|
+
// dimension uses — so the two surfaces converge on the same number.
|
|
89
|
+
// Closes the dual-Quality-formula drift class structurally.
|
|
90
|
+
const cacheResult = await (0, cache_1.readOrBuildAnalysisResult)({
|
|
91
|
+
cwd: repoPath,
|
|
92
|
+
build: (cwd) => (0, health_1.gatherAnalysisResultBody)(cwd, { verbose }),
|
|
93
|
+
});
|
|
94
|
+
const { stack } = cacheResult;
|
|
95
|
+
const cm = cacheResult.metrics;
|
|
96
|
+
const sourceFiles = cm.sourceFiles;
|
|
105
97
|
// 1. Duplication (jscpd) — dispatcher-driven via DUPLICATION capability.
|
|
106
98
|
const dup = await (0, timing_1.timedAsync)('jscpd', verbose, () => (0, gather_1.gatherDuplication)(repoPath));
|
|
107
99
|
if (dup.toolUsed)
|
|
@@ -114,26 +106,63 @@ async function analyzeQuality(repoPath, options = {}) {
|
|
|
114
106
|
toolsUsed.push(structure.toolUsed);
|
|
115
107
|
else
|
|
116
108
|
toolsUnavailable.push('graphify');
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
|
|
109
|
+
// Hygiene markers + comment ratio + counts come from the cached
|
|
110
|
+
// HealthMetrics — the cache builder runs those gathers once per
|
|
111
|
+
// (cwd, SHA) so the values match the health-side Code Quality
|
|
112
|
+
// dimension exactly. The local gather is still called here, but
|
|
113
|
+
// ONLY for the staleFiles file list (rendered into the standalone
|
|
114
|
+
// Quality markdown). The score uses the cached count; the
|
|
115
|
+
// markdown uses this list. They come from the same git ls-files
|
|
116
|
+
// probe so they're consistent by construction.
|
|
117
|
+
const hygiene = (0, timing_1.timed)('hygiene (grep, list-only)', verbose, () => (0, gather_1.gatherHygieneMarkers)(repoPath));
|
|
118
|
+
// Top hygiene offenders — only when --detailed (extra grep pass).
|
|
119
|
+
// Lives standalone-side because the offender lists aren't part of
|
|
120
|
+
// the cached envelope yet; cheap grep on hit, only run on demand.
|
|
126
121
|
const topOffenders = options.detailed
|
|
127
122
|
? (0, timing_1.timed)('hygiene top offenders', verbose, () => (0, gather_1.gatherHygieneTopOffenders)(repoPath))
|
|
128
123
|
: { topConsoleFiles: undefined, topTodoFiles: undefined };
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
124
|
+
// Lint (eslint/ruff). Reads counts + the augmented "(not run: <packs>)"
|
|
125
|
+
// tool label off the canonical cached envelope. The cache builder
|
|
126
|
+
// already calls gatherWithProvenance for LINT and bakes the
|
|
127
|
+
// skipped-pack provenance into envelope.tool, so the standalone
|
|
128
|
+
// Quality report renders the SAME label health does — closes the
|
|
129
|
+
// cross-process drift class for lint.
|
|
130
|
+
//
|
|
131
|
+
// When the cache has NO lint envelope but the active language packs
|
|
132
|
+
// declare a lint capability (i.e. eslint/ruff was expected to run
|
|
133
|
+
// but every provider returned null), surface an explicit notice.
|
|
134
|
+
// Otherwise the renderer's "0 errors, 0 warnings" reads as "clean"
|
|
135
|
+
// when reality is "lint didn't run." Same honesty pattern the
|
|
136
|
+
// licenses degraded-banner uses.
|
|
137
|
+
const lintCounts = cacheResult.capabilities.lint?.counts;
|
|
138
|
+
const lintErrors = (lintCounts?.critical ?? 0) + (lintCounts?.high ?? 0);
|
|
139
|
+
const lintWarnings = (lintCounts?.medium ?? 0) + (lintCounts?.low ?? 0);
|
|
140
|
+
const lintFromCache = cacheResult.capabilities.lint?.tool ?? null;
|
|
141
|
+
const lintAvail = cacheResult.capabilities.lintAvailability;
|
|
142
|
+
// When the cache says lint was attempted but every provider
|
|
143
|
+
// returned null, surface the honesty notice in lintTool so the
|
|
144
|
+
// renderer's "0 errors, 0 warnings" cell reads with explanation
|
|
145
|
+
// instead of looking like a clean result. The actually-ran tool
|
|
146
|
+
// name (or null) flows into toolsUsed separately so the footer
|
|
147
|
+
// stays accurate.
|
|
148
|
+
const lintTool = lintFromCache ??
|
|
149
|
+
(lintAvail && !lintAvail.available ? `not run — ${lintAvail.unavailableReason}` : null);
|
|
150
|
+
if (lintFromCache)
|
|
151
|
+
toolsUsed.push(lintFromCache);
|
|
152
|
+
if (cm.commentRatio !== null)
|
|
153
|
+
toolsUsed.push('cloc');
|
|
133
154
|
const metrics = {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
155
|
+
sourceFiles,
|
|
156
|
+
// File-size + type signals from the cached health metrics so the
|
|
157
|
+
// standalone slop score sees the same penalties the health-side
|
|
158
|
+
// dimension sees.
|
|
159
|
+
filesOver500Lines: cm.filesOver500Lines,
|
|
160
|
+
largestFileLines: cm.largestFileLines,
|
|
161
|
+
anyTypeCount: cm.anyTypeCount,
|
|
162
|
+
typeErrors: cm.typeErrors,
|
|
163
|
+
lintErrors,
|
|
164
|
+
lintWarnings,
|
|
165
|
+
lintTool,
|
|
137
166
|
duplication: dup.stats,
|
|
138
167
|
maxFunctionsInFile: structure.maxFunctionsInFile,
|
|
139
168
|
maxFunctionsFilePath: structure.maxFunctionsFilePath,
|
|
@@ -142,27 +171,37 @@ async function analyzeQuality(repoPath, options = {}) {
|
|
|
142
171
|
functionCount: structure.functionCount,
|
|
143
172
|
deadImportCount: structure.deadImportCount,
|
|
144
173
|
orphanModuleCount: structure.orphanModuleCount,
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
174
|
+
// Hygiene + mixed + comment ratio + console-density signals
|
|
175
|
+
// sourced from the canonical health metrics so both surfaces
|
|
176
|
+
// score from identical inputs. staleFiles list comes from the
|
|
177
|
+
// local gather (markdown render needs the file names); its
|
|
178
|
+
// length matches cm.staleFiles by construction since both
|
|
179
|
+
// gathers run the same git ls-files probe.
|
|
180
|
+
todoCount: cm.todoCount,
|
|
181
|
+
fixmeCount: cm.fixmeCount,
|
|
182
|
+
hackCount: cm.hackCount,
|
|
150
183
|
staleFiles: hygiene.staleFiles,
|
|
151
|
-
mixedLanguages:
|
|
184
|
+
mixedLanguages: cm.mixedLanguages,
|
|
185
|
+
consoleLogCount: cm.consoleLogCount,
|
|
186
|
+
commentRatio: cm.commentRatio,
|
|
152
187
|
slopScore: 0, // computed below
|
|
153
188
|
topConsoleFiles: topOffenders.topConsoleFiles,
|
|
154
189
|
topTodoFiles: topOffenders.topTodoFiles,
|
|
155
190
|
};
|
|
156
|
-
metrics.slopScore =
|
|
191
|
+
metrics.slopScore = (0, scoring_1.evaluateSpec)(scoring_1.QUALITY_SCORING_SPEC, qualityMetricsToScoreInput(metrics)).score;
|
|
192
|
+
const activeLanguages = Object.entries(stack.languages)
|
|
193
|
+
.filter(([, active]) => active)
|
|
194
|
+
.map(([id]) => id);
|
|
157
195
|
return {
|
|
158
|
-
repo: stack.projectName || path.basename(
|
|
159
|
-
analyzedAt:
|
|
160
|
-
commitSha:
|
|
161
|
-
branch:
|
|
196
|
+
repo: stack.projectName || path.basename(cacheResult.cwd),
|
|
197
|
+
analyzedAt: cacheResult.builtAt,
|
|
198
|
+
commitSha: cacheResult.commitSha,
|
|
199
|
+
branch: cacheResult.branch,
|
|
162
200
|
metrics,
|
|
163
201
|
slopScore: metrics.slopScore,
|
|
164
202
|
toolsUsed,
|
|
165
203
|
toolsUnavailable,
|
|
204
|
+
activeLanguages,
|
|
166
205
|
};
|
|
167
206
|
}
|
|
168
207
|
function formatQualityReport(report, elapsed) {
|
|
@@ -183,24 +222,39 @@ function formatQualityReport(report, elapsed) {
|
|
|
183
222
|
L.push('| Metric | Value |');
|
|
184
223
|
L.push('|--------|-------|');
|
|
185
224
|
L.push(`| Slop Score | **${report.slopScore}/100** |`);
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
225
|
+
// Always render every row — silent omission on tool-unavailable reads
|
|
226
|
+
// as "this signal is fine" when reality is "we couldn't measure it."
|
|
227
|
+
// The unavailable-row text names the underlying tool so the customer
|
|
228
|
+
// knows exactly what to install to populate the metric.
|
|
229
|
+
L.push(`| Duplication | ${m.duplication
|
|
230
|
+
? `${m.duplication.percentage}% (${m.duplication.cloneCount} clones, ${m.duplication.duplicatedLines} lines)`
|
|
231
|
+
: 'unavailable — install `jscpd`'} |`);
|
|
232
|
+
L.push(`| Comment Ratio | ${m.commentRatio !== null
|
|
233
|
+
? `${(m.commentRatio * 100).toFixed(1)}%`
|
|
234
|
+
: 'unavailable — install `cloc`'} |`);
|
|
235
|
+
// Split the lint label into "Lint Errors" (counts + tool that ran) and
|
|
236
|
+
// "Lint Coverage" (which packs WERE attempted but didn't produce
|
|
237
|
+
// findings). Pre-split, multi-pack repos where one provider returned
|
|
238
|
+
// null silently rendered the parenthetical "(ruff (not run: typescript))"
|
|
239
|
+
// — accurate but easy for customers to miss. Promoting the not-run
|
|
240
|
+
// packs to their own visible row makes the coverage gap legible.
|
|
241
|
+
const notRunMatch = m.lintTool ? /\(not run: ([^)]+)\)/.exec(m.lintTool) : null;
|
|
242
|
+
const lintToolLabel = m.lintTool
|
|
243
|
+
? notRunMatch
|
|
244
|
+
? m.lintTool.replace(/\s*\(not run: [^)]+\)/, '').trim()
|
|
245
|
+
: m.lintTool
|
|
246
|
+
: null;
|
|
247
|
+
L.push(`| Lint Errors | ${m.lintErrors} errors, ${m.lintWarnings} warnings${lintToolLabel ? ' (' + lintToolLabel + ')' : ''} |`);
|
|
248
|
+
if (notRunMatch) {
|
|
249
|
+
L.push(`| ⚠ Lint coverage gap | not run on: ${notRunMatch[1]} — configure the linter (e.g. add \`eslint.config.js\`) to enable |`);
|
|
191
250
|
}
|
|
192
|
-
L.push(`| Lint Errors | ${m.lintErrors} errors, ${m.lintWarnings} warnings${m.lintTool ? ' (' + m.lintTool + ')' : ''} |`);
|
|
193
251
|
L.push(`| TODO/FIXME/HACK | ${m.todoCount} / ${m.fixmeCount} / ${m.hackCount} |`);
|
|
194
252
|
L.push(`| Console Statements | ${m.consoleLogCount} |`);
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
if (m.orphanModuleCount !== null) {
|
|
202
|
-
L.push(`| Orphan Modules | ${m.orphanModuleCount} |`);
|
|
203
|
-
}
|
|
253
|
+
L.push(`| Functions | ${m.functionCount !== null
|
|
254
|
+
? `${m.functionCount} total, max ${m.maxFunctionsInFile} in one file`
|
|
255
|
+
: 'unavailable — install `graphify`'} |`);
|
|
256
|
+
L.push(`| Dead Imports | ${m.deadImportCount !== null ? m.deadImportCount : 'unavailable — install `graphify`'} |`);
|
|
257
|
+
L.push(`| Orphan Modules | ${m.orphanModuleCount !== null ? m.orphanModuleCount : 'unavailable — install `graphify`'} |`);
|
|
204
258
|
if (m.avgCohesion !== null) {
|
|
205
259
|
L.push(`| Avg Cohesion | ${m.avgCohesion.toFixed(2)} |`);
|
|
206
260
|
}
|
|
@@ -213,10 +267,13 @@ function formatQualityReport(report, elapsed) {
|
|
|
213
267
|
L.push('');
|
|
214
268
|
L.push('---');
|
|
215
269
|
L.push('');
|
|
216
|
-
// Duplication details
|
|
270
|
+
// Duplication details — always render the section so the customer
|
|
271
|
+
// sees an explicit "unavailable" message rather than a missing H2
|
|
272
|
+
// (which reads as "no duplication" when the real state is "we
|
|
273
|
+
// couldn't measure").
|
|
274
|
+
L.push('## Duplication');
|
|
275
|
+
L.push('');
|
|
217
276
|
if (m.duplication) {
|
|
218
|
-
L.push('## Duplication');
|
|
219
|
-
L.push('');
|
|
220
277
|
L.push(`**${m.duplication.percentage}%** of code is duplicated across ${m.duplication.cloneCount} clones (${m.duplication.duplicatedLines} lines out of ${m.duplication.totalLines}).`);
|
|
221
278
|
L.push('');
|
|
222
279
|
if (m.duplication.percentage > 15) {
|
|
@@ -228,14 +285,19 @@ function formatQualityReport(report, elapsed) {
|
|
|
228
285
|
else {
|
|
229
286
|
L.push('> Duplication is within acceptable range.');
|
|
230
287
|
}
|
|
231
|
-
L.push('');
|
|
232
|
-
L.push('---');
|
|
233
|
-
L.push('');
|
|
234
288
|
}
|
|
235
|
-
|
|
289
|
+
else {
|
|
290
|
+
L.push('> ⚠ **Duplication unavailable.** The duplicate-code detector (`jscpd`) did not run on this repository — its output is needed to populate this section. Install jscpd (`npm i -g jscpd`) and re-run to enable.');
|
|
291
|
+
}
|
|
292
|
+
L.push('');
|
|
293
|
+
L.push('---');
|
|
294
|
+
L.push('');
|
|
295
|
+
// Structural complexity — same always-render discipline as Duplication.
|
|
296
|
+
// Graphify produces functionCount / densest file / cohesion / orphan
|
|
297
|
+
// modules / dead imports; its absence is signaled by null fields.
|
|
298
|
+
L.push('## Structural Complexity');
|
|
299
|
+
L.push('');
|
|
236
300
|
if (m.functionCount !== null) {
|
|
237
|
-
L.push('## Structural Complexity');
|
|
238
|
-
L.push('');
|
|
239
301
|
L.push(`- **${m.functionCount}** functions across ${m.communityCount ?? '?'} architectural communities`);
|
|
240
302
|
L.push(`- **Densest file:** ${m.maxFunctionsFilePath ?? 'unknown'} (${m.maxFunctionsInFile} functions)`);
|
|
241
303
|
L.push(`- **Avg cohesion:** ${m.avgCohesion?.toFixed(2) ?? 'unknown'}`);
|
|
@@ -243,12 +305,24 @@ function formatQualityReport(report, elapsed) {
|
|
|
243
305
|
L.push(`- **Dead imports:** ${m.deadImportCount}`);
|
|
244
306
|
}
|
|
245
307
|
if (m.orphanModuleCount !== null && m.orphanModuleCount > 0) {
|
|
246
|
-
|
|
308
|
+
// C# uses namespace-based name resolution; graphify follows
|
|
309
|
+
// file-based imports only, so every .cs file reads as orphaned
|
|
310
|
+
// to it (the using-directive graph isn't traversed). Label the
|
|
311
|
+
// count as informational on csharp-active repos so the reader
|
|
312
|
+
// doesn't take 58K orphan modules as an actionable defect.
|
|
313
|
+
const csharpActive = report.activeLanguages?.includes('csharp');
|
|
314
|
+
const qualifier = csharpActive
|
|
315
|
+
? " (informational — graphify can't follow C# `using` directives across assemblies)"
|
|
316
|
+
: ' (no inbound imports)';
|
|
317
|
+
L.push(`- **Orphan modules:** ${m.orphanModuleCount}${qualifier}`);
|
|
247
318
|
}
|
|
248
|
-
L.push('');
|
|
249
|
-
L.push('---');
|
|
250
|
-
L.push('');
|
|
251
319
|
}
|
|
320
|
+
else {
|
|
321
|
+
L.push('> ⚠ **Structural complexity unavailable.** The AST-graph builder (`graphify`) did not run on this repository — its output drives function counts, densest-file detection, architectural cohesion, dead imports, and orphan modules. Install graphify (`pip install graphifyy`) and re-run to enable.');
|
|
322
|
+
}
|
|
323
|
+
L.push('');
|
|
324
|
+
L.push('---');
|
|
325
|
+
L.push('');
|
|
252
326
|
// Hygiene
|
|
253
327
|
L.push('## Code Hygiene');
|
|
254
328
|
L.push('');
|
|
@@ -256,9 +330,9 @@ function formatQualityReport(report, elapsed) {
|
|
|
256
330
|
L.push(`- **FIXME:** ${m.fixmeCount}`);
|
|
257
331
|
L.push(`- **HACK:** ${m.hackCount}`);
|
|
258
332
|
L.push(`- **Console statements:** ${m.consoleLogCount}`);
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
333
|
+
L.push(`- **Comment ratio:** ${m.commentRatio !== null
|
|
334
|
+
? `${(m.commentRatio * 100).toFixed(1)}%`
|
|
335
|
+
: 'unavailable (`cloc` did not run)'}`);
|
|
262
336
|
if (m.staleFiles.length > 0) {
|
|
263
337
|
L.push(`- **Stale files in git:** ${m.staleFiles.map((f) => '`' + f + '`').join(', ')}`);
|
|
264
338
|
}
|
|
@@ -270,9 +344,7 @@ function formatQualityReport(report, elapsed) {
|
|
|
270
344
|
L.push('');
|
|
271
345
|
// Footer
|
|
272
346
|
L.push(`**Tools used:** ${report.toolsUsed.join(', ')}`);
|
|
273
|
-
|
|
274
|
-
L.push(`**Tools unavailable:** ${report.toolsUnavailable.join(', ')}`);
|
|
275
|
-
}
|
|
347
|
+
L.push(...(0, tools_unavailable_prose_1.renderToolsUnavailableLines)(report.toolsUnavailable));
|
|
276
348
|
L.push(`**Analysis time:** ${elapsed}s`);
|
|
277
349
|
L.push('');
|
|
278
350
|
L.push('*Generated by [VyuhLabs DXKit](https://www.npmjs.com/package/@vyuhlabs/dxkit)*');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzers/quality/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzers/quality/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,55 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Code Quality dimension —
|
|
2
|
+
* Code Quality dimension — health-side adapter over the canonical
|
|
3
|
+
* quality scorer.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
5
|
+
* Translates `ScoreInput { metrics, capabilities }` into the
|
|
6
|
+
* `QualityScoreInput` partition consumed by `scoreQualityFromInput`,
|
|
7
|
+
* then wraps the resulting score in a full `DimensionScore` (status +
|
|
8
|
+
* details + metrics envelope) for the health audit rollup.
|
|
9
|
+
*
|
|
10
|
+
* D123 closure: this file used to delegate to a separate
|
|
11
|
+
* `scoreQuality` in `analyzers/scoring.ts` while the standalone
|
|
12
|
+
* quality report computed `computeSlopScore` from a different signal
|
|
13
|
+
* set. Same repo could surface as health.CodeQuality 22/100 and
|
|
14
|
+
* quality-review.SlopScore 45/100 — customer-visible contradiction.
|
|
15
|
+
* The canonical formula now lives in `quality/scoring.ts`; both
|
|
16
|
+
* surfaces compute the same number from the same partitioned inputs.
|
|
17
|
+
*/
|
|
18
|
+
import { type QualityScoreInput } from '../../scoring';
|
|
19
|
+
import { DimensionScore, ScoreInput } from '../types';
|
|
20
|
+
/**
|
|
21
|
+
* Build the canonical `QualityScoreInput` from the health-side
|
|
22
|
+
* `ScoreInput`. Each field maps to its data source:
|
|
23
|
+
*
|
|
24
|
+
* - Lint counts ← `capabilities.lint.counts`
|
|
25
|
+
* (critical + high → errors). Availability is "did any pack
|
|
26
|
+
* produce a `LintResult`" — i.e. `c.lint !== undefined`.
|
|
27
|
+
* - Hygiene markers + stale files + mixed-language flag +
|
|
28
|
+
* comment ratio ← `metrics.*`. Plumbed into HealthMetrics by
|
|
29
|
+
* the cache builder so both consumer paths land on the same
|
|
30
|
+
* values (the standalone Quality report reads them off the
|
|
31
|
+
* same cached envelope).
|
|
32
|
+
* - File-size + filesystem-walked + density-source metrics
|
|
33
|
+
* ← `metrics.*`.
|
|
34
|
+
* - Duplication, structural ← `capabilities.{duplication,
|
|
35
|
+
* structural}`. Availability is "did the capability dispatch
|
|
36
|
+
* return an envelope" — same shape as lint.
|
|
37
|
+
*/
|
|
38
|
+
export declare function toQualityScoreInput(input: ScoreInput): QualityScoreInput;
|
|
39
|
+
/**
|
|
40
|
+
* Score-only adapter for action ranking. The health remediation
|
|
41
|
+
* planner builds `RemediationAction<ScoreInput>` patches and calls
|
|
42
|
+
* `rank()` with a per-dimension scorer that maps `ScoreInput` to
|
|
43
|
+
* `{ score }`. Mirrors the `scoreSecurityFromScoreInput` shim so
|
|
44
|
+
* `health/actions.ts` stays symmetric across dimensions.
|
|
45
|
+
*/
|
|
46
|
+
export declare function scoreQualityFromScoreInput(input: ScoreInput): {
|
|
47
|
+
score: number;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Health audit's Code Quality dimension entry point. Produces the
|
|
51
|
+
* `DimensionScore` consumed by `health.ts:analyzeHealthInternal` for
|
|
52
|
+
* the dimension rollup, the dashboard summary, and the agent report.
|
|
6
53
|
*/
|
|
7
|
-
import { DimensionScore } from '../types';
|
|
8
|
-
import { ScoreInput } from '../scoring';
|
|
9
54
|
export declare function scoreQualityDimension(input: ScoreInput): DimensionScore;
|
|
10
55
|
//# sourceMappingURL=shallow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shallow.d.ts","sourceRoot":"","sources":["../../../src/analyzers/quality/shallow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shallow.d.ts","sourceRoot":"","sources":["../../../src/analyzers/quality/shallow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAEL,KAAK,iBAAiB,EAGvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB,CAmCxE;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAgFvE"}
|