@vyuhlabs/dxkit 2.4.6 → 2.4.8
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 +1076 -0
- package/README.md +132 -27
- 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 +667 -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 +21 -9
- package/dist/analyzers/developer/index.js.map +1 -1
- package/dist/analyzers/dispatcher.d.ts +52 -0
- package/dist/analyzers/dispatcher.d.ts.map +1 -1
- package/dist/analyzers/dispatcher.js +92 -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 +282 -34
- 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 +86 -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 +197 -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 +349 -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 +104 -1
- package/dist/analyzers/security/gather.d.ts.map +1 -1
- package/dist/analyzers/security/gather.js +299 -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 +83 -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/deadline.d.ts +67 -0
- package/dist/analyzers/tools/deadline.d.ts.map +1 -0
- package/dist/analyzers/tools/deadline.js +81 -0
- package/dist/analyzers/tools/deadline.js.map +1 -0
- 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/lint-label.d.ts +29 -0
- package/dist/analyzers/tools/lint-label.d.ts.map +1 -0
- package/dist/analyzers/tools/lint-label.js +23 -0
- package/dist/analyzers/tools/lint-label.js.map +1 -0
- 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 +133 -0
- package/dist/analyzers/tools/nuget-package-reference.d.ts.map +1 -0
- package/dist/analyzers/tools/nuget-package-reference.js +177 -0
- package/dist/analyzers/tools/nuget-package-reference.js.map +1 -0
- package/dist/analyzers/tools/osv-scanner-deps.d.ts +3 -2
- package/dist/analyzers/tools/osv-scanner-deps.d.ts.map +1 -1
- package/dist/analyzers/tools/osv-scanner-deps.js +32 -14
- package/dist/analyzers/tools/osv-scanner-deps.js.map +1 -1
- 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/report-date.d.ts +17 -0
- package/dist/analyzers/tools/report-date.d.ts.map +1 -0
- package/dist/analyzers/tools/report-date.js +26 -0
- package/dist/analyzers/tools/report-date.js.map +1 -0
- 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.map +1 -1
- package/dist/analyzers/tools/tool-registry.js +11 -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 +581 -189
- package/dist/cli.js.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 +132 -2
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +207 -0
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/java.d.ts.map +1 -1
- package/dist/languages/java.js +113 -26
- package/dist/languages/java.js.map +1 -1
- package/dist/languages/kotlin.d.ts.map +1 -1
- package/dist/languages/kotlin.js +132 -26
- 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 +39 -1
- package/dist/languages/ruby.d.ts.map +1 -1
- package/dist/languages/ruby.js +178 -44
- package/dist/languages/ruby.js.map +1 -1
- 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 +16 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/.claude/commands/dashboard.md +17 -9
- 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
|
@@ -33,75 +33,68 @@ 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
|
-
|
|
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
|
+
const lint_label_1 = require("../tools/lint-label");
|
|
50
|
+
/**
|
|
51
|
+
* Adapter from the standalone Quality report's `QualityMetrics` into
|
|
52
|
+
* the canonical `QualityScoreInput` partition. `m.sourceFiles` carries
|
|
53
|
+
* the canonical repo source-file count from the cached health metrics
|
|
54
|
+
* — the same denominator the health-side Code Quality dimension uses
|
|
55
|
+
* — so both surfaces' density penalties land on identical values.
|
|
56
|
+
*/
|
|
57
|
+
function qualityMetricsToScoreInput(m) {
|
|
58
|
+
return {
|
|
59
|
+
sourceFiles: m.sourceFiles,
|
|
60
|
+
lintErrors: m.lintErrors,
|
|
61
|
+
lintAvailable: m.lintTool !== null,
|
|
62
|
+
consoleLogCount: m.consoleLogCount,
|
|
63
|
+
todoCount: m.todoCount,
|
|
64
|
+
fixmeCount: m.fixmeCount,
|
|
65
|
+
hackCount: m.hackCount,
|
|
66
|
+
staleFiles: m.staleFiles.length,
|
|
67
|
+
mixedLanguages: m.mixedLanguages,
|
|
68
|
+
filesOver500Lines: m.filesOver500Lines,
|
|
69
|
+
largestFileLines: m.largestFileLines,
|
|
70
|
+
anyTypeCount: m.anyTypeCount,
|
|
71
|
+
typeErrors: m.typeErrors,
|
|
72
|
+
duplicationPercentage: m.duplication?.percentage ?? null,
|
|
73
|
+
duplicationAvailable: m.duplication !== null,
|
|
74
|
+
maxFunctionsInFile: m.maxFunctionsInFile,
|
|
75
|
+
deadImportCount: m.deadImportCount,
|
|
76
|
+
orphanModuleCount: m.orphanModuleCount,
|
|
77
|
+
structuralAvailable: m.maxFunctionsInFile !== null,
|
|
78
|
+
commentRatio: m.commentRatio,
|
|
79
|
+
};
|
|
99
80
|
}
|
|
100
81
|
async function analyzeQuality(repoPath, options = {}) {
|
|
101
82
|
const verbose = !!options.verbose;
|
|
102
|
-
const stack = (0, detect_1.detect)(repoPath);
|
|
103
83
|
const toolsUsed = ['grep', 'find'];
|
|
104
84
|
const toolsUnavailable = [];
|
|
85
|
+
// Single canonical analysis envelope shared with `health` and the
|
|
86
|
+
// other migrated consumers. Pulling provenance + sourceFiles count
|
|
87
|
+
// from the cache means the density denominator the standalone Quality
|
|
88
|
+
// score uses is the SAME denominator the health-side Code Quality
|
|
89
|
+
// dimension uses — so the two surfaces converge on the same number.
|
|
90
|
+
// Closes the dual-Quality-formula drift class structurally.
|
|
91
|
+
const cacheResult = await (0, cache_1.readOrBuildAnalysisResult)({
|
|
92
|
+
cwd: repoPath,
|
|
93
|
+
build: (cwd) => (0, health_1.gatherAnalysisResultBody)(cwd, { verbose }),
|
|
94
|
+
});
|
|
95
|
+
const { stack } = cacheResult;
|
|
96
|
+
const cm = cacheResult.metrics;
|
|
97
|
+
const sourceFiles = cm.sourceFiles;
|
|
105
98
|
// 1. Duplication (jscpd) — dispatcher-driven via DUPLICATION capability.
|
|
106
99
|
const dup = await (0, timing_1.timedAsync)('jscpd', verbose, () => (0, gather_1.gatherDuplication)(repoPath));
|
|
107
100
|
if (dup.toolUsed)
|
|
@@ -114,26 +107,70 @@ async function analyzeQuality(repoPath, options = {}) {
|
|
|
114
107
|
toolsUsed.push(structure.toolUsed);
|
|
115
108
|
else
|
|
116
109
|
toolsUnavailable.push('graphify');
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
|
|
110
|
+
// Hygiene markers + comment ratio + counts come from the cached
|
|
111
|
+
// HealthMetrics — the cache builder runs those gathers once per
|
|
112
|
+
// (cwd, SHA) so the values match the health-side Code Quality
|
|
113
|
+
// dimension exactly. The local gather is still called here, but
|
|
114
|
+
// ONLY for the staleFiles file list (rendered into the standalone
|
|
115
|
+
// Quality markdown). The score uses the cached count; the
|
|
116
|
+
// markdown uses this list. They come from the same git ls-files
|
|
117
|
+
// probe so they're consistent by construction.
|
|
118
|
+
const hygiene = (0, timing_1.timed)('hygiene (grep, list-only)', verbose, () => (0, gather_1.gatherHygieneMarkers)(repoPath));
|
|
119
|
+
// Top hygiene offenders — only when --detailed (extra grep pass).
|
|
120
|
+
// Lives standalone-side because the offender lists aren't part of
|
|
121
|
+
// the cached envelope yet; cheap grep on hit, only run on demand.
|
|
126
122
|
const topOffenders = options.detailed
|
|
127
123
|
? (0, timing_1.timed)('hygiene top offenders', verbose, () => (0, gather_1.gatherHygieneTopOffenders)(repoPath))
|
|
128
124
|
: { topConsoleFiles: undefined, topTodoFiles: undefined };
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
125
|
+
// Lint (eslint/ruff). Reads counts + the augmented "(not run: <packs>)"
|
|
126
|
+
// tool label off the canonical cached envelope. The cache builder
|
|
127
|
+
// already calls gatherWithProvenance for LINT and bakes the
|
|
128
|
+
// skipped-pack provenance into envelope.tool, so the standalone
|
|
129
|
+
// Quality report renders the SAME label health does — closes the
|
|
130
|
+
// cross-process drift class for lint.
|
|
131
|
+
//
|
|
132
|
+
// When the cache has NO lint envelope but the active language packs
|
|
133
|
+
// declare a lint capability (i.e. eslint/ruff was expected to run
|
|
134
|
+
// but every provider returned null), surface an explicit notice.
|
|
135
|
+
// Otherwise the renderer's "0 errors, 0 warnings" reads as "clean"
|
|
136
|
+
// when reality is "lint didn't run." Same honesty pattern the
|
|
137
|
+
// licenses degraded-banner uses.
|
|
138
|
+
const lintCounts = cacheResult.capabilities.lint?.counts;
|
|
139
|
+
const lintErrors = (lintCounts?.critical ?? 0) + (lintCounts?.high ?? 0);
|
|
140
|
+
const lintWarnings = (lintCounts?.medium ?? 0) + (lintCounts?.low ?? 0);
|
|
141
|
+
const lintFromCache = cacheResult.capabilities.lint?.tool ?? null;
|
|
142
|
+
const lintAvail = cacheResult.capabilities.lintAvailability;
|
|
143
|
+
// When the cache says lint was attempted but every provider
|
|
144
|
+
// returned null, surface the honesty notice in lintTool so the
|
|
145
|
+
// renderer's "0 errors, 0 warnings" cell reads with explanation
|
|
146
|
+
// instead of looking like a clean result. The actually-ran tool
|
|
147
|
+
// name (or null) flows into toolsUsed separately so the footer
|
|
148
|
+
// stays accurate.
|
|
149
|
+
const lintTool = lintFromCache ??
|
|
150
|
+
(lintAvail && !lintAvail.available ? `not run — ${lintAvail.unavailableReason}` : null);
|
|
151
|
+
if (lintFromCache) {
|
|
152
|
+
// Strip the augmented "(not run: <pack> — <reason>)" parenthetical
|
|
153
|
+
// before pushing into the Tools-used footer. The conflated form
|
|
154
|
+
// reads as "ruff didn't run because of typescript"; the not-run
|
|
155
|
+
// packs still surface via the dedicated Lint coverage gap row.
|
|
156
|
+
const cleanTool = (0, lint_label_1.stripNotRunSuffix)(lintFromCache);
|
|
157
|
+
if (cleanTool)
|
|
158
|
+
toolsUsed.push(cleanTool);
|
|
159
|
+
}
|
|
160
|
+
if (cm.commentRatio !== null)
|
|
161
|
+
toolsUsed.push('cloc');
|
|
133
162
|
const metrics = {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
163
|
+
sourceFiles,
|
|
164
|
+
// File-size + type signals from the cached health metrics so the
|
|
165
|
+
// standalone slop score sees the same penalties the health-side
|
|
166
|
+
// dimension sees.
|
|
167
|
+
filesOver500Lines: cm.filesOver500Lines,
|
|
168
|
+
largestFileLines: cm.largestFileLines,
|
|
169
|
+
anyTypeCount: cm.anyTypeCount,
|
|
170
|
+
typeErrors: cm.typeErrors,
|
|
171
|
+
lintErrors,
|
|
172
|
+
lintWarnings,
|
|
173
|
+
lintTool,
|
|
137
174
|
duplication: dup.stats,
|
|
138
175
|
maxFunctionsInFile: structure.maxFunctionsInFile,
|
|
139
176
|
maxFunctionsFilePath: structure.maxFunctionsFilePath,
|
|
@@ -142,27 +179,37 @@ async function analyzeQuality(repoPath, options = {}) {
|
|
|
142
179
|
functionCount: structure.functionCount,
|
|
143
180
|
deadImportCount: structure.deadImportCount,
|
|
144
181
|
orphanModuleCount: structure.orphanModuleCount,
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
182
|
+
// Hygiene + mixed + comment ratio + console-density signals
|
|
183
|
+
// sourced from the canonical health metrics so both surfaces
|
|
184
|
+
// score from identical inputs. staleFiles list comes from the
|
|
185
|
+
// local gather (markdown render needs the file names); its
|
|
186
|
+
// length matches cm.staleFiles by construction since both
|
|
187
|
+
// gathers run the same git ls-files probe.
|
|
188
|
+
todoCount: cm.todoCount,
|
|
189
|
+
fixmeCount: cm.fixmeCount,
|
|
190
|
+
hackCount: cm.hackCount,
|
|
150
191
|
staleFiles: hygiene.staleFiles,
|
|
151
|
-
mixedLanguages:
|
|
192
|
+
mixedLanguages: cm.mixedLanguages,
|
|
193
|
+
consoleLogCount: cm.consoleLogCount,
|
|
194
|
+
commentRatio: cm.commentRatio,
|
|
152
195
|
slopScore: 0, // computed below
|
|
153
196
|
topConsoleFiles: topOffenders.topConsoleFiles,
|
|
154
197
|
topTodoFiles: topOffenders.topTodoFiles,
|
|
155
198
|
};
|
|
156
|
-
metrics.slopScore =
|
|
199
|
+
metrics.slopScore = (0, scoring_1.evaluateSpec)(scoring_1.QUALITY_SCORING_SPEC, qualityMetricsToScoreInput(metrics)).score;
|
|
200
|
+
const activeLanguages = Object.entries(stack.languages)
|
|
201
|
+
.filter(([, active]) => active)
|
|
202
|
+
.map(([id]) => id);
|
|
157
203
|
return {
|
|
158
|
-
repo: stack.projectName || path.basename(
|
|
159
|
-
analyzedAt:
|
|
160
|
-
commitSha:
|
|
161
|
-
branch:
|
|
204
|
+
repo: stack.projectName || path.basename(cacheResult.cwd),
|
|
205
|
+
analyzedAt: cacheResult.builtAt,
|
|
206
|
+
commitSha: cacheResult.commitSha,
|
|
207
|
+
branch: cacheResult.branch,
|
|
162
208
|
metrics,
|
|
163
209
|
slopScore: metrics.slopScore,
|
|
164
210
|
toolsUsed,
|
|
165
211
|
toolsUnavailable,
|
|
212
|
+
activeLanguages,
|
|
166
213
|
};
|
|
167
214
|
}
|
|
168
215
|
function formatQualityReport(report, elapsed) {
|
|
@@ -183,24 +230,39 @@ function formatQualityReport(report, elapsed) {
|
|
|
183
230
|
L.push('| Metric | Value |');
|
|
184
231
|
L.push('|--------|-------|');
|
|
185
232
|
L.push(`| Slop Score | **${report.slopScore}/100** |`);
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
233
|
+
// Always render every row — silent omission on tool-unavailable reads
|
|
234
|
+
// as "this signal is fine" when reality is "we couldn't measure it."
|
|
235
|
+
// The unavailable-row text names the underlying tool so the customer
|
|
236
|
+
// knows exactly what to install to populate the metric.
|
|
237
|
+
L.push(`| Duplication | ${m.duplication
|
|
238
|
+
? `${m.duplication.percentage}% (${m.duplication.cloneCount} clones, ${m.duplication.duplicatedLines} lines)`
|
|
239
|
+
: 'unavailable — install `jscpd`'} |`);
|
|
240
|
+
L.push(`| Comment Ratio | ${m.commentRatio !== null
|
|
241
|
+
? `${(m.commentRatio * 100).toFixed(1)}%`
|
|
242
|
+
: 'unavailable — install `cloc`'} |`);
|
|
243
|
+
// Split the lint label into "Lint Errors" (counts + tool that ran) and
|
|
244
|
+
// "Lint Coverage" (which packs WERE attempted but didn't produce
|
|
245
|
+
// findings). Pre-split, multi-pack repos where one provider returned
|
|
246
|
+
// null silently rendered the parenthetical "(ruff (not run: typescript))"
|
|
247
|
+
// — accurate but easy for customers to miss. Promoting the not-run
|
|
248
|
+
// packs to their own visible row makes the coverage gap legible.
|
|
249
|
+
const notRunMatch = m.lintTool ? /\(not run: ([^)]+)\)/.exec(m.lintTool) : null;
|
|
250
|
+
const lintToolLabel = m.lintTool
|
|
251
|
+
? notRunMatch
|
|
252
|
+
? m.lintTool.replace(/\s*\(not run: [^)]+\)/, '').trim()
|
|
253
|
+
: m.lintTool
|
|
254
|
+
: null;
|
|
255
|
+
L.push(`| Lint Errors | ${m.lintErrors} errors, ${m.lintWarnings} warnings${lintToolLabel ? ' (' + lintToolLabel + ')' : ''} |`);
|
|
256
|
+
if (notRunMatch) {
|
|
257
|
+
L.push(`| ⚠ Lint coverage gap | not run on: ${notRunMatch[1]} — configure the linter (e.g. add \`eslint.config.js\`) to enable |`);
|
|
191
258
|
}
|
|
192
|
-
L.push(`| Lint Errors | ${m.lintErrors} errors, ${m.lintWarnings} warnings${m.lintTool ? ' (' + m.lintTool + ')' : ''} |`);
|
|
193
259
|
L.push(`| TODO/FIXME/HACK | ${m.todoCount} / ${m.fixmeCount} / ${m.hackCount} |`);
|
|
194
260
|
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
|
-
}
|
|
261
|
+
L.push(`| Functions | ${m.functionCount !== null
|
|
262
|
+
? `${m.functionCount} total, max ${m.maxFunctionsInFile} in one file`
|
|
263
|
+
: 'unavailable — install `graphify`'} |`);
|
|
264
|
+
L.push(`| Dead Imports | ${m.deadImportCount !== null ? m.deadImportCount : 'unavailable — install `graphify`'} |`);
|
|
265
|
+
L.push(`| Orphan Modules | ${m.orphanModuleCount !== null ? m.orphanModuleCount : 'unavailable — install `graphify`'} |`);
|
|
204
266
|
if (m.avgCohesion !== null) {
|
|
205
267
|
L.push(`| Avg Cohesion | ${m.avgCohesion.toFixed(2)} |`);
|
|
206
268
|
}
|
|
@@ -213,10 +275,13 @@ function formatQualityReport(report, elapsed) {
|
|
|
213
275
|
L.push('');
|
|
214
276
|
L.push('---');
|
|
215
277
|
L.push('');
|
|
216
|
-
// Duplication details
|
|
278
|
+
// Duplication details — always render the section so the customer
|
|
279
|
+
// sees an explicit "unavailable" message rather than a missing H2
|
|
280
|
+
// (which reads as "no duplication" when the real state is "we
|
|
281
|
+
// couldn't measure").
|
|
282
|
+
L.push('## Duplication');
|
|
283
|
+
L.push('');
|
|
217
284
|
if (m.duplication) {
|
|
218
|
-
L.push('## Duplication');
|
|
219
|
-
L.push('');
|
|
220
285
|
L.push(`**${m.duplication.percentage}%** of code is duplicated across ${m.duplication.cloneCount} clones (${m.duplication.duplicatedLines} lines out of ${m.duplication.totalLines}).`);
|
|
221
286
|
L.push('');
|
|
222
287
|
if (m.duplication.percentage > 15) {
|
|
@@ -228,14 +293,19 @@ function formatQualityReport(report, elapsed) {
|
|
|
228
293
|
else {
|
|
229
294
|
L.push('> Duplication is within acceptable range.');
|
|
230
295
|
}
|
|
231
|
-
L.push('');
|
|
232
|
-
L.push('---');
|
|
233
|
-
L.push('');
|
|
234
296
|
}
|
|
235
|
-
|
|
297
|
+
else {
|
|
298
|
+
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.');
|
|
299
|
+
}
|
|
300
|
+
L.push('');
|
|
301
|
+
L.push('---');
|
|
302
|
+
L.push('');
|
|
303
|
+
// Structural complexity — same always-render discipline as Duplication.
|
|
304
|
+
// Graphify produces functionCount / densest file / cohesion / orphan
|
|
305
|
+
// modules / dead imports; its absence is signaled by null fields.
|
|
306
|
+
L.push('## Structural Complexity');
|
|
307
|
+
L.push('');
|
|
236
308
|
if (m.functionCount !== null) {
|
|
237
|
-
L.push('## Structural Complexity');
|
|
238
|
-
L.push('');
|
|
239
309
|
L.push(`- **${m.functionCount}** functions across ${m.communityCount ?? '?'} architectural communities`);
|
|
240
310
|
L.push(`- **Densest file:** ${m.maxFunctionsFilePath ?? 'unknown'} (${m.maxFunctionsInFile} functions)`);
|
|
241
311
|
L.push(`- **Avg cohesion:** ${m.avgCohesion?.toFixed(2) ?? 'unknown'}`);
|
|
@@ -243,12 +313,24 @@ function formatQualityReport(report, elapsed) {
|
|
|
243
313
|
L.push(`- **Dead imports:** ${m.deadImportCount}`);
|
|
244
314
|
}
|
|
245
315
|
if (m.orphanModuleCount !== null && m.orphanModuleCount > 0) {
|
|
246
|
-
|
|
316
|
+
// C# uses namespace-based name resolution; graphify follows
|
|
317
|
+
// file-based imports only, so every .cs file reads as orphaned
|
|
318
|
+
// to it (the using-directive graph isn't traversed). Label the
|
|
319
|
+
// count as informational on csharp-active repos so the reader
|
|
320
|
+
// doesn't take 58K orphan modules as an actionable defect.
|
|
321
|
+
const csharpActive = report.activeLanguages?.includes('csharp');
|
|
322
|
+
const qualifier = csharpActive
|
|
323
|
+
? " (informational — graphify can't follow C# `using` directives across assemblies)"
|
|
324
|
+
: ' (no inbound imports)';
|
|
325
|
+
L.push(`- **Orphan modules:** ${m.orphanModuleCount}${qualifier}`);
|
|
247
326
|
}
|
|
248
|
-
L.push('');
|
|
249
|
-
L.push('---');
|
|
250
|
-
L.push('');
|
|
251
327
|
}
|
|
328
|
+
else {
|
|
329
|
+
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.');
|
|
330
|
+
}
|
|
331
|
+
L.push('');
|
|
332
|
+
L.push('---');
|
|
333
|
+
L.push('');
|
|
252
334
|
// Hygiene
|
|
253
335
|
L.push('## Code Hygiene');
|
|
254
336
|
L.push('');
|
|
@@ -256,9 +338,9 @@ function formatQualityReport(report, elapsed) {
|
|
|
256
338
|
L.push(`- **FIXME:** ${m.fixmeCount}`);
|
|
257
339
|
L.push(`- **HACK:** ${m.hackCount}`);
|
|
258
340
|
L.push(`- **Console statements:** ${m.consoleLogCount}`);
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
341
|
+
L.push(`- **Comment ratio:** ${m.commentRatio !== null
|
|
342
|
+
? `${(m.commentRatio * 100).toFixed(1)}%`
|
|
343
|
+
: 'unavailable (`cloc` did not run)'}`);
|
|
262
344
|
if (m.staleFiles.length > 0) {
|
|
263
345
|
L.push(`- **Stale files in git:** ${m.staleFiles.map((f) => '`' + f + '`').join(', ')}`);
|
|
264
346
|
}
|
|
@@ -270,9 +352,7 @@ function formatQualityReport(report, elapsed) {
|
|
|
270
352
|
L.push('');
|
|
271
353
|
// Footer
|
|
272
354
|
L.push(`**Tools used:** ${report.toolsUsed.join(', ')}`);
|
|
273
|
-
|
|
274
|
-
L.push(`**Tools unavailable:** ${report.toolsUnavailable.join(', ')}`);
|
|
275
|
-
}
|
|
355
|
+
L.push(...(0, tools_unavailable_prose_1.renderToolsUnavailableLines)(report.toolsUnavailable));
|
|
276
356
|
L.push(`**Analysis time:** ${elapsed}s`);
|
|
277
357
|
L.push('');
|
|
278
358
|
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"}
|