claude-crap 0.3.6 → 0.3.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.
Files changed (88) hide show
  1. package/README.md +25 -0
  2. package/dist/adapters/common.d.ts +1 -1
  3. package/dist/adapters/common.d.ts.map +1 -1
  4. package/dist/adapters/common.js +1 -1
  5. package/dist/adapters/common.js.map +1 -1
  6. package/dist/adapters/dart-analyzer.d.ts +41 -0
  7. package/dist/adapters/dart-analyzer.d.ts.map +1 -0
  8. package/dist/adapters/dart-analyzer.js +120 -0
  9. package/dist/adapters/dart-analyzer.js.map +1 -0
  10. package/dist/adapters/index.d.ts +1 -0
  11. package/dist/adapters/index.d.ts.map +1 -1
  12. package/dist/adapters/index.js +4 -0
  13. package/dist/adapters/index.js.map +1 -1
  14. package/dist/crap-config.d.ts +2 -0
  15. package/dist/crap-config.d.ts.map +1 -1
  16. package/dist/crap-config.js +36 -28
  17. package/dist/crap-config.js.map +1 -1
  18. package/dist/dashboard/file-detail.d.ts +77 -0
  19. package/dist/dashboard/file-detail.d.ts.map +1 -0
  20. package/dist/dashboard/file-detail.js +120 -0
  21. package/dist/dashboard/file-detail.js.map +1 -0
  22. package/dist/dashboard/server.d.ts +5 -0
  23. package/dist/dashboard/server.d.ts.map +1 -1
  24. package/dist/dashboard/server.js +103 -1
  25. package/dist/dashboard/server.js.map +1 -1
  26. package/dist/index.js +36 -4
  27. package/dist/index.js.map +1 -1
  28. package/dist/metrics/workspace-walker.d.ts +4 -1
  29. package/dist/metrics/workspace-walker.d.ts.map +1 -1
  30. package/dist/metrics/workspace-walker.js +12 -28
  31. package/dist/metrics/workspace-walker.js.map +1 -1
  32. package/dist/scanner/auto-scan.d.ts +9 -1
  33. package/dist/scanner/auto-scan.d.ts.map +1 -1
  34. package/dist/scanner/auto-scan.js +27 -5
  35. package/dist/scanner/auto-scan.js.map +1 -1
  36. package/dist/scanner/bootstrap.d.ts +1 -1
  37. package/dist/scanner/bootstrap.d.ts.map +1 -1
  38. package/dist/scanner/bootstrap.js +9 -0
  39. package/dist/scanner/bootstrap.js.map +1 -1
  40. package/dist/scanner/complexity-scanner.d.ts +56 -0
  41. package/dist/scanner/complexity-scanner.d.ts.map +1 -0
  42. package/dist/scanner/complexity-scanner.js +161 -0
  43. package/dist/scanner/complexity-scanner.js.map +1 -0
  44. package/dist/scanner/detector.d.ts +24 -4
  45. package/dist/scanner/detector.d.ts.map +1 -1
  46. package/dist/scanner/detector.js +105 -10
  47. package/dist/scanner/detector.js.map +1 -1
  48. package/dist/scanner/runner.d.ts +4 -1
  49. package/dist/scanner/runner.d.ts.map +1 -1
  50. package/dist/scanner/runner.js +12 -3
  51. package/dist/scanner/runner.js.map +1 -1
  52. package/dist/schemas/tool-schemas.d.ts +1 -1
  53. package/dist/schemas/tool-schemas.js +1 -1
  54. package/dist/schemas/tool-schemas.js.map +1 -1
  55. package/dist/shared/exclusions.d.ts +53 -0
  56. package/dist/shared/exclusions.d.ts.map +1 -0
  57. package/dist/shared/exclusions.js +126 -0
  58. package/dist/shared/exclusions.js.map +1 -0
  59. package/package.json +3 -1
  60. package/plugin/.claude-plugin/plugin.json +1 -1
  61. package/plugin/bundle/dashboard/public/index.html +432 -12
  62. package/plugin/bundle/mcp-server.mjs +747 -137
  63. package/plugin/bundle/mcp-server.mjs.map +4 -4
  64. package/plugin/package-lock.json +15 -2
  65. package/plugin/package.json +2 -1
  66. package/scripts/bundle-plugin.mjs +2 -1
  67. package/src/adapters/common.ts +1 -1
  68. package/src/adapters/dart-analyzer.ts +161 -0
  69. package/src/adapters/index.ts +4 -0
  70. package/src/crap-config.ts +55 -18
  71. package/src/dashboard/file-detail.ts +195 -0
  72. package/src/dashboard/public/index.html +432 -12
  73. package/src/dashboard/server.ts +140 -1
  74. package/src/index.ts +37 -4
  75. package/src/metrics/workspace-walker.ts +15 -27
  76. package/src/scanner/auto-scan.ts +41 -4
  77. package/src/scanner/bootstrap.ts +11 -0
  78. package/src/scanner/complexity-scanner.ts +222 -0
  79. package/src/scanner/detector.ts +114 -10
  80. package/src/scanner/runner.ts +12 -2
  81. package/src/schemas/tool-schemas.ts +1 -1
  82. package/src/shared/exclusions.ts +156 -0
  83. package/src/tests/adapters/dispatch.test.ts +2 -2
  84. package/src/tests/auto-scan.test.ts +2 -2
  85. package/src/tests/complexity-scanner.test.ts +263 -0
  86. package/src/tests/exclusions.test.ts +117 -0
  87. package/src/tests/file-detail-api.test.ts +258 -0
  88. package/src/tests/scanner-detector.test.ts +31 -11
@@ -27,7 +27,7 @@ import type { SarifStore } from "../sarif/sarif-store.js";
27
27
  /**
28
28
  * Detected project type, aligned with tree-sitter supported languages.
29
29
  */
30
- export type ProjectType = "javascript" | "typescript" | "python" | "java" | "csharp" | "unknown";
30
+ export type ProjectType = "javascript" | "typescript" | "python" | "java" | "csharp" | "dart" | "unknown";
31
31
  /**
32
32
  * A single step in the bootstrap process.
33
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/scanner/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAI1D;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB,0EAA0E;IAC1E,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kEAAkE;IAClE,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,iEAAiE;IACjE,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,CA+BpE;AAID;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,CAsClE;AAuHD;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CA2I1B"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/scanner/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAI1D;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,GACN,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,WAAW,EAAE,WAAW,CAAC;IACzB,0EAA0E;IAC1E,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kEAAkE;IAClE,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,iEAAiE;IACjE,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,CAkCpE;AAID;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,CAsClE;AA8HD;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CA2I1B"}
@@ -63,6 +63,9 @@ export function detectProjectType(workspaceRoot) {
63
63
  catch {
64
64
  // readdirSync can fail on permissions — fall through
65
65
  }
66
+ // Dart / Flutter detection
67
+ if (has("pubspec.yaml"))
68
+ return "dart";
66
69
  return "unknown";
67
70
  }
68
71
  // ── ESLint config generation ───────────────────────────────────────
@@ -188,6 +191,12 @@ function getRecommendation(projectType) {
188
191
  canAutoInstall: false,
189
192
  installInstructions: "brew install semgrep (or: pip install semgrep, pipx install semgrep)",
190
193
  };
194
+ case "dart":
195
+ return {
196
+ scanner: "dart_analyze",
197
+ canAutoInstall: false,
198
+ installInstructions: "Install the Dart SDK: https://dart.dev/get-dart (or Flutter SDK which includes Dart)",
199
+ };
191
200
  case "unknown":
192
201
  return {
193
202
  scanner: "semgrep",
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/scanner/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/scanner/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Cyclomatic complexity scanner.
3
+ *
4
+ * Walks the workspace, analyzes each supported source file with
5
+ * tree-sitter, and emits SARIF findings for functions whose cyclomatic
6
+ * complexity exceeds the configured threshold (`cyclomaticMax`).
7
+ *
8
+ * This scanner is an internal analyzer — it is NOT a "known scanner"
9
+ * in the `KnownScanner` union (eslint/semgrep/bandit/stryker). It
10
+ * bypasses the adapter pipeline and writes SARIF directly via
11
+ * `wrapResultsInSarif()` from the common adapter helpers.
12
+ *
13
+ * Severity mapping:
14
+ * - `warning` — CC > threshold but < 2× threshold
15
+ * - `error` — CC >= 2× threshold (aligns with CRAP index hard block at CC >= 30)
16
+ *
17
+ * @module scanner/complexity-scanner
18
+ */
19
+ import type { Logger } from "pino";
20
+ import { TreeSitterEngine } from "../ast/tree-sitter-engine.js";
21
+ import type { SarifStore } from "../sarif/sarif-store.js";
22
+ /** Result of a complexity scan run. */
23
+ export interface ComplexityScanResult {
24
+ /** Number of source files successfully analyzed. */
25
+ readonly filesScanned: number;
26
+ /** Total number of functions found across all files. */
27
+ readonly functionsAnalyzed: number;
28
+ /** Number of functions that exceeded the threshold. */
29
+ readonly violations: number;
30
+ /** Wall-clock time for the entire scan. */
31
+ readonly durationMs: number;
32
+ }
33
+ /** Configuration accepted by the scanner. */
34
+ export interface ComplexityScanConfig {
35
+ /** Maximum cyclomatic complexity allowed per function. */
36
+ readonly cyclomaticMax: number;
37
+ /** User-defined exclusion patterns from .claude-crap.json. */
38
+ readonly exclude?: ReadonlyArray<string>;
39
+ }
40
+ /**
41
+ * Scan a workspace for cyclomatic complexity violations.
42
+ *
43
+ * Walks the directory tree, analyzes each source file with the
44
+ * tree-sitter engine, and emits SARIF findings for functions above
45
+ * the configured threshold. Findings are ingested into the provided
46
+ * `SarifStore` and persisted to disk.
47
+ *
48
+ * @param workspaceRoot Absolute path to the workspace root.
49
+ * @param engine Initialized tree-sitter engine instance.
50
+ * @param sarifStore Live SARIF store to ingest findings into.
51
+ * @param config Scanner configuration (threshold).
52
+ * @param logger Pino logger for progress and error reporting.
53
+ * @returns Summary of what was scanned and found.
54
+ */
55
+ export declare function scanComplexity(workspaceRoot: string, engine: TreeSitterEngine, sarifStore: SarifStore, config: ComplexityScanConfig, logger: Logger): Promise<ComplexityScanResult>;
56
+ //# sourceMappingURL=complexity-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complexity-scanner.d.ts","sourceRoot":"","sources":["../../src/scanner/complexity-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAIhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAgB1D,uCAAuC;AACvC,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC,CAyF/B"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Cyclomatic complexity scanner.
3
+ *
4
+ * Walks the workspace, analyzes each supported source file with
5
+ * tree-sitter, and emits SARIF findings for functions whose cyclomatic
6
+ * complexity exceeds the configured threshold (`cyclomaticMax`).
7
+ *
8
+ * This scanner is an internal analyzer — it is NOT a "known scanner"
9
+ * in the `KnownScanner` union (eslint/semgrep/bandit/stryker). It
10
+ * bypasses the adapter pipeline and writes SARIF directly via
11
+ * `wrapResultsInSarif()` from the common adapter helpers.
12
+ *
13
+ * Severity mapping:
14
+ * - `warning` — CC > threshold but < 2× threshold
15
+ * - `error` — CC >= 2× threshold (aligns with CRAP index hard block at CC >= 30)
16
+ *
17
+ * @module scanner/complexity-scanner
18
+ */
19
+ import { promises as fs } from "node:fs";
20
+ import { join, relative } from "node:path";
21
+ import { detectLanguageFromPath } from "../ast/language-config.js";
22
+ import { wrapResultsInSarif, estimateEffortMinutes } from "../adapters/common.js";
23
+ import { createExclusionFilter } from "../shared/exclusions.js";
24
+ // Directory exclusions are now centralized in src/shared/exclusions.ts.
25
+ /** Hard cap on files to prevent unbounded analysis. */
26
+ const MAX_FILES = 20_000;
27
+ /** SARIF rule ID for cyclomatic complexity violations. */
28
+ const RULE_ID = "complexity/cyclomatic-max";
29
+ /** Source tool identifier used in SARIF properties. */
30
+ const SOURCE_TOOL = "complexity";
31
+ // ── Scanner ───────────────────────────────────────────────────────
32
+ /**
33
+ * Scan a workspace for cyclomatic complexity violations.
34
+ *
35
+ * Walks the directory tree, analyzes each source file with the
36
+ * tree-sitter engine, and emits SARIF findings for functions above
37
+ * the configured threshold. Findings are ingested into the provided
38
+ * `SarifStore` and persisted to disk.
39
+ *
40
+ * @param workspaceRoot Absolute path to the workspace root.
41
+ * @param engine Initialized tree-sitter engine instance.
42
+ * @param sarifStore Live SARIF store to ingest findings into.
43
+ * @param config Scanner configuration (threshold).
44
+ * @param logger Pino logger for progress and error reporting.
45
+ * @returns Summary of what was scanned and found.
46
+ */
47
+ export async function scanComplexity(workspaceRoot, engine, sarifStore, config, logger) {
48
+ const start = Date.now();
49
+ const threshold = config.cyclomaticMax;
50
+ const errorThreshold = threshold * 2;
51
+ // 1. Collect supported source files
52
+ const filter = createExclusionFilter(config.exclude);
53
+ const files = await collectSourceFiles(workspaceRoot, filter);
54
+ logger.info({ fileCount: files.length, threshold }, "complexity-scanner: starting analysis");
55
+ // 2. Analyze each file and collect violations
56
+ const sarifResults = [];
57
+ let filesScanned = 0;
58
+ let functionsAnalyzed = 0;
59
+ let violations = 0;
60
+ for (const filePath of files) {
61
+ const language = detectLanguageFromPath(filePath);
62
+ if (!language)
63
+ continue;
64
+ try {
65
+ const metrics = await engine.analyzeFile({ filePath, language });
66
+ filesScanned += 1;
67
+ functionsAnalyzed += metrics.functions.length;
68
+ for (const fn of metrics.functions) {
69
+ if (fn.cyclomaticComplexity <= threshold)
70
+ continue;
71
+ const level = fn.cyclomaticComplexity >= errorThreshold ? "error" : "warning";
72
+ const relPath = relative(workspaceRoot, filePath);
73
+ sarifResults.push({
74
+ ruleId: RULE_ID,
75
+ level,
76
+ message: {
77
+ text: `Function '${fn.name}' has cyclomatic complexity ${fn.cyclomaticComplexity} (threshold: ${threshold})`,
78
+ },
79
+ locations: [
80
+ {
81
+ physicalLocation: {
82
+ artifactLocation: { uri: relPath },
83
+ region: {
84
+ startLine: fn.startLine,
85
+ startColumn: 1,
86
+ endLine: fn.endLine,
87
+ endColumn: 1,
88
+ },
89
+ },
90
+ },
91
+ ],
92
+ properties: {
93
+ sourceTool: SOURCE_TOOL,
94
+ effortMinutes: estimateEffortMinutes(level),
95
+ cyclomaticComplexity: fn.cyclomaticComplexity,
96
+ },
97
+ });
98
+ violations += 1;
99
+ }
100
+ }
101
+ catch (err) {
102
+ logger.warn({ filePath, err: err.message }, "complexity-scanner: failed to analyze file, skipping");
103
+ }
104
+ }
105
+ // 3. Ingest findings into the SARIF store
106
+ if (sarifResults.length > 0) {
107
+ const document = wrapResultsInSarif(SOURCE_TOOL, "0.1.0", sarifResults);
108
+ sarifStore.ingestRun(document, SOURCE_TOOL);
109
+ await sarifStore.persist();
110
+ }
111
+ const durationMs = Date.now() - start;
112
+ logger.info({ filesScanned, functionsAnalyzed, violations, durationMs }, "complexity-scanner: analysis complete");
113
+ return { filesScanned, functionsAnalyzed, violations, durationMs };
114
+ }
115
+ // ── File walker ───────────────────────────────────────────────────
116
+ /**
117
+ * Collect source files from the workspace that the tree-sitter engine
118
+ * can analyze. Uses the shared exclusion filter for directory and file
119
+ * filtering. Only returns files whose extension maps to a supported language.
120
+ */
121
+ async function collectSourceFiles(workspaceRoot, filter) {
122
+ const files = [];
123
+ let truncated = false;
124
+ async function walk(dir) {
125
+ if (truncated)
126
+ return;
127
+ let entries;
128
+ try {
129
+ entries = await fs.readdir(dir, { withFileTypes: true });
130
+ }
131
+ catch {
132
+ return;
133
+ }
134
+ for (const entry of entries) {
135
+ if (truncated)
136
+ return;
137
+ const full = join(dir, entry.name);
138
+ if (entry.isDirectory()) {
139
+ if (filter.shouldSkipDir(entry.name))
140
+ continue;
141
+ await walk(full);
142
+ continue;
143
+ }
144
+ if (!entry.isFile())
145
+ continue;
146
+ if (!detectLanguageFromPath(entry.name))
147
+ continue;
148
+ const relPath = relative(workspaceRoot, full);
149
+ if (filter.shouldSkipFile(relPath, entry.name))
150
+ continue;
151
+ files.push(full);
152
+ if (files.length >= MAX_FILES) {
153
+ truncated = true;
154
+ return;
155
+ }
156
+ }
157
+ }
158
+ await walk(workspaceRoot);
159
+ return files;
160
+ }
161
+ //# sourceMappingURL=complexity-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complexity-scanner.js","sourceRoot":"","sources":["../../src/scanner/complexity-scanner.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,8 @@ export interface ScannerDetection {
29
29
  reason: string;
30
30
  /** Path to the config file that triggered detection, if any. */
31
31
  configPath?: string;
32
+ /** Working directory to run the scanner from (defaults to workspace root). */
33
+ workingDir?: string;
32
34
  }
33
35
  /**
34
36
  * Config file globs and package.json keys per scanner. Order matters:
@@ -41,13 +43,31 @@ interface ScannerSignals {
41
43
  }
42
44
  declare const SCANNER_SIGNALS: Record<KnownScanner, ScannerSignals>;
43
45
  /**
44
- * Detect which of the four supported scanners are available in the
45
- * given workspace. Probes config files, package.json, and binary
46
- * availability in order, short-circuiting on first match.
46
+ * Detect which supported scanners are available in the given workspace.
47
+ * Probes config files, package.json, and binary availability in order,
48
+ * short-circuiting on first match.
47
49
  *
48
50
  * @param workspaceRoot Absolute path to the project root.
49
51
  * @returns One {@link ScannerDetection} per known scanner.
50
52
  */
51
53
  export declare function detectScanners(workspaceRoot: string): Promise<ScannerDetection[]>;
52
- export { SCANNER_SIGNALS };
54
+ /**
55
+ * Common monorepo directory names that may contain workspace
56
+ * subdirectories. Checked one level deep only.
57
+ */
58
+ declare const MONOREPO_DIRS: string[];
59
+ /**
60
+ * Detect scanners in monorepo subdirectories. Probes first-level
61
+ * children of common monorepo directories (apps/, packages/, etc.)
62
+ * and npm workspaces for scanner config files. Returns detections
63
+ * with a `workingDir` pointing to the subdirectory.
64
+ *
65
+ * This catches e.g. `apps/mobile/pubspec.yaml` in a polyglot monorepo
66
+ * where the root-level detector only finds ESLint.
67
+ *
68
+ * @param workspaceRoot Absolute path to the project root.
69
+ * @returns Additional detections from subdirectories (may be empty).
70
+ */
71
+ export declare function detectMonorepoScanners(workspaceRoot: string): Promise<ScannerDetection[]>;
72
+ export { SCANNER_SIGNALS, MONOREPO_DIRS };
53
73
  //# sourceMappingURL=detector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/scanner/detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,OAAO,EAAE,YAAY,CAAC;IACtB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,QAAA,MAAM,eAAe,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CAgDzD,CAAC;AAgEF;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8C7B;AAGD,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/scanner/detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,OAAO,EAAE,YAAY,CAAC;IACtB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,QAAA,MAAM,eAAe,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CAwDzD,CAAC;AAgEF;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoD7B;AAID;;;GAGG;AACH,QAAA,MAAM,aAAa,UAAsD,CAAC;AAE1E;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAgE7B;AAGD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC"}
@@ -16,8 +16,8 @@
16
16
  *
17
17
  * @module scanner/detector
18
18
  */
19
- import { existsSync, readFileSync } from "node:fs";
20
- import { join } from "node:path";
19
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
20
+ import { join, resolve } from "node:path";
21
21
  import { execFile } from "node:child_process";
22
22
  const SCANNER_SIGNALS = {
23
23
  eslint: {
@@ -67,6 +67,14 @@ const SCANNER_SIGNALS = {
67
67
  packageJsonKeys: ["@stryker-mutator/core"],
68
68
  binaryNames: ["stryker"],
69
69
  },
70
+ dart_analyze: {
71
+ configFiles: [
72
+ "analysis_options.yaml",
73
+ "pubspec.yaml",
74
+ ],
75
+ packageJsonKeys: [],
76
+ binaryNames: ["dart"],
77
+ },
70
78
  };
71
79
  // ── Probes ──────────────────────────────────────────────────────────
72
80
  /**
@@ -121,15 +129,15 @@ function probeBinary(binaryName) {
121
129
  }
122
130
  // ── Public API ──────────────────────────────────────────────────────
123
131
  /**
124
- * Detect which of the four supported scanners are available in the
125
- * given workspace. Probes config files, package.json, and binary
126
- * availability in order, short-circuiting on first match.
132
+ * Detect which supported scanners are available in the given workspace.
133
+ * Probes config files, package.json, and binary availability in order,
134
+ * short-circuiting on first match.
127
135
  *
128
136
  * @param workspaceRoot Absolute path to the project root.
129
137
  * @returns One {@link ScannerDetection} per known scanner.
130
138
  */
131
139
  export async function detectScanners(workspaceRoot) {
132
- const scanners = ["eslint", "semgrep", "bandit", "stryker"];
140
+ const scanners = ["eslint", "semgrep", "bandit", "stryker", "dart_analyze"];
133
141
  const results = await Promise.all(scanners.map(async (scanner) => {
134
142
  // 1. Config file probe (fastest)
135
143
  const configProbe = probeConfigFiles(workspaceRoot, scanner);
@@ -141,12 +149,18 @@ export async function detectScanners(workspaceRoot) {
141
149
  configPath: configProbe.path,
142
150
  };
143
151
  }
144
- // 2. Package.json probe
152
+ // 2. Package.json probe — declared in deps/devDeps, but is it
153
+ // actually installed? Check node_modules/.bin/ for the binary.
145
154
  if (probePackageJson(workspaceRoot, scanner)) {
155
+ const binName = SCANNER_SIGNALS[scanner].binaryNames[0];
156
+ const binPath = binName ? join(workspaceRoot, "node_modules", ".bin", binName) : null;
157
+ const installed = binPath !== null && existsSync(binPath);
146
158
  return {
147
159
  scanner,
148
- available: true,
149
- reason: `found in package.json dependencies`,
160
+ available: installed,
161
+ reason: installed
162
+ ? "found in package.json and installed"
163
+ : `found in package.json but not installed (run \`npm install\`)`,
150
164
  };
151
165
  }
152
166
  // 3. Binary probe (slowest)
@@ -168,6 +182,87 @@ export async function detectScanners(workspaceRoot) {
168
182
  }));
169
183
  return results;
170
184
  }
185
+ // ── Monorepo subdirectory probing ────────────────────────────────
186
+ /**
187
+ * Common monorepo directory names that may contain workspace
188
+ * subdirectories. Checked one level deep only.
189
+ */
190
+ const MONOREPO_DIRS = ["apps", "packages", "libs", "modules", "services"];
191
+ /**
192
+ * Detect scanners in monorepo subdirectories. Probes first-level
193
+ * children of common monorepo directories (apps/, packages/, etc.)
194
+ * and npm workspaces for scanner config files. Returns detections
195
+ * with a `workingDir` pointing to the subdirectory.
196
+ *
197
+ * This catches e.g. `apps/mobile/pubspec.yaml` in a polyglot monorepo
198
+ * where the root-level detector only finds ESLint.
199
+ *
200
+ * @param workspaceRoot Absolute path to the project root.
201
+ * @returns Additional detections from subdirectories (may be empty).
202
+ */
203
+ export async function detectMonorepoScanners(workspaceRoot) {
204
+ const subdirs = new Set();
205
+ // 1. Read npm workspaces from package.json
206
+ try {
207
+ const pkgPath = join(workspaceRoot, "package.json");
208
+ const raw = readFileSync(pkgPath, "utf-8");
209
+ const pkg = JSON.parse(raw);
210
+ if (Array.isArray(pkg.workspaces)) {
211
+ for (const ws of pkg.workspaces) {
212
+ if (typeof ws === "string" && !ws.includes("*")) {
213
+ const full = resolve(workspaceRoot, ws);
214
+ if (existsSync(full))
215
+ subdirs.add(full);
216
+ }
217
+ }
218
+ }
219
+ }
220
+ catch {
221
+ // No package.json or not parseable — continue
222
+ }
223
+ // 2. Scan common monorepo directories one level deep
224
+ for (const dir of MONOREPO_DIRS) {
225
+ const full = join(workspaceRoot, dir);
226
+ try {
227
+ const entries = readdirSync(full, { withFileTypes: true });
228
+ for (const entry of entries) {
229
+ if (entry.isDirectory() && !entry.name.startsWith(".")) {
230
+ subdirs.add(join(full, entry.name));
231
+ }
232
+ }
233
+ }
234
+ catch {
235
+ // Directory doesn't exist — skip
236
+ }
237
+ }
238
+ if (subdirs.size === 0)
239
+ return [];
240
+ // 3. Probe each subdirectory for scanner config files
241
+ const detections = [];
242
+ const scanners = ["eslint", "semgrep", "bandit", "stryker", "dart_analyze"];
243
+ for (const subdir of subdirs) {
244
+ for (const scanner of scanners) {
245
+ const configProbe = probeConfigFiles(subdir, scanner);
246
+ if (!configProbe.found)
247
+ continue;
248
+ // For dart_analyze, also verify the binary is on PATH
249
+ if (scanner === "dart_analyze") {
250
+ const hasBinary = await probeBinary("dart");
251
+ if (!hasBinary)
252
+ continue;
253
+ }
254
+ const relDir = subdir.replace(workspaceRoot + "/", "");
255
+ detections.push({
256
+ scanner,
257
+ available: true,
258
+ reason: `config file found in ${relDir}/`,
259
+ ...(configProbe.path ? { configPath: configProbe.path } : {}),
260
+ workingDir: subdir,
261
+ });
262
+ }
263
+ }
264
+ return detections;
265
+ }
171
266
  // Exported for testing
172
- export { SCANNER_SIGNALS };
267
+ export { SCANNER_SIGNALS, MONOREPO_DIRS };
173
268
  //# sourceMappingURL=detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/scanner/detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/scanner/detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiC9C,MAAM,eAAe,GAAyC;IAC5D,MAAM,EAAE;QACN,WAAW,EAAE;YACX,kBAAkB;YAClB,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB;YAClB,mBAAmB;YACnB,mBAAmB;YACnB,cAAc;YACd,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,gBAAgB;SACjB;QACD,eAAe,EAAE,CAAC,QAAQ,CAAC;QAC3B,WAAW,EAAE,CAAC,QAAQ,CAAC;KACxB;IACD,OAAO,EAAE;QACP,WAAW,EAAE;YACX,cAAc;YACd,eAAe;YACf,eAAe;SAChB;QACD,eAAe,EAAE,EAAE;QACnB,WAAW,EAAE,CAAC,SAAS,CAAC;KACzB;IACD,MAAM,EAAE;QACN,WAAW,EAAE;YACX,SAAS;YACT,aAAa;YACb,YAAY;SACb;QACD,eAAe,EAAE,EAAE;QACnB,WAAW,EAAE,CAAC,QAAQ,CAAC;KACxB;IACD,OAAO,EAAE;QACP,WAAW,EAAE;YACX,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,mBAAmB;YACnB,YAAY;YACZ,iBAAiB;SAClB;QACD,eAAe,EAAE,CAAC,uBAAuB,CAAC;QAC1C,WAAW,EAAE,CAAC,SAAS,CAAC;KACzB;IACD,YAAY,EAAE;QACZ,WAAW,EAAE;YACX,uBAAuB;YACvB,cAAc;SACf;QACD,eAAe,EAAE,EAAE;QACnB,WAAW,EAAE,CAAC,MAAM,CAAC;KACtB;CACF,CAAC;AAEF,uEAAuE;AAEvE;;GAEG;AACH,SAAS,gBAAgB,CACvB,aAAqB,EACrB,OAAqB;IAErB,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,aAAqB,EACrB,OAAqB;IAErB,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACvD,MAAM,IAAI,GAAG;YACX,GAAG,CAAC,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,GAAG,CAAC,YAAY,KAAK,IAAI;gBACnE,CAAC,CAAE,GAAG,CAAC,YAAuC;gBAC9C,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,GAAG,CAAC,eAAe,KAAK,QAAQ,IAAI,GAAG,CAAC,eAAe,KAAK,IAAI;gBACzE,CAAC,CAAE,GAAG,CAAC,eAA0C;gBACjD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QACF,OAAO,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,UAAkB;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YAC1D,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,aAAqB;IAErB,MAAM,QAAQ,GAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAE5F,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAA6B,EAAE;QACxD,iCAAiC;QACjC,MAAM,WAAW,GAAG,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC7D,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO;gBACP,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,sBAAsB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;gBACjF,UAAU,EAAE,WAAW,CAAC,IAAI;aAC7B,CAAC;QACJ,CAAC;QAED,8DAA8D;QAC9D,kEAAkE;QAClE,IAAI,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtF,MAAM,SAAS,GAAG,OAAO,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1D,OAAO;gBACL,OAAO;gBACP,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,SAAS;oBACf,CAAC,CAAC,qCAAqC;oBACvC,CAAC,CAAC,+DAA+D;aACpE,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO;oBACP,SAAS,EAAE,IAAI;oBACf,MAAM,EAAE,WAAW,GAAG,iBAAiB;iBACxC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO;YACP,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,qDAAqD;SAC9D,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,oEAAoE;AAEpE;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAE1E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,aAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,2CAA2C;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAChC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;oBACxC,IAAI,UAAU,CAAC,IAAI,CAAC;wBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IAED,qDAAqD;IACrD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,sDAAsD;IACtD,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAE5F,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,WAAW,CAAC,KAAK;gBAAE,SAAS;YAEjC,sDAAsD;YACtD,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC5C,IAAI,CAAC,SAAS;oBAAE,SAAS;YAC3B,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;YACvD,UAAU,CAAC,IAAI,CAAC;gBACd,OAAO;gBACP,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,wBAAwB,MAAM,GAAG;gBACzC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,UAAU,EAAE,MAAM;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC"}
@@ -52,8 +52,11 @@ declare function getScannerCommand(scanner: KnownScanner, workspaceRoot: string)
52
52
  *
53
53
  * @param scanner Which scanner to run.
54
54
  * @param workspaceRoot Absolute path to the project root (used as cwd).
55
+ * @param options Optional overrides.
55
56
  * @returns A {@link ScannerRunResult} with stdout or file output.
56
57
  */
57
- export declare function runScanner(scanner: KnownScanner, workspaceRoot: string): Promise<ScannerRunResult>;
58
+ export declare function runScanner(scanner: KnownScanner, workspaceRoot: string, options?: {
59
+ workingDir?: string;
60
+ }): Promise<ScannerRunResult>;
58
61
  export { getScannerCommand, type ScannerCommand };
59
62
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/scanner/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,OAAO,EAAE,YAAY,CAAC;IACtB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,UAAU,cAAc;IACtB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,eAAe,EAAE,OAAO,CAAC;IACzB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,iBAAS,iBAAiB,CACxB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,MAAM,GACpB,cAAc,CAgChB;AAID;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,CAAC,CA0G3B;AAGD,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/scanner/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,OAAO,EAAE,YAAY,CAAC;IACtB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,UAAU,cAAc;IACtB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,eAAe,EAAE,OAAO,CAAC;IACzB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,iBAAS,iBAAiB,CACxB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,MAAM,GACpB,cAAc,CAuChB;AAID;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAChC,OAAO,CAAC,gBAAgB,CAAC,CA2G3B;AAGD,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,CAAC"}
@@ -52,6 +52,13 @@ function getScannerCommand(scanner, workspaceRoot) {
52
52
  nonZeroIsNormal: false,
53
53
  outputFile: join(workspaceRoot, "reports", "mutation", "mutation.json"),
54
54
  };
55
+ case "dart_analyze":
56
+ return {
57
+ command: "dart",
58
+ args: ["analyze", "--format=json", "."],
59
+ timeoutMs: 120_000,
60
+ nonZeroIsNormal: true, // exits 3 when findings exist
61
+ };
55
62
  }
56
63
  }
57
64
  // ── Public API ──────────────────────────────────────────────────────
@@ -60,14 +67,16 @@ function getScannerCommand(scanner, workspaceRoot) {
60
67
  *
61
68
  * @param scanner Which scanner to run.
62
69
  * @param workspaceRoot Absolute path to the project root (used as cwd).
70
+ * @param options Optional overrides.
63
71
  * @returns A {@link ScannerRunResult} with stdout or file output.
64
72
  */
65
- export function runScanner(scanner, workspaceRoot) {
73
+ export function runScanner(scanner, workspaceRoot, options) {
66
74
  const start = Date.now();
67
- const cmd = getScannerCommand(scanner, workspaceRoot);
75
+ const cwd = options?.workingDir ?? workspaceRoot;
76
+ const cmd = getScannerCommand(scanner, cwd);
68
77
  return new Promise((resolve) => {
69
78
  execFile(cmd.command, cmd.args, {
70
- cwd: workspaceRoot,
79
+ cwd,
71
80
  timeout: cmd.timeoutMs,
72
81
  maxBuffer: 50 * 1024 * 1024, // 50 MB — large codebases produce verbose output
73
82
  env: { ...process.env, FORCE_COLOR: "0" }, // suppress ANSI in output
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/scanner/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/scanner/runner.ts"],"names":[],"mappings":"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"}
@@ -160,7 +160,7 @@ export declare const ingestScannerOutputSchema: {
160
160
  readonly properties: {
161
161
  readonly scanner: {
162
162
  readonly type: "string";
163
- readonly enum: readonly ["semgrep", "eslint", "bandit", "stryker"];
163
+ readonly enum: readonly ["semgrep", "eslint", "bandit", "stryker", "dart_analyze"];
164
164
  readonly description: "Identifier of the producing scanner.";
165
165
  };
166
166
  readonly rawOutput: {