audit-tools 0.30.60 → 0.31.0
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/README.md +99 -234
- package/dist/audit/adapters/clippy.d.ts +23 -0
- package/dist/audit/adapters/clippy.d.ts.map +1 -0
- package/dist/audit/adapters/clippy.js +78 -0
- package/dist/audit/adapters/clippy.js.map +1 -0
- package/dist/audit/adapters/rubocop.d.ts +22 -0
- package/dist/audit/adapters/rubocop.d.ts.map +1 -0
- package/dist/audit/adapters/rubocop.js +72 -0
- package/dist/audit/adapters/rubocop.js.map +1 -0
- package/dist/audit/cli/dispatch/packetPrompt.d.ts +2 -1
- package/dist/audit/cli/dispatch/packetPrompt.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/packetPrompt.js +22 -4
- package/dist/audit/cli/dispatch/packetPrompt.js.map +1 -1
- package/dist/audit/cli/dispatch.d.ts.map +1 -1
- package/dist/audit/cli/dispatch.js +12 -1
- package/dist/audit/cli/dispatch.js.map +1 -1
- package/dist/audit/extractors/analyzers/acquisitionEngine.d.ts +8 -0
- package/dist/audit/extractors/analyzers/acquisitionEngine.d.ts.map +1 -1
- package/dist/audit/extractors/analyzers/acquisitionEngine.js +16 -0
- package/dist/audit/extractors/analyzers/acquisitionEngine.js.map +1 -1
- package/dist/audit/extractors/analyzers/binaryAcquisition.d.ts +16 -2
- package/dist/audit/extractors/analyzers/binaryAcquisition.d.ts.map +1 -1
- package/dist/audit/extractors/analyzers/binaryAcquisition.js +29 -1
- package/dist/audit/extractors/analyzers/binaryAcquisition.js.map +1 -1
- package/dist/audit/extractors/analyzers/candidates.d.ts +40 -1
- package/dist/audit/extractors/analyzers/candidates.d.ts.map +1 -1
- package/dist/audit/extractors/analyzers/candidates.js +387 -2
- package/dist/audit/extractors/analyzers/candidates.js.map +1 -1
- package/dist/audit/orchestrator/knipGraphCrosscheck.d.ts +65 -0
- package/dist/audit/orchestrator/knipGraphCrosscheck.d.ts.map +1 -0
- package/dist/audit/orchestrator/knipGraphCrosscheck.js +85 -0
- package/dist/audit/orchestrator/knipGraphCrosscheck.js.map +1 -0
- package/dist/audit/validation/auditResults.d.ts.map +1 -1
- package/dist/audit/validation/auditResults.js +9 -0
- package/dist/audit/validation/auditResults.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
|
-
import { detectNodeEcosystem, detectPythonEcosystem, } from "./acquisitionEngine.js";
|
|
3
|
+
import { detectNodeEcosystem, detectPythonEcosystem, detectRustEcosystem, detectRubyEcosystem, detectDockerEcosystem, detectGithubActionsEcosystem, } from "./acquisitionEngine.js";
|
|
4
|
+
import { parseClippy } from "../../adapters/clippy.js";
|
|
5
|
+
import { parseRubocop } from "../../adapters/rubocop.js";
|
|
4
6
|
/**
|
|
5
7
|
* The value-curated EXTERNAL analyzer candidate registry. This is the only place
|
|
6
8
|
* concrete tools are named; the engine is tool-agnostic. gitleaks is the DEFAULT
|
|
@@ -357,6 +359,383 @@ const jscpdCandidate = {
|
|
|
357
359
|
reportFile: () => jscpdReportPath(),
|
|
358
360
|
parse: parseJscpd,
|
|
359
361
|
};
|
|
362
|
+
// Pinned osv-scanner release (own-vs-acquire: acquire the mature Go binary,
|
|
363
|
+
// pinned for reproducibility). Distinct from gitleaks in one respect worth
|
|
364
|
+
// noting: osv-scanner's release assets ARE the raw executable
|
|
365
|
+
// (`osv-scanner_linux_amd64`, `osv-scanner_windows_amd64.exe`) — not an
|
|
366
|
+
// archive — so its BinarySpec sets `archived: false` (binaryAcquisition.ts).
|
|
367
|
+
const OSV_SCANNER_VERSION = "2.4.0";
|
|
368
|
+
const OSV_SCANNER_RELEASE_BASE = `https://github.com/google/osv-scanner/releases/download/v${OSV_SCANNER_VERSION}`;
|
|
369
|
+
/** Map Node's platform/arch onto the osv-scanner release asset naming. */
|
|
370
|
+
function osvScannerAsset(platform, arch) {
|
|
371
|
+
const os = platform === "win32"
|
|
372
|
+
? "windows"
|
|
373
|
+
: platform === "darwin"
|
|
374
|
+
? "darwin"
|
|
375
|
+
: platform === "linux"
|
|
376
|
+
? "linux"
|
|
377
|
+
: null;
|
|
378
|
+
if (!os)
|
|
379
|
+
return null;
|
|
380
|
+
// osv-scanner only publishes amd64/arm64 assets (no 32-bit/arm variants).
|
|
381
|
+
const cpu = arch === "x64" ? "amd64" : arch === "arm64" ? "arm64" : null;
|
|
382
|
+
if (!cpu)
|
|
383
|
+
return null;
|
|
384
|
+
const ext = os === "windows" ? ".exe" : "";
|
|
385
|
+
return `osv-scanner_${os}_${cpu}${ext}`;
|
|
386
|
+
}
|
|
387
|
+
const OSV_SCANNER_BINARY = {
|
|
388
|
+
binaryName: "osv-scanner",
|
|
389
|
+
version: OSV_SCANNER_VERSION,
|
|
390
|
+
versionProbeArgs: ["osv-scanner", "--version"],
|
|
391
|
+
assetFor: osvScannerAsset,
|
|
392
|
+
checksumsAsset: "osv-scanner_SHA256SUMS",
|
|
393
|
+
releaseUrlForAsset: (asset) => `${OSV_SCANNER_RELEASE_BASE}/${asset}`,
|
|
394
|
+
archived: false,
|
|
395
|
+
};
|
|
396
|
+
/**
|
|
397
|
+
* Parse osv-scanner's `--format json` stdout — grounded against
|
|
398
|
+
* `pkg/models/results.go` (`VulnerabilityResults`) in google/osv-scanner, not
|
|
399
|
+
* guessed: `{ results: [{ source: {path}, packages: [{ package: {name,
|
|
400
|
+
* version}, vulnerabilities: [...], groups: [{ids, max_severity}] }] }] }`.
|
|
401
|
+
* One item per GROUP (osv-scanner's own alias-collapsed dedup unit), not per
|
|
402
|
+
* raw vulnerability id, so CVE/GHSA aliases for the same underlying issue
|
|
403
|
+
* don't fan out into duplicate items.
|
|
404
|
+
*/
|
|
405
|
+
function parseOsvScanner(stdout) {
|
|
406
|
+
let payload;
|
|
407
|
+
try {
|
|
408
|
+
payload = JSON.parse(stdout || "{}");
|
|
409
|
+
}
|
|
410
|
+
catch {
|
|
411
|
+
return [];
|
|
412
|
+
}
|
|
413
|
+
const results = payload && typeof payload === "object" && Array.isArray(payload.results)
|
|
414
|
+
? (payload.results)
|
|
415
|
+
: [];
|
|
416
|
+
const items = [];
|
|
417
|
+
for (const result of results) {
|
|
418
|
+
if (!result || typeof result !== "object")
|
|
419
|
+
continue;
|
|
420
|
+
const source = (result.source ?? {});
|
|
421
|
+
const sourcePath = typeof source.path === "string" ? source.path : "";
|
|
422
|
+
const packages = Array.isArray(result.packages) ? result.packages : [];
|
|
423
|
+
for (const pkg of packages) {
|
|
424
|
+
if (!pkg || typeof pkg !== "object")
|
|
425
|
+
continue;
|
|
426
|
+
const pkgRecord = pkg;
|
|
427
|
+
const pkgInfo = (pkgRecord.package ?? {});
|
|
428
|
+
const pkgName = typeof pkgInfo.name === "string" ? pkgInfo.name : "unknown";
|
|
429
|
+
const pkgVersion = typeof pkgInfo.version === "string" ? pkgInfo.version : "";
|
|
430
|
+
const vulns = Array.isArray(pkgRecord.vulnerabilities)
|
|
431
|
+
? pkgRecord.vulnerabilities
|
|
432
|
+
: [];
|
|
433
|
+
const groups = Array.isArray(pkgRecord.groups)
|
|
434
|
+
? pkgRecord.groups
|
|
435
|
+
: [];
|
|
436
|
+
for (const group of groups) {
|
|
437
|
+
if (!group || typeof group !== "object")
|
|
438
|
+
continue;
|
|
439
|
+
const ids = Array.isArray(group.ids)
|
|
440
|
+
? group.ids.filter((id) => typeof id === "string")
|
|
441
|
+
: [];
|
|
442
|
+
if (ids.length === 0)
|
|
443
|
+
continue;
|
|
444
|
+
const maxSeverity = typeof group.max_severity === "string" ? group.max_severity.toUpperCase() : "";
|
|
445
|
+
const severity = maxSeverity.includes("CRITICAL") || maxSeverity.includes("HIGH")
|
|
446
|
+
? "high"
|
|
447
|
+
: maxSeverity.includes("LOW")
|
|
448
|
+
? "low"
|
|
449
|
+
: "medium";
|
|
450
|
+
const primary = vulns.find((v) => v && typeof v === "object" && ids.includes(v.id));
|
|
451
|
+
const summaryText = primary && typeof primary.summary === "string" && primary.summary.trim().length > 0
|
|
452
|
+
? primary.summary
|
|
453
|
+
: primary && typeof primary.details === "string"
|
|
454
|
+
? primary.details.slice(0, 200)
|
|
455
|
+
: `known vulnerability in ${pkgName}`;
|
|
456
|
+
items.push({
|
|
457
|
+
id: `osv:${ids.join(",")}:${pkgName}@${pkgVersion}`,
|
|
458
|
+
category: "security",
|
|
459
|
+
severity,
|
|
460
|
+
path: sourcePath,
|
|
461
|
+
summary: `osv-scanner: ${pkgName}@${pkgVersion} — ${ids.join(", ")} — ${summaryText}`,
|
|
462
|
+
rule: ids[0],
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
return items;
|
|
468
|
+
}
|
|
469
|
+
const osvScannerCandidate = {
|
|
470
|
+
id: "osv-scanner",
|
|
471
|
+
runner: "binary",
|
|
472
|
+
spec: OSV_SCANNER_VERSION,
|
|
473
|
+
binary: OSV_SCANNER_BINARY,
|
|
474
|
+
// CONSENT-GATED: network-dependent (queries the OSV vulnerability database)
|
|
475
|
+
// and heavier than gitleaks — same tier as semgrep/eslint/knip/jscpd.
|
|
476
|
+
defaultRun: false,
|
|
477
|
+
// Ecosystem-agnostic by design: osv-scanner recursively discovers whatever
|
|
478
|
+
// lockfiles exist (npm/pip/cargo/go/…) itself, so no per-ecosystem marker
|
|
479
|
+
// gate is needed here (mirrors gitleaks' `() => true`).
|
|
480
|
+
detect: () => true,
|
|
481
|
+
buildArgv: (prefix, root) => [...prefix, "scan", "--format", "json", "--recursive", root],
|
|
482
|
+
parse: parseOsvScanner,
|
|
483
|
+
};
|
|
484
|
+
// ---------------------------------------------------------------------------
|
|
485
|
+
// clippy — Rust lints via `cargo clippy --message-format=json` (read-only).
|
|
486
|
+
// ---------------------------------------------------------------------------
|
|
487
|
+
const clippyCandidate = {
|
|
488
|
+
id: "clippy",
|
|
489
|
+
runner: "cargo",
|
|
490
|
+
// The `cargo` runner prefix is `["cargo", spec]`; spec is the cargo subcommand.
|
|
491
|
+
spec: "clippy",
|
|
492
|
+
// CONSENT-GATED: compiles the crate (heavier), needs the Rust toolchain.
|
|
493
|
+
defaultRun: false,
|
|
494
|
+
detect: (root) => detectRustEcosystem(root),
|
|
495
|
+
// Read-only: NO `--fix`. `--message-format=json` streams NDJSON diagnostics;
|
|
496
|
+
// clippy's own args go after `--`. The engine spawns with cwd=root so no
|
|
497
|
+
// positional path is needed.
|
|
498
|
+
buildArgv: (prefix) => [...prefix, "--message-format=json", "--quiet"],
|
|
499
|
+
parse: parseClippy,
|
|
500
|
+
};
|
|
501
|
+
// ---------------------------------------------------------------------------
|
|
502
|
+
// rubocop — Ruby lints via `bundle exec rubocop --format json` (read-only).
|
|
503
|
+
// ---------------------------------------------------------------------------
|
|
504
|
+
const rubocopCandidate = {
|
|
505
|
+
id: "rubocop",
|
|
506
|
+
runner: "bundle",
|
|
507
|
+
// The `bundle` runner prefix is `["bundle", "exec", spec]`.
|
|
508
|
+
spec: "rubocop",
|
|
509
|
+
// CONSENT-GATED: needs the project's bundle/ruby toolchain + rubocop config.
|
|
510
|
+
defaultRun: false,
|
|
511
|
+
detect: (root) => detectRubyEcosystem(root),
|
|
512
|
+
// Read-only: NO `--autocorrect`/`-a`/`-A`. `--format json` → single JSON doc.
|
|
513
|
+
buildArgv: (prefix, root) => [...prefix, "--format", "json", root],
|
|
514
|
+
parse: parseRubocop,
|
|
515
|
+
};
|
|
516
|
+
// ---------------------------------------------------------------------------
|
|
517
|
+
// hadolint — Dockerfile linter, shipped as a RAW (non-archived) release binary
|
|
518
|
+
// (`hadolint-linux-x86_64`, `hadolint-windows-x86_64.exe`, …). Each asset has
|
|
519
|
+
// its OWN `<asset>.sha256` checksum file (not a release-wide checksums.txt).
|
|
520
|
+
// ---------------------------------------------------------------------------
|
|
521
|
+
const HADOLINT_VERSION = "2.14.0";
|
|
522
|
+
const HADOLINT_RELEASE_BASE = `https://github.com/hadolint/hadolint/releases/download/v${HADOLINT_VERSION}`;
|
|
523
|
+
/** Map Node's platform/arch onto hadolint's release asset naming. */
|
|
524
|
+
function hadolintAsset(platform, arch) {
|
|
525
|
+
if (platform === "win32") {
|
|
526
|
+
// hadolint publishes only an x86_64 Windows asset.
|
|
527
|
+
return arch === "x64" ? "hadolint-windows-x86_64.exe" : null;
|
|
528
|
+
}
|
|
529
|
+
const os = platform === "darwin" ? "macos" : platform === "linux" ? "linux" : null;
|
|
530
|
+
if (!os)
|
|
531
|
+
return null;
|
|
532
|
+
const cpu = arch === "x64" ? "x86_64" : arch === "arm64" ? "arm64" : null;
|
|
533
|
+
if (!cpu)
|
|
534
|
+
return null;
|
|
535
|
+
return `hadolint-${os}-${cpu}`;
|
|
536
|
+
}
|
|
537
|
+
const HADOLINT_BINARY = {
|
|
538
|
+
binaryName: "hadolint",
|
|
539
|
+
version: HADOLINT_VERSION,
|
|
540
|
+
versionProbeArgs: ["hadolint", "--version"],
|
|
541
|
+
assetFor: hadolintAsset,
|
|
542
|
+
// Per-asset checksum file: `<asset>.sha256` holds `<sha256> *<asset>`.
|
|
543
|
+
checksumsAsset: (asset) => `${asset}.sha256`,
|
|
544
|
+
releaseUrlForAsset: (asset) => `${HADOLINT_RELEASE_BASE}/${asset}`,
|
|
545
|
+
// The release asset IS the raw executable — no archive to extract.
|
|
546
|
+
archived: false,
|
|
547
|
+
};
|
|
548
|
+
/**
|
|
549
|
+
* Parse hadolint's `--format json` stdout — a FLAT array of objects grounded
|
|
550
|
+
* against hadolint's JSON formatter: `[{ file, line, column, code, level,
|
|
551
|
+
* message }]`. `level` ∈ error|warning|info|style. Degrades to `[]` on
|
|
552
|
+
* empty/malformed/non-array input.
|
|
553
|
+
*/
|
|
554
|
+
function parseHadolint(stdout) {
|
|
555
|
+
let findings;
|
|
556
|
+
try {
|
|
557
|
+
findings = JSON.parse(stdout || "[]");
|
|
558
|
+
}
|
|
559
|
+
catch {
|
|
560
|
+
return [];
|
|
561
|
+
}
|
|
562
|
+
if (!Array.isArray(findings))
|
|
563
|
+
return [];
|
|
564
|
+
return findings
|
|
565
|
+
.filter((f) => Boolean(f) && typeof f === "object")
|
|
566
|
+
.map((f) => {
|
|
567
|
+
const file = typeof f.file === "string" ? f.file : "";
|
|
568
|
+
const line = typeof f.line === "number" ? f.line : undefined;
|
|
569
|
+
const code = typeof f.code === "string" && f.code.length > 0 ? f.code : "hadolint";
|
|
570
|
+
const level = typeof f.level === "string" ? f.level.toLowerCase() : "";
|
|
571
|
+
const severity = level === "error" ? "high" : level === "warning" ? "medium" : "low";
|
|
572
|
+
const message = typeof f.message === "string" && f.message.trim().length > 0 ? f.message : code;
|
|
573
|
+
return {
|
|
574
|
+
id: `hadolint:${code}:${file}:${line ?? 0}`,
|
|
575
|
+
category: "config_deployment",
|
|
576
|
+
severity,
|
|
577
|
+
path: file,
|
|
578
|
+
line_start: line,
|
|
579
|
+
summary: message,
|
|
580
|
+
rule: code,
|
|
581
|
+
};
|
|
582
|
+
})
|
|
583
|
+
.filter((item) => item.path.length > 0);
|
|
584
|
+
}
|
|
585
|
+
const hadolintCandidate = {
|
|
586
|
+
id: "hadolint",
|
|
587
|
+
runner: "binary",
|
|
588
|
+
spec: HADOLINT_VERSION,
|
|
589
|
+
binary: HADOLINT_BINARY,
|
|
590
|
+
// CONSENT-GATED: same tier as the other acquired binaries.
|
|
591
|
+
defaultRun: false,
|
|
592
|
+
detect: (root) => detectDockerEcosystem(root),
|
|
593
|
+
// Read-only by nature (a linter). `--format json`; lint the repo's Dockerfile.
|
|
594
|
+
buildArgv: (prefix, root) => [...prefix, "--format", "json", join(root, "Dockerfile")],
|
|
595
|
+
parse: parseHadolint,
|
|
596
|
+
};
|
|
597
|
+
// ---------------------------------------------------------------------------
|
|
598
|
+
// actionlint — GitHub Actions workflow linter, shipped as an ARCHIVED release
|
|
599
|
+
// asset (`actionlint_<v>_<os>_<arch>.tar.gz`/`.zip`) + a release-wide
|
|
600
|
+
// `actionlint_<v>_checksums.txt`.
|
|
601
|
+
// ---------------------------------------------------------------------------
|
|
602
|
+
const ACTIONLINT_VERSION = "1.7.12";
|
|
603
|
+
const ACTIONLINT_RELEASE_BASE = `https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VERSION}`;
|
|
604
|
+
/** Map Node's platform/arch onto actionlint's release asset naming. */
|
|
605
|
+
function actionlintAsset(platform, arch) {
|
|
606
|
+
const os = platform === "win32"
|
|
607
|
+
? "windows"
|
|
608
|
+
: platform === "darwin"
|
|
609
|
+
? "darwin"
|
|
610
|
+
: platform === "linux"
|
|
611
|
+
? "linux"
|
|
612
|
+
: null;
|
|
613
|
+
if (!os)
|
|
614
|
+
return null;
|
|
615
|
+
const cpu = arch === "x64"
|
|
616
|
+
? "amd64"
|
|
617
|
+
: arch === "arm64"
|
|
618
|
+
? "arm64"
|
|
619
|
+
: arch === "ia32"
|
|
620
|
+
? "386"
|
|
621
|
+
: arch === "arm"
|
|
622
|
+
? "armv6"
|
|
623
|
+
: null;
|
|
624
|
+
if (!cpu)
|
|
625
|
+
return null;
|
|
626
|
+
// actionlint does not publish a windows/armv6 asset.
|
|
627
|
+
if (os === "windows" && cpu === "armv6")
|
|
628
|
+
return null;
|
|
629
|
+
const ext = os === "windows" ? "zip" : "tar.gz";
|
|
630
|
+
return `actionlint_${ACTIONLINT_VERSION}_${os}_${cpu}.${ext}`;
|
|
631
|
+
}
|
|
632
|
+
const ACTIONLINT_BINARY = {
|
|
633
|
+
binaryName: "actionlint",
|
|
634
|
+
version: ACTIONLINT_VERSION,
|
|
635
|
+
versionProbeArgs: ["actionlint", "--version"],
|
|
636
|
+
assetFor: actionlintAsset,
|
|
637
|
+
checksumsAsset: `actionlint_${ACTIONLINT_VERSION}_checksums.txt`,
|
|
638
|
+
releaseUrlForAsset: (asset) => `${ACTIONLINT_RELEASE_BASE}/${asset}`,
|
|
639
|
+
// .tar.gz / .zip archive → extract (archived defaults to true; set explicitly).
|
|
640
|
+
archived: true,
|
|
641
|
+
};
|
|
642
|
+
/**
|
|
643
|
+
* Parse actionlint's `-format '{{json .}}'` stdout — a JSON array grounded
|
|
644
|
+
* against actionlint's template output: `[{ message, filepath, line, column,
|
|
645
|
+
* kind }]`. Degrades to `[]` on empty/malformed/non-array input.
|
|
646
|
+
*/
|
|
647
|
+
function parseActionlint(stdout) {
|
|
648
|
+
let findings;
|
|
649
|
+
try {
|
|
650
|
+
findings = JSON.parse(stdout || "[]");
|
|
651
|
+
}
|
|
652
|
+
catch {
|
|
653
|
+
return [];
|
|
654
|
+
}
|
|
655
|
+
if (!Array.isArray(findings))
|
|
656
|
+
return [];
|
|
657
|
+
return findings
|
|
658
|
+
.filter((f) => Boolean(f) && typeof f === "object")
|
|
659
|
+
.map((f) => {
|
|
660
|
+
const path = typeof f.filepath === "string" ? f.filepath : "";
|
|
661
|
+
const line = typeof f.line === "number" ? f.line : undefined;
|
|
662
|
+
const kind = typeof f.kind === "string" && f.kind.length > 0 ? f.kind : "actionlint";
|
|
663
|
+
const message = typeof f.message === "string" && f.message.trim().length > 0 ? f.message : kind;
|
|
664
|
+
return {
|
|
665
|
+
id: `actionlint:${kind}:${path}:${line ?? 0}`,
|
|
666
|
+
category: "config_deployment",
|
|
667
|
+
severity: "medium",
|
|
668
|
+
path,
|
|
669
|
+
line_start: line,
|
|
670
|
+
summary: message,
|
|
671
|
+
rule: kind,
|
|
672
|
+
};
|
|
673
|
+
})
|
|
674
|
+
.filter((item) => item.path.length > 0);
|
|
675
|
+
}
|
|
676
|
+
const actionlintCandidate = {
|
|
677
|
+
id: "actionlint",
|
|
678
|
+
runner: "binary",
|
|
679
|
+
spec: ACTIONLINT_VERSION,
|
|
680
|
+
binary: ACTIONLINT_BINARY,
|
|
681
|
+
// CONSENT-GATED: same tier as the other acquired binaries.
|
|
682
|
+
defaultRun: false,
|
|
683
|
+
detect: (root) => detectGithubActionsEcosystem(root),
|
|
684
|
+
// Read-only by nature. `-format '{{json .}}'` → JSON array on stdout; run with
|
|
685
|
+
// cwd=root so actionlint discovers `.github/workflows/` itself.
|
|
686
|
+
buildArgv: (prefix) => [...prefix, "-format", "{{json .}}"],
|
|
687
|
+
parse: parseActionlint,
|
|
688
|
+
};
|
|
689
|
+
// ---------------------------------------------------------------------------
|
|
690
|
+
// type-coverage — TypeScript type-coverage ratio reporter via npx (read-only).
|
|
691
|
+
// ---------------------------------------------------------------------------
|
|
692
|
+
/**
|
|
693
|
+
* Parse type-coverage's `--json --detail` stdout — grounded against
|
|
694
|
+
* type-coverage's JSON shape: `{ percentage, total, correct, anys: [{ file,
|
|
695
|
+
* line, character, text }] }`. Each `anys` entry is one implicit/explicit `any`
|
|
696
|
+
* site; degrades to `[]` on empty/malformed input or a missing `anys` array.
|
|
697
|
+
*/
|
|
698
|
+
function parseTypeCoverage(stdout) {
|
|
699
|
+
let payload;
|
|
700
|
+
try {
|
|
701
|
+
payload = JSON.parse(stdout || "{}");
|
|
702
|
+
}
|
|
703
|
+
catch {
|
|
704
|
+
return [];
|
|
705
|
+
}
|
|
706
|
+
const anys = payload && typeof payload === "object" && Array.isArray(payload.anys)
|
|
707
|
+
? (payload.anys)
|
|
708
|
+
: [];
|
|
709
|
+
return anys
|
|
710
|
+
.filter((a) => Boolean(a) && typeof a === "object")
|
|
711
|
+
.map((a) => {
|
|
712
|
+
const file = typeof a.file === "string" ? a.file : "";
|
|
713
|
+
const line = typeof a.line === "number" ? a.line : undefined;
|
|
714
|
+
const text = typeof a.text === "string" && a.text.length > 0 ? a.text : "untyped value";
|
|
715
|
+
return {
|
|
716
|
+
id: `type-coverage:${file}:${line ?? 0}`,
|
|
717
|
+
category: "maintainability",
|
|
718
|
+
severity: "low",
|
|
719
|
+
path: file,
|
|
720
|
+
line_start: line,
|
|
721
|
+
summary: `type-coverage: '${text}' has an implicit/explicit any — add an explicit type.`,
|
|
722
|
+
rule: "type-coverage-any",
|
|
723
|
+
};
|
|
724
|
+
})
|
|
725
|
+
.filter((item) => item.path.length > 0);
|
|
726
|
+
}
|
|
727
|
+
const typeCoverageCandidate = {
|
|
728
|
+
id: "type-coverage",
|
|
729
|
+
runner: "npx",
|
|
730
|
+
spec: "type-coverage@2",
|
|
731
|
+
// CONSENT-GATED: needs a TS project; same tier as eslint/knip.
|
|
732
|
+
defaultRun: false,
|
|
733
|
+
detect: (root) => detectNodeEcosystem(root),
|
|
734
|
+
// Read-only. `--json --detail` prints per-`any` sites as JSON on stdout; run
|
|
735
|
+
// with cwd=root so it resolves the project tsconfig itself.
|
|
736
|
+
buildArgv: (prefix) => [...prefix, "--json", "--detail"],
|
|
737
|
+
parse: parseTypeCoverage,
|
|
738
|
+
};
|
|
360
739
|
/** The curated external analyzer candidate set. gitleaks is the default member. */
|
|
361
740
|
export const EXTERNAL_ANALYZER_CANDIDATES = [
|
|
362
741
|
gitleaksCandidate,
|
|
@@ -364,6 +743,12 @@ export const EXTERNAL_ANALYZER_CANDIDATES = [
|
|
|
364
743
|
eslintCandidate,
|
|
365
744
|
knipCandidate,
|
|
366
745
|
jscpdCandidate,
|
|
746
|
+
osvScannerCandidate,
|
|
747
|
+
clippyCandidate,
|
|
748
|
+
rubocopCandidate,
|
|
749
|
+
hadolintCandidate,
|
|
750
|
+
actionlintCandidate,
|
|
751
|
+
typeCoverageCandidate,
|
|
367
752
|
];
|
|
368
|
-
export { gitleaksCandidate, semgrepCandidate, knipCandidate, parseKnip, eslintCandidate, parseGitleaks, GITLEAKS_VERSION, jscpdCandidate, parseJscpd, };
|
|
753
|
+
export { gitleaksCandidate, semgrepCandidate, knipCandidate, parseKnip, eslintCandidate, parseGitleaks, GITLEAKS_VERSION, jscpdCandidate, parseJscpd, osvScannerCandidate, parseOsvScanner, OSV_SCANNER_VERSION, clippyCandidate, rubocopCandidate, hadolintCandidate, parseHadolint, HADOLINT_VERSION, actionlintCandidate, parseActionlint, ACTIONLINT_VERSION, typeCoverageCandidate, parseTypeCoverage, };
|
|
369
754
|
//# sourceMappingURL=candidates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/candidates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/candidates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { GraphBundle, SurfaceManifest, CriticalFlowManifest } from "audit-tools/shared";
|
|
2
|
+
/**
|
|
3
|
+
* Render-time knip↔graph cross-check tag for a single knip "unused export" lead.
|
|
4
|
+
*
|
|
5
|
+
* - `LIKELY-DEAD` — the lead file has normalized in-degree 0, is NOT a known
|
|
6
|
+
* entrypoint, AND its own language analyzer actually ran
|
|
7
|
+
* (present in `graph_bundle.analyzers_used`). Only then is a
|
|
8
|
+
* zero-in-degree verdict trustworthy for this file.
|
|
9
|
+
* - `HAS-IMPORTERS` — the lead file has normalized in-degree > 0 (something
|
|
10
|
+
* imports it) → refutes "dead".
|
|
11
|
+
* - `ENTRYPOINT` — in-degree 0 but the file is a surface/critical-flow
|
|
12
|
+
* entrypoint → reachable by definition, not dead.
|
|
13
|
+
* - `UNVERIFIED` — `analyzers_used` is empty OR the lead's language analyzer
|
|
14
|
+
* is absent from it → per-file graph fidelity is unknown, so
|
|
15
|
+
* the graph cannot confirm or refute deadness.
|
|
16
|
+
*/
|
|
17
|
+
export type KnipGraphTag = "LIKELY-DEAD" | "HAS-IMPORTERS" | "UNVERIFIED" | "ENTRYPOINT";
|
|
18
|
+
/**
|
|
19
|
+
* A pre-derived, normalized index over one {@link GraphBundle} +
|
|
20
|
+
* surface/critical-flow entrypoints, ready for O(1) lookups per lead.
|
|
21
|
+
*
|
|
22
|
+
* CE-001: `deriveGraphSignals` keys fanIn by the RAW `edge.to`, so a
|
|
23
|
+
* Windows-backslash / mixed-case graph node id (`src\\Foo.ts`) never matches a
|
|
24
|
+
* POSIX-normalized knip lead path (`src/Foo.ts`). This index re-keys EVERY node
|
|
25
|
+
* (both `from` and `to` endpoints) and every entrypoint through
|
|
26
|
+
* `normalizeNodeKey` (POSIX separators, `./` stripped, lower-cased) so the lead
|
|
27
|
+
* path — normalized the same way — matches regardless of separator or case.
|
|
28
|
+
*/
|
|
29
|
+
export interface KnipGraphIndex {
|
|
30
|
+
/** Normalized node id → incoming edge count over the structural edge set. */
|
|
31
|
+
inDegree: Map<string, number>;
|
|
32
|
+
/** Normalized entrypoint paths from surface_manifest + critical_flows. */
|
|
33
|
+
entrypoints: Set<string>;
|
|
34
|
+
/** Analyzer ids that actually ran (from graph_bundle.analyzers_used). */
|
|
35
|
+
analyzersUsed: Set<string>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Normalize a graph node id / path / entrypoint to one comparable key:
|
|
39
|
+
* backslashes → forward slashes, leading `./` stripped, lower-cased. Single
|
|
40
|
+
* source so the index and every lookup key agree (CE-001).
|
|
41
|
+
*/
|
|
42
|
+
export declare function normalizeNodeKey(path: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Map a lead file's extension to the id of the language analyzer that owns it
|
|
45
|
+
* (CE-003). Reuses the analyzer registry's own `supports(file)` predicate
|
|
46
|
+
* so extension→analyzer stays single-sourced in the analyzers, not duplicated.
|
|
47
|
+
* Returns null when no registered analyzer claims the file.
|
|
48
|
+
*/
|
|
49
|
+
export declare function analyzerIdForFile(path: string): string | null;
|
|
50
|
+
/**
|
|
51
|
+
* Build the normalized cross-check index from the three artifacts. Degrades to
|
|
52
|
+
* empty (never throws) on any missing/malformed input — an absent bundle yields
|
|
53
|
+
* an empty index whose every lead classifies UNVERIFIED.
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildKnipGraphIndex(params: {
|
|
56
|
+
graphBundle?: GraphBundle;
|
|
57
|
+
surfaceManifest?: SurfaceManifest;
|
|
58
|
+
criticalFlows?: CriticalFlowManifest;
|
|
59
|
+
}): KnipGraphIndex;
|
|
60
|
+
/**
|
|
61
|
+
* Classify one knip lead path against the pre-built index. Pure: no IO, no
|
|
62
|
+
* mutation. See {@link KnipGraphTag} for the decision table.
|
|
63
|
+
*/
|
|
64
|
+
export declare function classifyKnipLead(leadPath: string, index: KnipGraphIndex): KnipGraphTag;
|
|
65
|
+
//# sourceMappingURL=knipGraphCrosscheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knipGraphCrosscheck.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/knipGraphCrosscheck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAI5B;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,eAAe,GACf,YAAY,GACZ,YAAY,CAAC;AAEjB;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,0EAA0E;IAC1E,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,yEAAyE;IACzE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK7D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC,GAAG,cAAc,CAoCjB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,cAAc,GACpB,YAAY,CAkBd"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { allGraphEdges } from "../extractors/graphSignals.js";
|
|
2
|
+
import { ANALYZER_REGISTRY } from "../extractors/analyzers/registry.js";
|
|
3
|
+
/**
|
|
4
|
+
* Normalize a graph node id / path / entrypoint to one comparable key:
|
|
5
|
+
* backslashes → forward slashes, leading `./` stripped, lower-cased. Single
|
|
6
|
+
* source so the index and every lookup key agree (CE-001).
|
|
7
|
+
*/
|
|
8
|
+
export function normalizeNodeKey(path) {
|
|
9
|
+
return path.replace(/\\/g, "/").replace(/^\.\//, "").toLowerCase();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Map a lead file's extension to the id of the language analyzer that owns it
|
|
13
|
+
* (CE-003). Reuses the analyzer registry's own `supports(file)` predicate
|
|
14
|
+
* so extension→analyzer stays single-sourced in the analyzers, not duplicated.
|
|
15
|
+
* Returns null when no registered analyzer claims the file.
|
|
16
|
+
*/
|
|
17
|
+
export function analyzerIdForFile(path) {
|
|
18
|
+
for (const analyzer of ANALYZER_REGISTRY) {
|
|
19
|
+
if (analyzer.supports(path))
|
|
20
|
+
return analyzer.id;
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Build the normalized cross-check index from the three artifacts. Degrades to
|
|
26
|
+
* empty (never throws) on any missing/malformed input — an absent bundle yields
|
|
27
|
+
* an empty index whose every lead classifies UNVERIFIED.
|
|
28
|
+
*/
|
|
29
|
+
export function buildKnipGraphIndex(params) {
|
|
30
|
+
const inDegree = new Map();
|
|
31
|
+
const entrypoints = new Set();
|
|
32
|
+
const analyzersUsed = new Set();
|
|
33
|
+
const { graphBundle, surfaceManifest, criticalFlows } = params;
|
|
34
|
+
if (graphBundle?.graphs) {
|
|
35
|
+
for (const edge of allGraphEdges(graphBundle)) {
|
|
36
|
+
const to = normalizeNodeKey(edge.to);
|
|
37
|
+
inDegree.set(to, (inDegree.get(to) ?? 0) + 1);
|
|
38
|
+
// Ensure `from`-only nodes are still known (in-degree 0), so a lead that
|
|
39
|
+
// appears only as an edge source is treated as present-but-uncited, not
|
|
40
|
+
// absent. Lookups default missing keys to 0 anyway; recording the source
|
|
41
|
+
// node keeps the index a faithful node set.
|
|
42
|
+
const from = normalizeNodeKey(edge.from);
|
|
43
|
+
if (!inDegree.has(from))
|
|
44
|
+
inDegree.set(from, 0);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
for (const surface of surfaceManifest?.surfaces ?? []) {
|
|
48
|
+
if (typeof surface.entrypoint === "string") {
|
|
49
|
+
entrypoints.add(normalizeNodeKey(surface.entrypoint));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
for (const flow of criticalFlows?.flows ?? []) {
|
|
53
|
+
for (const entry of flow.entrypoints ?? []) {
|
|
54
|
+
if (typeof entry === "string")
|
|
55
|
+
entrypoints.add(normalizeNodeKey(entry));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
for (const id of graphBundle?.analyzers_used ?? []) {
|
|
59
|
+
if (typeof id === "string")
|
|
60
|
+
analyzersUsed.add(id);
|
|
61
|
+
}
|
|
62
|
+
return { inDegree, entrypoints, analyzersUsed };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Classify one knip lead path against the pre-built index. Pure: no IO, no
|
|
66
|
+
* mutation. See {@link KnipGraphTag} for the decision table.
|
|
67
|
+
*/
|
|
68
|
+
export function classifyKnipLead(leadPath, index) {
|
|
69
|
+
const key = normalizeNodeKey(leadPath);
|
|
70
|
+
const inDegree = index.inDegree.get(key) ?? 0;
|
|
71
|
+
if (inDegree > 0)
|
|
72
|
+
return "HAS-IMPORTERS";
|
|
73
|
+
if (index.entrypoints.has(key))
|
|
74
|
+
return "ENTRYPOINT";
|
|
75
|
+
// In-degree 0 and non-entrypoint: only trust the "dead" reading when this
|
|
76
|
+
// file's OWN language analyzer actually ran (per-file fidelity, CE-003).
|
|
77
|
+
const analyzerId = analyzerIdForFile(leadPath);
|
|
78
|
+
if (index.analyzersUsed.size === 0 ||
|
|
79
|
+
analyzerId === null ||
|
|
80
|
+
!index.analyzersUsed.has(analyzerId)) {
|
|
81
|
+
return "UNVERIFIED";
|
|
82
|
+
}
|
|
83
|
+
return "LIKELY-DEAD";
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=knipGraphCrosscheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knipGraphCrosscheck.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/knipGraphCrosscheck.ts"],"names":[],"mappings":"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"}
|