@vyuhlabs/dxkit 2.4.3 → 2.4.5

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.
Files changed (78) hide show
  1. package/CHANGELOG.md +347 -0
  2. package/README.md +15 -11
  3. package/dist/analyzers/health.js +9 -9
  4. package/dist/analyzers/health.js.map +1 -1
  5. package/dist/analyzers/licenses/gather.js +1 -1
  6. package/dist/analyzers/licenses/gather.js.map +1 -1
  7. package/dist/analyzers/quality/gather.js +2 -2
  8. package/dist/analyzers/quality/gather.js.map +1 -1
  9. package/dist/analyzers/security/gather.d.ts.map +1 -1
  10. package/dist/analyzers/security/gather.js +11 -2
  11. package/dist/analyzers/security/gather.js.map +1 -1
  12. package/dist/analyzers/tests/import-graph.d.ts.map +1 -1
  13. package/dist/analyzers/tests/import-graph.js +5 -0
  14. package/dist/analyzers/tests/import-graph.js.map +1 -1
  15. package/dist/analyzers/tests/index.d.ts.map +1 -1
  16. package/dist/analyzers/tests/index.js +2 -0
  17. package/dist/analyzers/tests/index.js.map +1 -1
  18. package/dist/analyzers/tests/types.d.ts +12 -2
  19. package/dist/analyzers/tests/types.d.ts.map +1 -1
  20. package/dist/analyzers/tools/coverage.d.ts +1 -1
  21. package/dist/analyzers/tools/coverage.d.ts.map +1 -1
  22. package/dist/analyzers/tools/coverage.js.map +1 -1
  23. package/dist/analyzers/tools/jacoco.d.ts +76 -0
  24. package/dist/analyzers/tools/jacoco.d.ts.map +1 -0
  25. package/dist/analyzers/tools/jacoco.js +228 -0
  26. package/dist/analyzers/tools/jacoco.js.map +1 -0
  27. package/dist/analyzers/tools/jscpd.d.ts +8 -7
  28. package/dist/analyzers/tools/jscpd.d.ts.map +1 -1
  29. package/dist/analyzers/tools/jscpd.js +30 -13
  30. package/dist/analyzers/tools/jscpd.js.map +1 -1
  31. package/dist/analyzers/tools/osv-scanner-fix.d.ts +20 -0
  32. package/dist/analyzers/tools/osv-scanner-fix.d.ts.map +1 -1
  33. package/dist/analyzers/tools/osv-scanner-fix.js +45 -20
  34. package/dist/analyzers/tools/osv-scanner-fix.js.map +1 -1
  35. package/dist/analyzers/tools/osv-scanner-maven.d.ts +42 -0
  36. package/dist/analyzers/tools/osv-scanner-maven.d.ts.map +1 -0
  37. package/dist/analyzers/tools/osv-scanner-maven.js +161 -0
  38. package/dist/analyzers/tools/osv-scanner-maven.js.map +1 -0
  39. package/dist/analyzers/tools/runner.d.ts +47 -0
  40. package/dist/analyzers/tools/runner.d.ts.map +1 -1
  41. package/dist/analyzers/tools/runner.js +79 -0
  42. package/dist/analyzers/tools/runner.js.map +1 -1
  43. package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
  44. package/dist/analyzers/tools/tool-registry.js +47 -0
  45. package/dist/analyzers/tools/tool-registry.js.map +1 -1
  46. package/dist/cli.d.ts.map +1 -1
  47. package/dist/cli.js +36 -2
  48. package/dist/cli.js.map +1 -1
  49. package/dist/constants.d.ts +3 -0
  50. package/dist/constants.d.ts.map +1 -1
  51. package/dist/languages/capabilities/index.d.ts +21 -12
  52. package/dist/languages/capabilities/index.d.ts.map +1 -1
  53. package/dist/languages/capabilities/index.js +47 -13
  54. package/dist/languages/capabilities/index.js.map +1 -1
  55. package/dist/languages/index.d.ts.map +1 -1
  56. package/dist/languages/index.js +11 -1
  57. package/dist/languages/index.js.map +1 -1
  58. package/dist/languages/java.d.ts +67 -0
  59. package/dist/languages/java.d.ts.map +1 -0
  60. package/dist/languages/java.js +419 -0
  61. package/dist/languages/java.js.map +1 -0
  62. package/dist/languages/kotlin.d.ts +52 -0
  63. package/dist/languages/kotlin.d.ts.map +1 -0
  64. package/dist/languages/kotlin.js +404 -0
  65. package/dist/languages/kotlin.js.map +1 -0
  66. package/dist/languages/types.d.ts +9 -1
  67. package/dist/languages/types.d.ts.map +1 -1
  68. package/dist/tools-cli.d.ts +16 -1
  69. package/dist/tools-cli.d.ts.map +1 -1
  70. package/dist/tools-cli.js +69 -6
  71. package/dist/tools-cli.js.map +1 -1
  72. package/dist/types.d.ts +12 -10
  73. package/dist/types.d.ts.map +1 -1
  74. package/package.json +2 -1
  75. package/templates/.claude/rules/java.md +11 -0
  76. package/templates/.claude/rules/kotlin.md +11 -0
  77. package/templates/configs/java/README.md +6 -0
  78. package/templates/configs/kotlin/README.md +6 -0
@@ -0,0 +1,404 @@
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
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.kotlin = void 0;
37
+ exports.mapDetektSeverity = mapDetektSeverity;
38
+ exports.parseDetektCheckstyleXml = parseDetektCheckstyleXml;
39
+ exports.extractKotlinImportsRaw = extractKotlinImportsRaw;
40
+ const fs = __importStar(require("fs"));
41
+ const os = __importStar(require("os"));
42
+ const path = __importStar(require("path"));
43
+ const jacoco_1 = require("../analyzers/tools/jacoco");
44
+ const osv_scanner_maven_1 = require("../analyzers/tools/osv-scanner-maven");
45
+ const exclusions_1 = require("../analyzers/tools/exclusions");
46
+ const runner_1 = require("../analyzers/tools/runner");
47
+ const tool_registry_1 = require("../analyzers/tools/tool-registry");
48
+ // ─── Detection ──────────────────────────────────────────────────────────────
49
+ /**
50
+ * Walk the project tree (bounded depth) looking for a `.kt` or `.kts`
51
+ * source file. Catches Kotlin projects that haven't yet adopted Gradle
52
+ * (rare but possible for libraries vendored as plain `src/` trees) and
53
+ * mixed JVM monorepos where Kotlin sits beside Java/Scala.
54
+ */
55
+ function hasKotlinSourceWithinDepth(cwd, maxDepth = 3) {
56
+ function search(dir, depth) {
57
+ if (depth > maxDepth)
58
+ return false;
59
+ let entries;
60
+ try {
61
+ entries = fs.readdirSync(dir, { withFileTypes: true });
62
+ }
63
+ catch {
64
+ return false;
65
+ }
66
+ for (const e of entries) {
67
+ if (e.name.startsWith('.') ||
68
+ ['node_modules', 'build', '.gradle', 'target'].includes(e.name)) {
69
+ continue;
70
+ }
71
+ if (e.isFile() && (e.name.endsWith('.kt') || e.name.endsWith('.kts')))
72
+ return true;
73
+ if (e.isDirectory() && search(path.join(dir, e.name), depth + 1))
74
+ return true;
75
+ }
76
+ return false;
77
+ }
78
+ return search(cwd, 0);
79
+ }
80
+ function detectKotlin(cwd) {
81
+ return ((0, runner_1.fileExists)(cwd, 'build.gradle.kts') ||
82
+ (0, runner_1.fileExists)(cwd, 'settings.gradle.kts') ||
83
+ (0, runner_1.fileExists)(cwd, 'build.gradle') ||
84
+ (0, runner_1.fileExists)(cwd, 'settings.gradle') ||
85
+ (0, runner_1.fileExists)(cwd, 'gradlew') ||
86
+ hasKotlinSourceWithinDepth(cwd, 3));
87
+ }
88
+ /**
89
+ * Manifest gate for capability providers. detectKotlin() activates the
90
+ * pack on bare `.kt` source dirs too (no build manifest), but several
91
+ * capabilities (depVulns, coverage) need a build-tool manifest to do
92
+ * anything useful. This helper is the second-line check inside each
93
+ * gather function — independent of detect() so providers fail cleanly
94
+ * even if D010 (inactive-pack pollution) is later closed by stack-aware
95
+ * `providersFor()`.
96
+ */
97
+ function hasKotlinBuildManifest(cwd) {
98
+ return ((0, runner_1.fileExists)(cwd, 'build.gradle.kts') ||
99
+ (0, runner_1.fileExists)(cwd, 'build.gradle') ||
100
+ (0, runner_1.fileExists)(cwd, 'settings.gradle.kts') ||
101
+ (0, runner_1.fileExists)(cwd, 'settings.gradle') ||
102
+ (0, runner_1.fileExists)(cwd, 'pom.xml') ||
103
+ (0, runner_1.fileExists)(cwd, 'gradle.lockfile'));
104
+ }
105
+ // ─── Lint (detekt) ──────────────────────────────────────────────────────────
106
+ /**
107
+ * Map detekt's lowercased Severity enum to dxkit's four-tier scheme.
108
+ * detekt 1.23+ emits `error|warning|info` (the `dev.detekt.api.Severity`
109
+ * enum lowercased — see CheckstyleOutputReportSpec in detekt's repo).
110
+ *
111
+ * Tiering rationale (no source-of-truth from detekt — they don't tier):
112
+ * - error → high (detekt's authors classify as a real defect)
113
+ * - warning → medium (style/maintainability concerns)
114
+ * - info → low (informational signals)
115
+ * - unknown → medium (defensive default — never trust an empty string)
116
+ *
117
+ * detekt's older `Defect`/`Style`/`Maintainability`/etc. taxonomy was
118
+ * collapsed in 1.23; we only need to recognise the lowercased modern
119
+ * names. Any future taxonomy change shows up here as an unknown bucket
120
+ * rather than silently miscounting.
121
+ */
122
+ function mapDetektSeverity(severity) {
123
+ const s = severity.toLowerCase();
124
+ if (s === 'error')
125
+ return 'high';
126
+ if (s === 'warning')
127
+ return 'medium';
128
+ if (s === 'info')
129
+ return 'low';
130
+ return 'medium';
131
+ }
132
+ /**
133
+ * Pure parser for detekt's Checkstyle XML report. The format is fixed
134
+ * (detekt's CheckstyleOutputReport renders verbatim per its 1.23 spec):
135
+ *
136
+ * <?xml version="1.0" encoding="UTF-8"?>
137
+ * <checkstyle version="4.3">
138
+ * <file name="src/main/Sample1.kt">
139
+ * <TAB><error line="11" column="1" severity="error" message="..." source="detekt.style/MagicNumber" />
140
+ * ...
141
+ * </file>
142
+ * </checkstyle>
143
+ *
144
+ * We tally `<error severity="...">` attribute values; we don't need the
145
+ * full file/line index because the lint envelope only carries
146
+ * SeverityCounts. Future enrichment (per-finding paths) would extend
147
+ * the parser without breaking this signature.
148
+ *
149
+ * Exported for unit tests; consumed by `gatherKotlinLintResult`.
150
+ */
151
+ function parseDetektCheckstyleXml(raw) {
152
+ const counts = { critical: 0, high: 0, medium: 0, low: 0 };
153
+ // Match each <error ...> element's severity attribute. `severity="X"`
154
+ // is mandatory in detekt's renderer; we still default to 'medium' for
155
+ // forward compat with hypothetical future detekt versions.
156
+ const re = /<error\s+[^>]*severity="([^"]*)"/g;
157
+ let m;
158
+ while ((m = re.exec(raw)) !== null) {
159
+ counts[mapDetektSeverity(m[1])]++;
160
+ }
161
+ return counts;
162
+ }
163
+ /**
164
+ * Single source of truth for the kotlin pack's lint gathering.
165
+ * Consumed by `kotlinLintProvider` (capability dispatcher).
166
+ *
167
+ * detekt is invoked with `--input <cwd>` to scan the whole project, and
168
+ * `--report xml:<tmp>` to produce a parseable Checkstyle XML. Default
169
+ * config is implicit; we don't pass `--build-upon-default-config` because
170
+ * 1) it's the default since detekt 1.23, and 2) projects that ship a
171
+ * `detekt.yml` get their own config respected automatically.
172
+ *
173
+ * Exit code: detekt exits 1 when issues are found and 2 on internal
174
+ * errors. We tolerate any non-fatal exit by reading the XML regardless;
175
+ * a missing/unparseable XML is treated as `unavailable`.
176
+ */
177
+ function gatherKotlinLintResult(cwd) {
178
+ if (!hasKotlinBuildManifest(cwd) && !hasKotlinSourceWithinDepth(cwd, 3)) {
179
+ return { kind: 'unavailable', reason: 'no kotlin source' };
180
+ }
181
+ const detekt = (0, tool_registry_1.findTool)(tool_registry_1.TOOL_DEFS.detekt, cwd);
182
+ if (!detekt.available || !detekt.path) {
183
+ return { kind: 'unavailable', reason: 'not installed' };
184
+ }
185
+ // detekt v1.23 cli supports `--report xml:<path>` only — no stdout
186
+ // form. Use a process-unique temp file so concurrent dxkit runs don't
187
+ // race on the same path.
188
+ const tmpFile = path.join(os.tmpdir(), `dxkit-detekt-${process.pid}-${Date.now()}.xml`);
189
+ try {
190
+ (0, runner_1.run)(`${detekt.path} --input . --report xml:${tmpFile} 2>/dev/null`, cwd, 120000);
191
+ let raw;
192
+ try {
193
+ raw = fs.readFileSync(tmpFile, 'utf-8');
194
+ }
195
+ catch {
196
+ return { kind: 'unavailable', reason: 'no detekt output' };
197
+ }
198
+ const counts = parseDetektCheckstyleXml(raw);
199
+ const envelope = { schemaVersion: 1, tool: 'detekt', counts };
200
+ return { kind: 'success', envelope };
201
+ }
202
+ finally {
203
+ try {
204
+ fs.unlinkSync(tmpFile);
205
+ }
206
+ catch {
207
+ /* best-effort cleanup */
208
+ }
209
+ }
210
+ }
211
+ const kotlinLintProvider = {
212
+ source: 'kotlin',
213
+ async gather(cwd) {
214
+ const outcome = gatherKotlinLintResult(cwd);
215
+ return outcome.kind === 'success' ? outcome.envelope : null;
216
+ },
217
+ };
218
+ // ─── Coverage (JaCoCo XML) ──────────────────────────────────────────────────
219
+ //
220
+ // Parser, finder, and gather glue all live in `src/analyzers/tools/jacoco.ts`
221
+ // — language-agnostic SSOT (CLAUDE.md rule #2). The kotlin pack just
222
+ // declares its provider and delegates. Java pack does the same.
223
+ const kotlinCoverageProvider = {
224
+ source: 'kotlin',
225
+ async gather(cwd) {
226
+ return (0, jacoco_1.gatherJaCoCoCoverageResult)(cwd);
227
+ },
228
+ };
229
+ // ─── DepVulns (osv-scanner against Maven manifests) ─────────────────────────
230
+ //
231
+ // Parser + gather glue live in `src/analyzers/tools/osv-scanner-maven.ts`
232
+ // — language-agnostic SSOT (CLAUDE.md rule #2). Both kotlin and java
233
+ // packs delegate. parseOsvScannerMavenFindings is exported there for
234
+ // unit tests.
235
+ const kotlinDepVulnsProvider = {
236
+ source: 'kotlin',
237
+ async gather(cwd) {
238
+ const outcome = await (0, osv_scanner_maven_1.gatherOsvScannerMavenDepVulnsResult)(cwd, 'kotlin');
239
+ return outcome.kind === 'success' ? outcome.envelope : null;
240
+ },
241
+ };
242
+ // ─── Imports (regex extraction, no resolver) ────────────────────────────────
243
+ /**
244
+ * Capture Kotlin import specifiers from source text. Handles both
245
+ * `import com.foo.Bar` (single) and `import com.foo.*` (wildcard) plus
246
+ * the `import com.foo.Bar as Baz` alias form. Comments are stripped
247
+ * conservatively — single-line `//` and inline `/* ... *\/`. Multi-line
248
+ * `/* ... *\/` blocks containing `import` statements are not extracted
249
+ * (acceptable: comment-out-import is intentional non-use).
250
+ *
251
+ * Exported for unit tests; consumed by `gatherKotlinImportsResult`.
252
+ */
253
+ function extractKotlinImportsRaw(content) {
254
+ const out = [];
255
+ // Strip line comments first so `// import foo` doesn't false-match.
256
+ const stripped = content.replace(/\/\/[^\n]*/g, '');
257
+ // `import` must start a statement (preceded only by whitespace at line
258
+ // start). Trailing `as Alias` is captured but discarded.
259
+ const re = /^\s*import\s+([A-Za-z_][\w.*]*)/gm;
260
+ let m;
261
+ while ((m = re.exec(stripped)) !== null) {
262
+ out.push(m[1]);
263
+ }
264
+ return out;
265
+ }
266
+ /**
267
+ * Enumerate `.kt` / `.kts` files under cwd and capture per-file imports.
268
+ * Kotlin packages don't 1:1 map to file paths (a package `com.foo` can
269
+ * span many files in many directories), so we don't produce `edges` —
270
+ * the resolution would be heuristic and is best left to graphify if
271
+ * downstream consumers need it. Mirrors the rust pack's choice.
272
+ */
273
+ function gatherKotlinImportsResult(cwd) {
274
+ const excludes = (0, exclusions_1.getFindExcludeFlags)(cwd);
275
+ const raw = (0, runner_1.run)(`find . -type f \\( -name "*.kt" -o -name "*.kts" \\) ${excludes} 2>/dev/null`, cwd);
276
+ if (!raw)
277
+ return null;
278
+ const extracted = new Map();
279
+ for (const line of raw.split('\n')) {
280
+ const p = line.trim();
281
+ if (!p)
282
+ continue;
283
+ const rel = p.replace(/^\.\//, '');
284
+ let content;
285
+ try {
286
+ content = fs.readFileSync(path.join(cwd, rel), 'utf-8');
287
+ }
288
+ catch {
289
+ continue;
290
+ }
291
+ extracted.set(rel, extractKotlinImportsRaw(content));
292
+ }
293
+ if (extracted.size === 0)
294
+ return null;
295
+ return {
296
+ schemaVersion: 1,
297
+ tool: 'kotlin-imports',
298
+ sourceExtensions: ['.kt', '.kts'],
299
+ extracted,
300
+ edges: new Map(),
301
+ };
302
+ }
303
+ const kotlinImportsProvider = {
304
+ source: 'kotlin',
305
+ async gather(cwd) {
306
+ return gatherKotlinImportsResult(cwd);
307
+ },
308
+ };
309
+ // ─── Test framework (gradle dependency text scan) ───────────────────────────
310
+ /**
311
+ * Detect the test framework by scanning gradle build files for known
312
+ * dependency coordinates. Order of precedence: Kotest → Spek → JUnit
313
+ * (Kotest/Spek typically sit alongside JUnit, and the more specific
314
+ * framework is the "primary" runner).
315
+ *
316
+ * Returns null when no gradle file exists or no known runner is
317
+ * declared — a polyglot Maven-only Kotlin project would skip this
318
+ * cleanly (no false positive on `pom.xml` lookups, until a Kotlin/Maven
319
+ * customer surfaces).
320
+ */
321
+ function gatherKotlinTestFrameworkResult(cwd) {
322
+ const gradleFiles = ['build.gradle.kts', 'build.gradle'];
323
+ let combinedText = '';
324
+ for (const rel of gradleFiles) {
325
+ if (!(0, runner_1.fileExists)(cwd, rel))
326
+ continue;
327
+ try {
328
+ combinedText += fs.readFileSync(path.join(cwd, rel), 'utf-8') + '\n';
329
+ }
330
+ catch {
331
+ /* ignore unreadable */
332
+ }
333
+ }
334
+ if (!combinedText)
335
+ return null;
336
+ if (combinedText.includes('io.kotest:')) {
337
+ return { schemaVersion: 1, tool: 'kotlin', name: 'kotest' };
338
+ }
339
+ if (combinedText.includes('org.spekframework:') || combinedText.includes('spek-')) {
340
+ return { schemaVersion: 1, tool: 'kotlin', name: 'spek' };
341
+ }
342
+ if (combinedText.includes('junit') || combinedText.includes('JUnit')) {
343
+ return { schemaVersion: 1, tool: 'kotlin', name: 'junit' };
344
+ }
345
+ return null;
346
+ }
347
+ const kotlinTestFrameworkProvider = {
348
+ source: 'kotlin',
349
+ async gather(cwd) {
350
+ return gatherKotlinTestFrameworkResult(cwd);
351
+ },
352
+ };
353
+ // ─── Pack export ────────────────────────────────────────────────────────────
354
+ exports.kotlin = {
355
+ id: 'kotlin',
356
+ displayName: 'Kotlin (Android)',
357
+ // `.kts` covers both Gradle build scripts and Kotlin scratch files; the
358
+ // dxkit analyzers treat them as first-class source so coverage and lint
359
+ // reach build logic too. Java files in mixed Kotlin/Java codebases are
360
+ // handled by the Java pack (when added) — not co-mingled here, to keep
361
+ // attribution clean.
362
+ sourceExtensions: ['.kt', '.kts'],
363
+ // JUnit-style (*Test/*Tests) plus Spek/Kotest's `*Spec.kt` convention.
364
+ testFilePatterns: ['*Test.kt', '*Tests.kt', '*Spec.kt'],
365
+ // `build` = Gradle build output (per-project + per-module),
366
+ // `.gradle` = Gradle daemon/cache state,
367
+ // `out` = IntelliJ IDE build output.
368
+ extraExcludes: ['build', '.gradle', 'out'],
369
+ detect: detectKotlin,
370
+ tools: ['detekt', 'osv-scanner'],
371
+ // Semgrep's Kotlin ruleset (`p/kotlin`) is sparse compared to Python/JS
372
+ // — skipping for now until coverage matures, mirroring the csharp pack.
373
+ semgrepRulesets: [],
374
+ capabilities: {
375
+ depVulns: kotlinDepVulnsProvider,
376
+ lint: kotlinLintProvider,
377
+ coverage: kotlinCoverageProvider,
378
+ imports: kotlinImportsProvider,
379
+ testFramework: kotlinTestFrameworkProvider,
380
+ // licenses: deliberately omitted. No canonical CLI license tool for
381
+ // Maven/Gradle equivalent to pip-licenses or cargo-license. Gradle
382
+ // plugins (jk1.dependency-license-report) require modifying user's
383
+ // build.gradle.kts which violates pack non-intrusiveness. Re-evaluate
384
+ // if a customer surfaces the need.
385
+ },
386
+ mapLintSeverity: mapDetektSeverity,
387
+ // ─── LP-recipe metadata ────────────────────────────────────────────────
388
+ permissions: ['Bash(./gradlew:*)', 'Bash(gradle:*)', 'Bash(detekt:*)'],
389
+ ruleFile: 'kotlin.md',
390
+ templateFiles: [],
391
+ cliBinaries: ['gradle', 'detekt'],
392
+ defaultVersion: '2.0.21',
393
+ projectYamlBlock: ({ config, enabled }) => [
394
+ ` kotlin:`,
395
+ ` enabled: ${enabled}`,
396
+ ` version: "${config.versions.kotlin ?? ''}"`,
397
+ ` quality:`,
398
+ ` coverage: ${config.coverageThreshold}`,
399
+ ` lint: true`,
400
+ ` typecheck: true`,
401
+ ` format: true`,
402
+ ].join('\n'),
403
+ };
404
+ //# sourceMappingURL=kotlin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../src/languages/kotlin.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,15 @@ export interface LanguageSupport {
34
34
  detect(cwd: string): boolean;
35
35
  tools: string[];
36
36
  semgrepRulesets: string[];
37
- mapLintSeverity?(code: string): LintSeverity;
37
+ /**
38
+ * Tier a lint rule code into a severity bucket. Accepts `string | null |
39
+ * undefined` because real lint output occasionally emits `ruleId: null`
40
+ * (eslint with rule-disabled diagnostics) or omits the field entirely
41
+ * (golangci-lint's "unknown linter" path). Implementations short-circuit
42
+ * to `'low'` for non-string input — both `mapEslintRuleSeverity` and the
43
+ * golangci-lint mapping rely on this contract for defensive parsing.
44
+ */
45
+ mapLintSeverity?(code: string | null | undefined): LintSeverity;
38
46
  /** Capability providers for the dispatcher channel. */
39
47
  capabilities?: LanguagePackCapabilities;
40
48
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/languages/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,UAAU,EACV,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAK9B,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;CAC/C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,UAAU,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAEpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAE1B,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IAE7C,uDAAuD;IACvD,YAAY,CAAC,EAAE,wBAAwB,CAAC;IAExC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAEvD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,MAAM,CAAC;IAEvD;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,MAAM,OAAO,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACjE;AAED,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/languages/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,UAAU,EACV,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAK9B,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;CAC/C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,UAAU,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAEpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;;;;OAOG;IACH,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAAC;IAEhE,uDAAuD;IACvD,YAAY,CAAC,EAAE,wBAAwB,CAAC;IAExC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAEvD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,MAAM,CAAC;IAEvD;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,MAAM,OAAO,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACjE;AAED,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -1,2 +1,17 @@
1
- export declare function runToolsCommand(targetPath: string, subCommand: string | undefined, autoYes: boolean): Promise<void>;
1
+ import { DetectedStack } from './types';
2
+ export interface ToolsInstallOptions {
3
+ toolName?: string;
4
+ all?: boolean;
5
+ }
6
+ /**
7
+ * Decide which tool names to consider for install given the options.
8
+ * Pure function — does not touch the filesystem; testable in isolation.
9
+ *
10
+ * - toolName set: just that one (returns [] if name is unknown — caller
11
+ * surfaces an error)
12
+ * - all: every key in TOOL_DEFS, sorted for stable output
13
+ * - default: tools required for the current-project stack
14
+ */
15
+ export declare function selectToolNames(languages: DetectedStack['languages'], options?: ToolsInstallOptions): string[];
16
+ export declare function runToolsCommand(targetPath: string, subCommand: string | undefined, autoYes: boolean, options?: ToolsInstallOptions): Promise<void>;
2
17
  //# sourceMappingURL=tools-cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools-cli.d.ts","sourceRoot":"","sources":["../src/tools-cli.ts"],"names":[],"mappings":"AAsNA,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAYf"}
1
+ {"version":3,"file":"tools-cli.d.ts","sourceRoot":"","sources":["../src/tools-cli.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAWxC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,EACrC,OAAO,GAAE,mBAAwB,GAChC,MAAM,EAAE,CAQV;AAwOD,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAYf"}
package/dist/tools-cli.js CHANGED
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.selectToolNames = selectToolNames;
36
37
  exports.runToolsCommand = runToolsCommand;
37
38
  /**
38
39
  * CLI handler for `vyuh-dxkit tools` subcommand.
@@ -40,6 +41,17 @@ exports.runToolsCommand = runToolsCommand;
40
41
  * Modes:
41
42
  * - `vyuh-dxkit tools` → list status for required tools
42
43
  * - `vyuh-dxkit tools install` → interactive install of missing tools
44
+ * for the current-project stack
45
+ * - `vyuh-dxkit tools install <name>` → install one named tool (any
46
+ * stack); useful for cross-stack dev
47
+ * work where you need a tool that
48
+ * your current project doesn't
49
+ * declare (e.g. installing
50
+ * `spotbugs` on a Node-only repo)
51
+ * - `vyuh-dxkit tools install --all` → enumerate every known tool in
52
+ * TOOL_DEFS and install missing
53
+ * ones; useful for setting up a
54
+ * cross-stack dev environment
43
55
  * - `vyuh-dxkit tools install --yes` → install all missing, no prompts
44
56
  */
45
57
  const readline = __importStar(require("readline/promises"));
@@ -48,6 +60,24 @@ const child_process_1 = require("child_process");
48
60
  const detect_1 = require("./detect");
49
61
  const logger = __importStar(require("./logger"));
50
62
  const tool_registry_1 = require("./analyzers/tools/tool-registry");
63
+ /**
64
+ * Decide which tool names to consider for install given the options.
65
+ * Pure function — does not touch the filesystem; testable in isolation.
66
+ *
67
+ * - toolName set: just that one (returns [] if name is unknown — caller
68
+ * surfaces an error)
69
+ * - all: every key in TOOL_DEFS, sorted for stable output
70
+ * - default: tools required for the current-project stack
71
+ */
72
+ function selectToolNames(languages, options = {}) {
73
+ if (options.toolName) {
74
+ return tool_registry_1.TOOL_DEFS[options.toolName] ? [options.toolName] : [];
75
+ }
76
+ if (options.all) {
77
+ return Object.keys(tool_registry_1.TOOL_DEFS).sort();
78
+ }
79
+ return (0, tool_registry_1.buildRequiredTools)(languages).map((r) => r.name);
80
+ }
51
81
  const LAYER_ORDER = {
52
82
  universal: 1,
53
83
  language: 2,
@@ -134,14 +164,47 @@ function runInstallCmd(cmd) {
134
164
  }
135
165
  }
136
166
  /** Interactive install of missing tools. */
137
- async function runInstall(targetPath, autoYes) {
138
- const statuses = showStatus(targetPath);
167
+ async function runInstall(targetPath, autoYes, options = {}) {
168
+ // Validate single-tool name early so we fail fast with a useful message.
169
+ if (options.toolName && !tool_registry_1.TOOL_DEFS[options.toolName]) {
170
+ logger.fail(`Unknown tool: ${options.toolName}`);
171
+ logger.info('Run `vyuh-dxkit tools list` to see available tools.');
172
+ process.exit(1);
173
+ }
174
+ // Default mode shows the full status table. Targeted modes skip it
175
+ // because the table would be either redundant (single tool) or huge
176
+ // (--all enumerates every TOOL_DEFS entry).
177
+ let statuses;
178
+ let modeLabel;
179
+ if (options.toolName || options.all) {
180
+ const stack = (0, detect_1.detect)(targetPath);
181
+ const names = selectToolNames(stack.languages, options);
182
+ statuses = names
183
+ .map((n) => {
184
+ const def = tool_registry_1.TOOL_DEFS[n];
185
+ return def ? (0, tool_registry_1.findTool)(def, targetPath) : null;
186
+ })
187
+ .filter((s) => s !== null);
188
+ modeLabel = options.toolName
189
+ ? `Install ${options.toolName}`
190
+ : `Install all known tools (${statuses.length} candidates, missing only)`;
191
+ }
192
+ else {
193
+ statuses = showStatus(targetPath);
194
+ modeLabel = 'Install missing tools';
195
+ }
139
196
  const missing = statuses.filter((s) => !s.available);
140
197
  if (missing.length === 0) {
198
+ if (options.toolName) {
199
+ logger.success(`${options.toolName} is already installed.`);
200
+ }
201
+ else if (options.all) {
202
+ logger.success(`All ${statuses.length} known tools already installed.`);
203
+ }
141
204
  return;
142
205
  }
143
206
  console.log('');
144
- logger.header('Install missing tools');
207
+ logger.header(modeLabel);
145
208
  const rl = autoYes ? null : readline.createInterface({ input: process_1.stdin, output: process_1.stdout });
146
209
  const results = [];
147
210
  try {
@@ -221,17 +284,17 @@ async function runInstall(targetPath, autoYes) {
221
284
  logger.dim('Run `vyuh-dxkit health` to use the newly installed tools.');
222
285
  }
223
286
  }
224
- async function runToolsCommand(targetPath, subCommand, autoYes) {
287
+ async function runToolsCommand(targetPath, subCommand, autoYes, options = {}) {
225
288
  if (!subCommand || subCommand === 'list' || subCommand === 'status') {
226
289
  showStatus(targetPath);
227
290
  return;
228
291
  }
229
292
  if (subCommand === 'install') {
230
- await runInstall(targetPath, autoYes);
293
+ await runInstall(targetPath, autoYes, options);
231
294
  return;
232
295
  }
233
296
  logger.fail(`Unknown tools subcommand: ${subCommand}`);
234
- logger.info('Usage: vyuh-dxkit tools [list|install] [path]');
297
+ logger.info('Usage: vyuh-dxkit tools [list|install] [<tool-name>] [path] [--all] [--yes]');
235
298
  process.exit(1);
236
299
  }
237
300
  //# sourceMappingURL=tools-cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools-cli.js","sourceRoot":"","sources":["../src/tools-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools-cli.js","sourceRoot":"","sources":["../src/tools-cli.ts"],"names":[],"mappings":"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"}