@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
|
@@ -34,137 +34,233 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.gatherGenericMetrics = gatherGenericMetrics;
|
|
37
|
-
/**
|
|
38
|
-
* Generic tool runner -- uses grep, find, wc, git.
|
|
39
|
-
* Works on any Unix machine with no external dependencies.
|
|
40
|
-
* This is Layer 0: always available.
|
|
41
|
-
*/
|
|
42
|
-
const fs = __importStar(require("fs"));
|
|
43
37
|
const runner_1 = require("./runner");
|
|
44
38
|
const exclusions_1 = require("./exclusions");
|
|
39
|
+
const walk_source_files_1 = require("./walk-source-files");
|
|
40
|
+
const debug_statements_1 = require("./debug-statements");
|
|
45
41
|
const languages_1 = require("../../languages");
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
// D055/D056/D072 (2.4.7): every per-source-file metric (rawSourceFiles,
|
|
45
|
+
// wc-l walk, jsConsoleCount, anyTypeCount, evalCount, docCommentFiles,
|
|
46
|
+
// tlsDisabledCount, testFiles) routes through walkSourceFiles +
|
|
47
|
+
// countLineMatches. Closes the class of "site-specific walker drift"
|
|
48
|
+
// (D075/D077) and "grep maxBuffer overflow" (D082/D083/D084) by
|
|
49
|
+
// construction: ONE walker, ONE counter, files pruned at the
|
|
50
|
+
// directory boundary so we never read minified .min.js into memory.
|
|
51
|
+
//
|
|
52
|
+
// `EXCLUDE = getFindExcludeFlags(cwd)` is retained below for find
|
|
53
|
+
// commands that count NON-source artifacts (controllers, models,
|
|
54
|
+
// directories, ciConfigCount) — those legitimately walk path
|
|
55
|
+
// patterns the walker doesn't model.
|
|
56
|
+
/**
|
|
57
|
+
* Resolve the git toplevel for `cwd`. D026 (2.4.7): cross-cutting repo
|
|
58
|
+
* artifacts (`.github/`, `README.md`, `CONTRIBUTING.md`, `Makefile`,
|
|
59
|
+
* `.env.example`, etc.) conventionally live at the repo root, not in
|
|
60
|
+
* the subdirectory a user happens to scan. The .NET WinForms benchmark's baseline F8:
|
|
61
|
+
* customer ran `dxkit health Code/Source/`; both Documentation and DX
|
|
62
|
+
* dimensions returned 0/100 because none of those probes found
|
|
63
|
+
* matches in `Code/Source/`. The fix scopes those probes to the
|
|
64
|
+
* git toplevel.
|
|
65
|
+
*
|
|
66
|
+
* Returns `cwd` unchanged when `git rev-parse --show-toplevel` fails
|
|
67
|
+
* (not in a git repo, or git missing) so non-git workflows keep
|
|
68
|
+
* working — they just don't get the toplevel-scoped improvement.
|
|
69
|
+
*/
|
|
70
|
+
function resolveGitToplevel(cwd) {
|
|
71
|
+
const top = (0, runner_1.run)('git rev-parse --show-toplevel 2>/dev/null', cwd).trim();
|
|
72
|
+
return top.length > 0 ? top : cwd;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Count newlines in `content`. Equivalent to `wc -l` semantics:
|
|
76
|
+
* trailing newline NOT double-counted; file with no trailing newline
|
|
77
|
+
* still counts its last line.
|
|
78
|
+
*/
|
|
79
|
+
function lineCount(content) {
|
|
80
|
+
if (content.length === 0)
|
|
81
|
+
return 0;
|
|
82
|
+
let count = 0;
|
|
83
|
+
for (let i = 0; i < content.length; i++) {
|
|
84
|
+
if (content.charCodeAt(i) === 10 /* \n */)
|
|
85
|
+
count++;
|
|
62
86
|
}
|
|
63
|
-
|
|
87
|
+
// No trailing newline → the last partial line was a line too.
|
|
88
|
+
if (content.charCodeAt(content.length - 1) !== 10)
|
|
89
|
+
count++;
|
|
90
|
+
return count;
|
|
64
91
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// - Rust integration tests under `tests/*.rs` now counted as test
|
|
76
|
-
// files (Rust pack declared `tests/*.rs` as a path-anchored
|
|
77
|
-
// pattern; the legacy used only `-name` and skipped path patterns).
|
|
78
|
-
const SOURCE_EXTS = `\\( ${(0, languages_1.allSourceExtensions)()
|
|
79
|
-
.map((e) => `-name "*${e}"`)
|
|
80
|
-
.join(' -o ')} \\)`;
|
|
81
|
-
const TEST_PATTERNS = (() => {
|
|
82
|
-
const { nameOnly, pathAnchored } = (0, languages_1.splitTestFilePatterns)();
|
|
83
|
-
const nameClauses = nameOnly.map((p) => `-name "${p}"`);
|
|
84
|
-
const pathClauses = pathAnchored.map((p) => `-path "*/${p}"`);
|
|
85
|
-
return `\\( ${[...nameClauses, ...pathClauses].join(' -o ')} \\)`;
|
|
86
|
-
})();
|
|
87
|
-
/** Gather metrics using only built-in Unix tools. */
|
|
88
|
-
function gatherGenericMetrics(cwd) {
|
|
92
|
+
/**
|
|
93
|
+
* Gather metrics using only built-in Unix tools + the canonical walker.
|
|
94
|
+
*
|
|
95
|
+
* `languageFlags` drives the architecturalShape-aware path counters
|
|
96
|
+
* (primary components, route handlers, data models). When omitted
|
|
97
|
+
* (legacy callers, tests) the path counters degrade to zero rather
|
|
98
|
+
* than silently using a hardcoded backend-centric default — every
|
|
99
|
+
* shipped caller in the codebase threads the active stack through.
|
|
100
|
+
*/
|
|
101
|
+
function gatherGenericMetrics(cwd, languageFlags) {
|
|
89
102
|
const EXCLUDE = (0, exclusions_1.getFindExcludeFlags)(cwd);
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
103
|
+
// D026 (2.4.7): repo-level artifacts probed from git toplevel; code-
|
|
104
|
+
// level metrics (source-file counts, hygiene grep, semgrep) stay
|
|
105
|
+
// scoped to `cwd` so analyzing a subdirectory still measures that
|
|
106
|
+
// subdir's code quality.
|
|
107
|
+
const repoRoot = resolveGitToplevel(cwd);
|
|
108
|
+
// ─── Source / test file enumeration ───────────────────────────────────────
|
|
109
|
+
// ONE walker, every consumer routes through it. The walker's filter
|
|
110
|
+
// pipeline already applies: exclusions (.gitignore + .dxkit-ignore +
|
|
111
|
+
// bundled defaults), autogen basename globs (*.designer.cs etc.),
|
|
112
|
+
// autogen header markers (<auto-generated> / @generated / DO NOT EDIT),
|
|
113
|
+
// test-file patterns (per `includeTests`). Memoized per cwd+opts.
|
|
114
|
+
//
|
|
115
|
+
// 2.4.7 class-fix alignment: `sourceFiles` now excludes test files,
|
|
116
|
+
// matching test-gaps' definition. Pre-fix health included tests in
|
|
117
|
+
// `sourceFiles` (D075 same-label-different-meaning class). The
|
|
118
|
+
// Testing dimension's `testRatio = testFiles / sourceFiles` is
|
|
119
|
+
// mathematically equivalent (numerator drops to 0 simultaneously
|
|
120
|
+
// when there's a test file in the denominator), so user-visible
|
|
121
|
+
// scoring is unchanged in practice.
|
|
122
|
+
const sourceList = (0, walk_source_files_1.walkSourceFiles)(cwd);
|
|
123
|
+
const sourceListWithTests = (0, walk_source_files_1.walkSourceFiles)(cwd, { includeTests: true });
|
|
124
|
+
const testList = sourceListWithTests.filter((p) => !sourceList.includes(p));
|
|
125
|
+
// ─── Per-file line counts (replaces find + xargs wc -l) ───────────────────
|
|
126
|
+
// 2.4.7: pure in-process read. Catches the D028-header / autogen
|
|
127
|
+
// filtering at walker-time, so we don't need a second-pass header
|
|
128
|
+
// filter the way the old code did. Also: largestFiles + filesOver500.
|
|
129
|
+
const filteredFiles = [];
|
|
130
|
+
for (const relPath of sourceList) {
|
|
131
|
+
let content;
|
|
132
|
+
try {
|
|
133
|
+
content = fs.readFileSync(path.join(cwd, relPath), 'utf-8');
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
filteredFiles.push({ path: relPath, lines: lineCount(content) });
|
|
139
|
+
}
|
|
96
140
|
let totalLines = 0;
|
|
97
141
|
let largestFileLines = 0;
|
|
98
142
|
let largestFilePath = '';
|
|
99
143
|
let filesOver500Lines = 0;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const lines = parseInt(m[1]);
|
|
106
|
-
const file = m[2];
|
|
107
|
-
if (file === 'total') {
|
|
108
|
-
totalLines = lines;
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
if (lines > largestFileLines) {
|
|
112
|
-
largestFileLines = lines;
|
|
113
|
-
largestFilePath = file;
|
|
114
|
-
}
|
|
115
|
-
if (lines > 500)
|
|
116
|
-
filesOver500Lines++;
|
|
117
|
-
}
|
|
144
|
+
for (const f of filteredFiles) {
|
|
145
|
+
totalLines += f.lines;
|
|
146
|
+
if (f.lines > largestFileLines) {
|
|
147
|
+
largestFileLines = f.lines;
|
|
148
|
+
largestFilePath = f.path;
|
|
118
149
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
totalLines = largestFileLines;
|
|
150
|
+
if (f.lines > 500)
|
|
151
|
+
filesOver500Lines++;
|
|
122
152
|
}
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
//
|
|
129
|
-
|
|
130
|
-
//
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
//
|
|
140
|
-
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
|
|
144
|
-
const
|
|
153
|
+
const sourceFiles = sourceList.length;
|
|
154
|
+
const largestFiles = [...filteredFiles].sort((a, b) => b.lines - a.lines).slice(0, 10);
|
|
155
|
+
// ─── Console / debug / type-escape / eval counts (D074 closure) ───────────
|
|
156
|
+
// skipComments: true filters lines beginning with //, /*, or # so
|
|
157
|
+
// commented-out occurrences don't inflate the count.
|
|
158
|
+
//
|
|
159
|
+
// 2.4.7 D079 closure: `consoleLogCount` now routes through the shared
|
|
160
|
+
// `gatherDebugStatements` helper — same implementation in health AND
|
|
161
|
+
// quality, so the two reports cannot drift on this metric. Counts
|
|
162
|
+
// the print family across active languages (TS/JS/Py/Go).
|
|
163
|
+
const consoleLogCount = (0, debug_statements_1.gatherDebugStatements)(cwd).count;
|
|
164
|
+
// TypeScript escape-hatch count.
|
|
165
|
+
const tsFiles = (0, walk_source_files_1.walkSourceFiles)(cwd, {
|
|
166
|
+
extensions: ['.ts', '.tsx', '.js', '.jsx'],
|
|
167
|
+
includeTests: true,
|
|
168
|
+
});
|
|
169
|
+
// prettier-ignore
|
|
170
|
+
const anyTypeCount = (0, walk_source_files_1.countLineMatches)(cwd, tsFiles, [': any'], { skipComments: true }).lines; // slop-ok
|
|
171
|
+
// ─── Documentation ────────────────────────────────────────────────────────
|
|
172
|
+
// D026 (2.4.7): probe from repo root, not from cwd.
|
|
173
|
+
const readmeExists = (0, runner_1.fileExists)(repoRoot, 'README.md', 'readme.md');
|
|
174
|
+
const readmeLines = parseInt((0, runner_1.run)("wc -l README.md 2>/dev/null | awk '{print $1}'", repoRoot)) || 0;
|
|
175
|
+
// D027 (2.4.7): doc-comment regex + include flags derive from the
|
|
176
|
+
// language pack registry. countLineMatches mode='files' returns the
|
|
177
|
+
// file count. NO skipComments here — we explicitly WANT comment lines.
|
|
178
|
+
const docCommentPatterns = (0, languages_1.allDocCommentPatterns)();
|
|
179
|
+
const docCommentFiles = docCommentPatterns.length > 0
|
|
180
|
+
? (0, walk_source_files_1.countLineMatches)(cwd, sourceList, docCommentPatterns, { mode: 'files' }).files
|
|
181
|
+
: 0;
|
|
182
|
+
const apiDocsExist = (0, runner_1.fileExists)(repoRoot, 'openapi.json', 'openapi.yaml', 'swagger.json', 'swagger.yaml');
|
|
183
|
+
const architectureDocsExist = (0, runner_1.fileExists)(repoRoot, 'ARCHITECTURE.md', 'docs/', 'ADR/', 'adr/');
|
|
184
|
+
const contributingExists = (0, runner_1.fileExists)(repoRoot, 'CONTRIBUTING.md');
|
|
185
|
+
const changelogExists = (0, runner_1.fileExists)(repoRoot, 'CHANGELOG.md', 'CHANGES.md');
|
|
186
|
+
// ─── Security (eval + TLS-bypass + cert/key files) ────────────────────────
|
|
187
|
+
// D056 (2.4.7): routed through the canonical counter so .dxkit-ignore /
|
|
188
|
+
// .gitignore / bundled defaults all apply. D074 (2.4.7): skipComments
|
|
189
|
+
// strips commented-out `eval(` and TLS-bypass idioms.
|
|
190
|
+
const evalFiles = (0, walk_source_files_1.walkSourceFiles)(cwd, {
|
|
191
|
+
extensions: ['.ts', '.tsx', '.js', '.jsx', '.py'],
|
|
192
|
+
includeTests: true,
|
|
193
|
+
});
|
|
194
|
+
const evalCount = (0, walk_source_files_1.countLineMatches)(cwd, evalFiles, ['\\beval\\('], {
|
|
195
|
+
skipComments: true,
|
|
196
|
+
}).lines;
|
|
145
197
|
const privateKeyFiles = (0, runner_1.countLines)(`find . \\( -name "*.key" -o -name "*.pem" \\) ${EXCLUDE} 2>/dev/null`, cwd);
|
|
146
198
|
const envFilesInGit = (0, runner_1.countLines)('git ls-files .env .env.* 2>/dev/null', cwd);
|
|
147
|
-
|
|
148
|
-
//
|
|
149
|
-
|
|
150
|
-
|
|
199
|
+
// D034 (2.4.7): TLS-bypass detection derives from the pack registry.
|
|
200
|
+
// D074 (2.4.7): skipComments closes the "vuln-scan rendered a
|
|
201
|
+
// `// NODE_TLS_REJECT_UNAUTHORIZED=0` comment as a HIGH finding"
|
|
202
|
+
// false-positive class on platform.
|
|
203
|
+
const tlsBypassPatterns = (0, languages_1.allTlsBypassPatterns)();
|
|
204
|
+
const tlsDisabledCount = tlsBypassPatterns.length > 0
|
|
205
|
+
? (0, walk_source_files_1.countLineMatches)(cwd, sourceList, tlsBypassPatterns, { skipComments: true }).lines
|
|
206
|
+
: 0;
|
|
207
|
+
// ─── Maintainability (per-pack architectural counts) ───────────────────────
|
|
208
|
+
// Primary-component, route-handler, and data-model counts derive
|
|
209
|
+
// from the active language packs' `architecturalShape`. Pre-extension
|
|
210
|
+
// these were three hardcoded find commands keyed on backend-centric
|
|
211
|
+
// paths (`controllers/`, `handlers/`, `views/`, `models/`), so a pure
|
|
212
|
+
// React frontend or a .NET WinForms desktop app reported zero in all
|
|
213
|
+
// three counters regardless of how much primary architecture sat on
|
|
214
|
+
// disk. The walker visit already enumerated every source file; here
|
|
215
|
+
// we filter `sourceList` (pre-walked + autogen-excluded + exclusion-
|
|
216
|
+
// honoured) by case-insensitive substring match against the unioned
|
|
217
|
+
// pack contributions.
|
|
218
|
+
const flags = languageFlags ?? {};
|
|
219
|
+
const primaryPaths = (0, languages_1.allPrimaryComponentPaths)(flags).map((p) => p.toLowerCase());
|
|
220
|
+
const routePaths = (0, languages_1.allRoutePaths)(flags).map((p) => p.toLowerCase());
|
|
221
|
+
const modelPaths = (0, languages_1.allModelPaths)(flags).map((p) => p.toLowerCase());
|
|
222
|
+
const matchesAny = (p, needles) => {
|
|
223
|
+
if (needles.length === 0)
|
|
224
|
+
return false;
|
|
225
|
+
const lower = p.toLowerCase();
|
|
226
|
+
for (const n of needles) {
|
|
227
|
+
if (lower.includes(n))
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
return false;
|
|
231
|
+
};
|
|
232
|
+
let controllers = 0;
|
|
233
|
+
let routeHandlerFiles = 0;
|
|
234
|
+
let models = 0;
|
|
235
|
+
for (const rel of sourceList) {
|
|
236
|
+
// Match against the path with a leading slash so substring patterns
|
|
237
|
+
// like "/controllers/" anchor on a directory boundary, never on a
|
|
238
|
+
// filename like "controllers-helper.ts" floating outside such a dir.
|
|
239
|
+
const anchored = '/' + rel;
|
|
240
|
+
if (matchesAny(anchored, primaryPaths))
|
|
241
|
+
controllers++;
|
|
242
|
+
if (matchesAny(anchored, routePaths))
|
|
243
|
+
routeHandlerFiles++;
|
|
244
|
+
if (matchesAny(anchored, modelPaths))
|
|
245
|
+
models++;
|
|
246
|
+
}
|
|
151
247
|
const directories = (0, runner_1.countLines)(`find . -type d ${EXCLUDE} 2>/dev/null`, cwd);
|
|
152
|
-
// Developer Experience
|
|
153
|
-
const ciConfigCount = (0, runner_1.countLines)('find .github/workflows -name "*.yml" -o -name "*.yaml" 2>/dev/null; ls .gitlab-ci.yml Jenkinsfile .circleci/config.yml 2>/dev/null',
|
|
154
|
-
const dockerConfigCount = (0, runner_1.countLines)('ls Dockerfile docker-compose.yml docker-compose.yaml .devcontainer/devcontainer.json 2>/dev/null',
|
|
155
|
-
const precommitConfigCount = (0, runner_1.countLines)('ls -d .husky .pre-commit-config.yaml .git/hooks/pre-commit 2>/dev/null',
|
|
156
|
-
const makefileExists = (0, runner_1.fileExists)(
|
|
157
|
-
const envExampleExists = (0, runner_1.fileExists)(
|
|
158
|
-
|
|
159
|
-
const coverageConfigExists = (0, runner_1.fileExists)(cwd, '.nycrc', '.nycrc.json', '.c8rc', '.c8rc.json', 'jest.config.js', 'jest.config.ts', 'vitest.config.ts', 'vitest.config.js', '.coveragerc', 'setup.cfg', 'pytest.ini');
|
|
248
|
+
// ─── Developer Experience (repo-root scoped) ──────────────────────────────
|
|
249
|
+
const ciConfigCount = (0, runner_1.countLines)('find .github/workflows -name "*.yml" -o -name "*.yaml" 2>/dev/null; ls .gitlab-ci.yml Jenkinsfile .circleci/config.yml 2>/dev/null', repoRoot);
|
|
250
|
+
const dockerConfigCount = (0, runner_1.countLines)('ls Dockerfile docker-compose.yml docker-compose.yaml .devcontainer/devcontainer.json 2>/dev/null', repoRoot);
|
|
251
|
+
const precommitConfigCount = (0, runner_1.countLines)('ls -d .husky .pre-commit-config.yaml .git/hooks/pre-commit 2>/dev/null', repoRoot);
|
|
252
|
+
const makefileExists = (0, runner_1.fileExists)(repoRoot, 'Makefile', 'justfile', 'Taskfile.yml');
|
|
253
|
+
const envExampleExists = (0, runner_1.fileExists)(repoRoot, '.env.example', '.env.sample', '.env.template');
|
|
254
|
+
const coverageConfigExists = (0, runner_1.fileExists)(repoRoot, '.nycrc', '.nycrc.json', '.c8rc', '.c8rc.json', 'jest.config.js', 'jest.config.ts', 'vitest.config.ts', 'vitest.config.js', '.coveragerc', 'setup.cfg', 'pytest.ini');
|
|
160
255
|
return {
|
|
161
256
|
sourceFiles,
|
|
162
|
-
testFiles:
|
|
257
|
+
testFiles: testList.length,
|
|
163
258
|
totalLines,
|
|
164
259
|
coverageConfigExists,
|
|
165
260
|
filesOver500Lines,
|
|
166
261
|
largestFileLines,
|
|
167
262
|
largestFilePath,
|
|
263
|
+
largestFiles,
|
|
168
264
|
consoleLogCount,
|
|
169
265
|
anyTypeCount,
|
|
170
266
|
readmeExists,
|
|
@@ -180,6 +276,7 @@ function gatherGenericMetrics(cwd) {
|
|
|
180
276
|
tlsDisabledCount,
|
|
181
277
|
controllers,
|
|
182
278
|
models,
|
|
279
|
+
routeHandlerFiles,
|
|
183
280
|
directories,
|
|
184
281
|
ciConfigCount,
|
|
185
282
|
dockerConfigCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../src/analyzers/tools/generic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../src/analyzers/tools/generic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitleaks.d.ts","sourceRoot":"","sources":["../../../src/analyzers/tools/gitleaks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitleaks.d.ts","sourceRoot":"","sources":["../../../src/analyzers/tools/gitleaks.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAUvF;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAgB5C;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAMtE;AA6ED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAAC,aAAa,CAM9D,CAAC"}
|
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.gitleaksProvider = void 0;
|
|
4
37
|
exports.gatherGitleaksResult = gatherGitleaksResult;
|
|
@@ -12,6 +45,7 @@ exports.gatherGitleaksResult = gatherGitleaksResult;
|
|
|
12
45
|
* `tools/parallel.ts`. Memoized per-cwd so both callers share one
|
|
13
46
|
* invocation per analyzer run.
|
|
14
47
|
*/
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
15
49
|
const runner_1 = require("./runner");
|
|
16
50
|
const tool_registry_1 = require("./tool-registry");
|
|
17
51
|
const exclusions_1 = require("./exclusions");
|
|
@@ -51,7 +85,20 @@ function computeGitleaksOutcome(cwd) {
|
|
|
51
85
|
// Run gitleaks with JSON report (--no-git scans files, not git history).
|
|
52
86
|
const reportPath = `/tmp/dxkit-gitleaks-${Date.now()}.json`;
|
|
53
87
|
(0, runner_1.run)(`${gitleaksCmd} detect --source '${cwd}' --report-format json --report-path '${reportPath}' --no-git --exit-code 0 2>/dev/null`, cwd, 120000);
|
|
54
|
-
|
|
88
|
+
// Read the report file directly. Pre-fix this used `run('cat
|
|
89
|
+
// <path>')` which routed through execSync — large reports on
|
|
90
|
+
// enterprise codebases would exceed the 1MB default maxBuffer and
|
|
91
|
+
// silently return empty (same bug class as jscpd.ts). Direct file
|
|
92
|
+
// read sidesteps the buffer entirely; gitleaks reports on
|
|
93
|
+
// enterprise repos can reach MB-range when many findings are
|
|
94
|
+
// surfaced.
|
|
95
|
+
let reportRaw;
|
|
96
|
+
try {
|
|
97
|
+
reportRaw = fs.readFileSync(reportPath, 'utf-8');
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
reportRaw = '';
|
|
101
|
+
}
|
|
55
102
|
(0, runner_1.run)(`rm -f '${reportPath}'`, cwd);
|
|
56
103
|
if (!reportRaw)
|
|
57
104
|
return { kind: 'unavailable', reason: 'no output' };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitleaks.js","sourceRoot":"","sources":["../../../src/analyzers/tools/gitleaks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitleaks.js","sourceRoot":"","sources":["../../../src/analyzers/tools/gitleaks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import type { CapabilityProvider } from '../../languages/capabilities/provider';
|
|
2
2
|
import type { StructuralResult } from '../../languages/capabilities/types';
|
|
3
|
+
interface GraphifyResult {
|
|
4
|
+
functionCount: number;
|
|
5
|
+
classCount: number;
|
|
6
|
+
maxFunctionsInFile: number;
|
|
7
|
+
maxFunctionsFilePath: string;
|
|
8
|
+
godNodeCount: number;
|
|
9
|
+
communityCount: number;
|
|
10
|
+
avgCohesion: number;
|
|
11
|
+
orphanModuleCount: number;
|
|
12
|
+
deadImportCount: number;
|
|
13
|
+
commentedCodeRatio: number;
|
|
14
|
+
sourceFilesInGraph: number;
|
|
15
|
+
}
|
|
3
16
|
/**
|
|
4
17
|
* Outcome union mirrors the other global wrappers (gitleaks, semgrep,
|
|
5
18
|
* jscpd). The capability provider collapses this to `StructuralResult
|
|
@@ -22,11 +35,26 @@ export type StructuralGatherOutcome = {
|
|
|
22
35
|
* memoized per-cwd outcome so graphify shells out at most once per
|
|
23
36
|
* analyzer run.
|
|
24
37
|
*/
|
|
25
|
-
export declare function gatherGraphifyResult(cwd: string): StructuralGatherOutcome
|
|
38
|
+
export declare function gatherGraphifyResult(cwd: string): Promise<StructuralGatherOutcome>;
|
|
39
|
+
/**
|
|
40
|
+
* Pure JSON-to-envelope reshape so the normalization contract is
|
|
41
|
+
* unit-testable without shelling out to Python.
|
|
42
|
+
*
|
|
43
|
+
* The Python helper emits `maxFunctionsFilePath` as an absolute path
|
|
44
|
+
* (`str(Path(...))` on a value derived from `target = sys.argv[1]`).
|
|
45
|
+
* Renderers downstream emit this field verbatim into customer-facing
|
|
46
|
+
* markdown, so it has to be project-relative before it leaves the
|
|
47
|
+
* gather layer — mirrors the gitleaks / semgrep / grep-secrets pattern
|
|
48
|
+
* where each tool wrapper owns its own path normalization.
|
|
49
|
+
*/
|
|
50
|
+
export declare function buildGraphifyEnvelope(data: GraphifyResult, cwd: string): StructuralResult;
|
|
26
51
|
/**
|
|
27
52
|
* Capability-shaped provider. Register in
|
|
28
53
|
* `src/languages/capabilities/global.ts:GLOBAL_CAPABILITIES.structural`
|
|
29
54
|
* so the dispatcher picks it up via `providersFor(STRUCTURAL)`.
|
|
30
55
|
*/
|
|
31
|
-
export declare const graphifyProvider: CapabilityProvider<StructuralResult
|
|
56
|
+
export declare const graphifyProvider: CapabilityProvider<StructuralResult> & {
|
|
57
|
+
gatherOutcome(cwd: string): Promise<StructuralGatherOutcome>;
|
|
58
|
+
};
|
|
59
|
+
export {};
|
|
32
60
|
//# sourceMappingURL=graphify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphify.d.ts","sourceRoot":"","sources":["../../../src/analyzers/tools/graphify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graphify.d.ts","sourceRoot":"","sources":["../../../src/analyzers/tools/graphify.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,UAAU,cAAc;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAgLD;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAa5C;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAMxF;AA6ED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAiBzF;AAED;;;;GAIG;AAOH,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,GAAG;IACpE,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAU9D,CAAC"}
|