@vyuhlabs/dxkit 2.0.1 → 2.2.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/CHANGELOG.md +223 -0
- package/README.md +21 -15
- package/dist/analyzers/bom/detailed.d.ts +26 -0
- package/dist/analyzers/bom/detailed.d.ts.map +1 -0
- package/dist/analyzers/bom/detailed.js +227 -0
- package/dist/analyzers/bom/detailed.js.map +1 -0
- package/dist/analyzers/bom/gather.d.ts +63 -0
- package/dist/analyzers/bom/gather.d.ts.map +1 -0
- package/dist/analyzers/bom/gather.js +229 -0
- package/dist/analyzers/bom/gather.js.map +1 -0
- package/dist/analyzers/bom/index.d.ts +23 -0
- package/dist/analyzers/bom/index.d.ts.map +1 -0
- package/dist/analyzers/bom/index.js +220 -0
- package/dist/analyzers/bom/index.js.map +1 -0
- package/dist/analyzers/bom/types.d.ts +91 -0
- package/dist/analyzers/bom/types.d.ts.map +1 -0
- package/dist/analyzers/bom/types.js +3 -0
- package/dist/analyzers/bom/types.js.map +1 -0
- package/dist/analyzers/licenses/detailed.d.ts +30 -0
- package/dist/analyzers/licenses/detailed.d.ts.map +1 -0
- package/dist/analyzers/licenses/detailed.js +194 -0
- package/dist/analyzers/licenses/detailed.js.map +1 -0
- package/dist/analyzers/licenses/gather.d.ts +15 -0
- package/dist/analyzers/licenses/gather.d.ts.map +1 -0
- package/dist/analyzers/licenses/gather.js +24 -0
- package/dist/analyzers/licenses/gather.js.map +1 -0
- package/dist/analyzers/licenses/index.d.ts +21 -0
- package/dist/analyzers/licenses/index.d.ts.map +1 -0
- package/dist/analyzers/licenses/index.js +146 -0
- package/dist/analyzers/licenses/index.js.map +1 -0
- package/dist/analyzers/licenses/types.d.ts +30 -0
- package/dist/analyzers/licenses/types.d.ts.map +1 -0
- package/dist/analyzers/licenses/types.js +13 -0
- package/dist/analyzers/licenses/types.js.map +1 -0
- package/dist/analyzers/security/detailed.d.ts +0 -3
- package/dist/analyzers/security/detailed.d.ts.map +1 -1
- package/dist/analyzers/security/detailed.js +37 -6
- package/dist/analyzers/security/detailed.js.map +1 -1
- package/dist/analyzers/security/gather.d.ts.map +1 -1
- package/dist/analyzers/security/gather.js +2 -0
- package/dist/analyzers/security/gather.js.map +1 -1
- package/dist/analyzers/security/index.d.ts.map +1 -1
- package/dist/analyzers/security/index.js +53 -14
- package/dist/analyzers/security/index.js.map +1 -1
- package/dist/analyzers/security/types.d.ts +5 -0
- package/dist/analyzers/security/types.d.ts.map +1 -1
- package/dist/analyzers/security/types.js +0 -3
- package/dist/analyzers/security/types.js.map +1 -1
- package/dist/analyzers/tools/osv.d.ts +49 -5
- package/dist/analyzers/tools/osv.d.ts.map +1 -1
- package/dist/analyzers/tools/osv.js +99 -17
- package/dist/analyzers/tools/osv.js.map +1 -1
- package/dist/analyzers/tools/runner.d.ts +11 -0
- package/dist/analyzers/tools/runner.d.ts.map +1 -1
- package/dist/analyzers/tools/runner.js +54 -0
- package/dist/analyzers/tools/runner.js.map +1 -1
- package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
- package/dist/analyzers/tools/tool-registry.js +77 -0
- package/dist/analyzers/tools/tool-registry.js.map +1 -1
- package/dist/analyzers/xlsx/bom.d.ts +27 -0
- package/dist/analyzers/xlsx/bom.d.ts.map +1 -0
- package/dist/analyzers/xlsx/bom.js +141 -0
- package/dist/analyzers/xlsx/bom.js.map +1 -0
- package/dist/analyzers/xlsx/index.d.ts +27 -0
- package/dist/analyzers/xlsx/index.d.ts.map +1 -0
- package/dist/analyzers/xlsx/index.js +92 -0
- package/dist/analyzers/xlsx/index.js.map +1 -0
- package/dist/analyzers/xlsx/licenses.d.ts +40 -0
- package/dist/analyzers/xlsx/licenses.d.ts.map +1 -0
- package/dist/analyzers/xlsx/licenses.js +140 -0
- package/dist/analyzers/xlsx/licenses.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +178 -1
- package/dist/cli.js.map +1 -1
- package/dist/languages/capabilities/descriptors.d.ts +4 -1
- package/dist/languages/capabilities/descriptors.d.ts.map +1 -1
- package/dist/languages/capabilities/descriptors.js +20 -1
- package/dist/languages/capabilities/descriptors.js.map +1 -1
- package/dist/languages/capabilities/types.d.ts +60 -3
- package/dist/languages/capabilities/types.d.ts.map +1 -1
- package/dist/languages/csharp.d.ts +48 -0
- package/dist/languages/csharp.d.ts.map +1 -1
- package/dist/languages/csharp.js +418 -33
- package/dist/languages/csharp.js.map +1 -1
- package/dist/languages/go.d.ts +35 -0
- package/dist/languages/go.d.ts.map +1 -1
- package/dist/languages/go.js +367 -26
- package/dist/languages/go.js.map +1 -1
- package/dist/languages/python.d.ts +49 -0
- package/dist/languages/python.d.ts.map +1 -1
- package/dist/languages/python.js +372 -11
- package/dist/languages/python.js.map +1 -1
- package/dist/languages/rust.d.ts +28 -0
- package/dist/languages/rust.d.ts.map +1 -1
- package/dist/languages/rust.js +287 -28
- package/dist/languages/rust.js.map +1 -1
- package/dist/languages/types.d.ts +2 -1
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript.d.ts +17 -0
- package/dist/languages/typescript.d.ts.map +1 -1
- package/dist/languages/typescript.js +358 -1
- package/dist/languages/typescript.js.map +1 -1
- package/package.json +7 -2
package/dist/languages/python.js
CHANGED
|
@@ -34,8 +34,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.python = void 0;
|
|
37
|
+
exports.parsePipShowOutput = parsePipShowOutput;
|
|
38
|
+
exports.buildPyTopLevelDepIndex = buildPyTopLevelDepIndex;
|
|
37
39
|
exports.extractPyImportsRaw = extractPyImportsRaw;
|
|
38
40
|
exports.resolvePyImportRaw = resolvePyImportRaw;
|
|
41
|
+
exports.findPyProjectVenvPython = findPyProjectVenvPython;
|
|
39
42
|
const fs = __importStar(require("fs"));
|
|
40
43
|
const path = __importStar(require("path"));
|
|
41
44
|
const coverage_1 = require("../analyzers/tools/coverage");
|
|
@@ -82,6 +85,147 @@ function hasPyFileWithinDepth(cwd, maxDepth = 2) {
|
|
|
82
85
|
}
|
|
83
86
|
return search(cwd, 0);
|
|
84
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Build the pip-audit invocation for the project at `cwd`. Returns null
|
|
90
|
+
* when no supported manifest is present — without one, pip-audit would
|
|
91
|
+
* silently fall back to scanning its own python environment (the
|
|
92
|
+
* dxkit-installed graphify-venv), reporting irrelevant vulnerabilities
|
|
93
|
+
* against tools rather than against the project's declared dependencies.
|
|
94
|
+
*
|
|
95
|
+
* Manifest precedence:
|
|
96
|
+
* - pyproject.toml / setup.py → `pip-audit .` (project mode reads the
|
|
97
|
+
* declared dependencies)
|
|
98
|
+
* - requirements.txt → `pip-audit -r requirements.txt`
|
|
99
|
+
* - Pipfile → unsupported by pip-audit natively; we
|
|
100
|
+
* return null rather than scan the wrong environment.
|
|
101
|
+
*/
|
|
102
|
+
function buildPipAuditCommand(cwd, pipAuditPath) {
|
|
103
|
+
if ((0, runner_1.fileExists)(cwd, 'pyproject.toml') || (0, runner_1.fileExists)(cwd, 'setup.py')) {
|
|
104
|
+
return `${pipAuditPath} . --format json 2>/dev/null`;
|
|
105
|
+
}
|
|
106
|
+
if ((0, runner_1.fileExists)(cwd, 'requirements.txt')) {
|
|
107
|
+
return `${pipAuditPath} -r requirements.txt --format json 2>/dev/null`;
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Pure parser for `pip show pkg1 pkg2 ...` output. pip-show returns
|
|
113
|
+
* RFC-822-ish blocks separated by `---` with `Key: Value` lines. The
|
|
114
|
+
* fields we need:
|
|
115
|
+
*
|
|
116
|
+
* Name: foo
|
|
117
|
+
* Requires: a, b, c
|
|
118
|
+
* Required-by: x, y
|
|
119
|
+
*
|
|
120
|
+
* Empty `Required-by` identifies a package that nothing else in the
|
|
121
|
+
* env depends on — conventionally a directly-installed (top-level)
|
|
122
|
+
* package. Extracted so the builder below can be unit-tested without
|
|
123
|
+
* a live pip invocation.
|
|
124
|
+
*/
|
|
125
|
+
function parsePipShowOutput(raw) {
|
|
126
|
+
const graph = new Map();
|
|
127
|
+
// pip separates blocks with a line containing exactly '---'.
|
|
128
|
+
const blocks = raw.split(/^---\s*$/m);
|
|
129
|
+
for (const block of blocks) {
|
|
130
|
+
let name = null;
|
|
131
|
+
let requires = [];
|
|
132
|
+
let requiredBy = [];
|
|
133
|
+
for (const line of block.split('\n')) {
|
|
134
|
+
const m = line.match(/^(Name|Requires|Required-by):\s*(.*)$/i);
|
|
135
|
+
if (!m)
|
|
136
|
+
continue;
|
|
137
|
+
const key = m[1].toLowerCase();
|
|
138
|
+
const val = m[2].trim();
|
|
139
|
+
if (key === 'name')
|
|
140
|
+
name = val;
|
|
141
|
+
else if (key === 'requires') {
|
|
142
|
+
requires = val
|
|
143
|
+
.split(',')
|
|
144
|
+
.map((s) => s.trim())
|
|
145
|
+
.filter(Boolean);
|
|
146
|
+
}
|
|
147
|
+
else if (key === 'required-by') {
|
|
148
|
+
requiredBy = val
|
|
149
|
+
.split(',')
|
|
150
|
+
.map((s) => s.trim())
|
|
151
|
+
.filter(Boolean);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (name)
|
|
155
|
+
graph.set(name, { requires, requiredBy });
|
|
156
|
+
}
|
|
157
|
+
return graph;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* BFS the parsed pip-show graph to produce a per-package-name index of
|
|
161
|
+
* its top-level ancestors. Top-levels are packages with empty
|
|
162
|
+
* `Required-by` — nothing else in the environment depends on them, so
|
|
163
|
+
* they were installed as direct deps.
|
|
164
|
+
*
|
|
165
|
+
* Pure function; testable with fabricated graphs.
|
|
166
|
+
*/
|
|
167
|
+
function buildPyTopLevelDepIndex(graph) {
|
|
168
|
+
const topLevels = [];
|
|
169
|
+
for (const [name, meta] of graph) {
|
|
170
|
+
if (meta.requiredBy.length === 0)
|
|
171
|
+
topLevels.push(name);
|
|
172
|
+
}
|
|
173
|
+
const result = new Map();
|
|
174
|
+
for (const top of topLevels) {
|
|
175
|
+
const visited = new Set();
|
|
176
|
+
const queue = [top];
|
|
177
|
+
while (queue.length > 0) {
|
|
178
|
+
const name = queue.shift();
|
|
179
|
+
if (visited.has(name))
|
|
180
|
+
continue;
|
|
181
|
+
visited.add(name);
|
|
182
|
+
const bucket = result.get(name) ?? new Set();
|
|
183
|
+
bucket.add(top);
|
|
184
|
+
result.set(name, bucket);
|
|
185
|
+
const meta = graph.get(name);
|
|
186
|
+
if (!meta)
|
|
187
|
+
continue;
|
|
188
|
+
for (const child of meta.requires) {
|
|
189
|
+
if (!visited.has(child))
|
|
190
|
+
queue.push(child);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const sorted = new Map();
|
|
195
|
+
for (const [k, v] of result)
|
|
196
|
+
sorted.set(k, [...v].sort());
|
|
197
|
+
return sorted;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Invoke `pip list` + `pip show --all` against the project's venv and
|
|
201
|
+
* build the top-level attribution index. Returns an empty map when no
|
|
202
|
+
* venv is present or either pip command fails — attribution stays
|
|
203
|
+
* unset, mirroring the TS pack's lockfile-missing case.
|
|
204
|
+
*/
|
|
205
|
+
function loadPyTopLevelDepIndex(cwd) {
|
|
206
|
+
const venvPython = findPyProjectVenvPython(cwd);
|
|
207
|
+
if (!venvPython)
|
|
208
|
+
return new Map();
|
|
209
|
+
const listRaw = (0, runner_1.run)(`${venvPython} -m pip list --format=json 2>/dev/null`, cwd, 60000);
|
|
210
|
+
if (!listRaw)
|
|
211
|
+
return new Map();
|
|
212
|
+
let list;
|
|
213
|
+
try {
|
|
214
|
+
list = JSON.parse(listRaw);
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
return new Map();
|
|
218
|
+
}
|
|
219
|
+
const names = list.map((x) => x.name).filter((n) => !!n);
|
|
220
|
+
if (names.length === 0)
|
|
221
|
+
return new Map();
|
|
222
|
+
// pip show accepts multiple package names in one call; stays well
|
|
223
|
+
// under shell arg-length limits for realistic envs (O(100) pkgs).
|
|
224
|
+
const showRaw = (0, runner_1.run)(`${venvPython} -m pip show ${names.join(' ')} 2>/dev/null`, cwd, 60000);
|
|
225
|
+
if (!showRaw)
|
|
226
|
+
return new Map();
|
|
227
|
+
return buildPyTopLevelDepIndex(parsePipShowOutput(showRaw));
|
|
228
|
+
}
|
|
85
229
|
/**
|
|
86
230
|
* Single source of truth for the python pack's dep-vuln gathering.
|
|
87
231
|
* Consumed by `pyDepVulnsProvider` (capability dispatcher).
|
|
@@ -90,7 +234,10 @@ async function gatherPyDepVulnsResult(cwd) {
|
|
|
90
234
|
const pipAudit = (0, tool_registry_1.findTool)(tool_registry_1.TOOL_DEFS['pip-audit'], cwd);
|
|
91
235
|
if (!pipAudit.available || !pipAudit.path)
|
|
92
236
|
return { kind: 'tool-missing' };
|
|
93
|
-
const
|
|
237
|
+
const cmd = buildPipAuditCommand(cwd, pipAudit.path);
|
|
238
|
+
if (!cmd)
|
|
239
|
+
return { kind: 'tool-missing' };
|
|
240
|
+
const raw = (0, runner_1.run)(cmd, cwd, 120000);
|
|
94
241
|
if (!raw)
|
|
95
242
|
return { kind: 'no-output' };
|
|
96
243
|
try {
|
|
@@ -102,29 +249,103 @@ async function gatherPyDepVulnsResult(cwd) {
|
|
|
102
249
|
vulnIds.push(v.id);
|
|
103
250
|
}
|
|
104
251
|
}
|
|
105
|
-
// pip-audit doesn't carry severity per vuln — look up via
|
|
106
|
-
// Unknown/unreachable IDs fall back to medium (pip-audit's
|
|
107
|
-
|
|
252
|
+
// pip-audit doesn't carry severity or CVSS per vuln — look up via
|
|
253
|
+
// OSV.dev. Unknown/unreachable IDs fall back to medium (pip-audit's
|
|
254
|
+
// legacy default). cvssScore is attached to findings when available.
|
|
255
|
+
const enriched = await (0, osv_1.enrichOsv)(vulnIds);
|
|
108
256
|
let critical = 0;
|
|
109
257
|
let high = 0;
|
|
110
258
|
let medium = 0;
|
|
111
259
|
let low = 0;
|
|
112
260
|
let enrichedCount = 0;
|
|
113
|
-
|
|
114
|
-
const
|
|
261
|
+
const resolveSeverity = (id) => {
|
|
262
|
+
const detail = enriched.get(id);
|
|
263
|
+
const sev = detail?.severity;
|
|
115
264
|
if (sev && sev !== 'unknown') {
|
|
116
265
|
enrichedCount++;
|
|
117
266
|
if (sev === 'critical')
|
|
267
|
+
return 'critical';
|
|
268
|
+
if (sev === 'high')
|
|
269
|
+
return 'high';
|
|
270
|
+
if (sev === 'medium')
|
|
271
|
+
return 'medium';
|
|
272
|
+
return 'low';
|
|
273
|
+
}
|
|
274
|
+
return 'medium';
|
|
275
|
+
};
|
|
276
|
+
// Lazy-built: only load the top-level index when we have at least
|
|
277
|
+
// one finding. Saves a pip list + pip show invocation on clean
|
|
278
|
+
// projects. The index is built once even if multiple findings
|
|
279
|
+
// reference the same package.
|
|
280
|
+
let topLevelIndex = null;
|
|
281
|
+
const getTopLevel = (pkg) => {
|
|
282
|
+
if (topLevelIndex === null)
|
|
283
|
+
topLevelIndex = loadPyTopLevelDepIndex(cwd);
|
|
284
|
+
const parents = topLevelIndex.get(pkg);
|
|
285
|
+
return parents && parents.length > 0 ? parents : undefined;
|
|
286
|
+
};
|
|
287
|
+
const findings = [];
|
|
288
|
+
for (const dep of data.dependencies || []) {
|
|
289
|
+
for (const v of dep.vulns || []) {
|
|
290
|
+
if (!v.id)
|
|
291
|
+
continue;
|
|
292
|
+
const severity = resolveSeverity(v.id);
|
|
293
|
+
if (severity === 'critical')
|
|
118
294
|
critical++;
|
|
119
|
-
else if (
|
|
295
|
+
else if (severity === 'high')
|
|
120
296
|
high++;
|
|
121
|
-
else if (
|
|
297
|
+
else if (severity === 'medium')
|
|
122
298
|
medium++;
|
|
123
299
|
else
|
|
124
300
|
low++;
|
|
301
|
+
const finding = {
|
|
302
|
+
id: v.id,
|
|
303
|
+
package: dep.name ?? 'unknown',
|
|
304
|
+
installedVersion: dep.version,
|
|
305
|
+
tool: 'pip-audit',
|
|
306
|
+
severity,
|
|
307
|
+
};
|
|
308
|
+
// Embedded score from the primary enrichment pass; alias-fallback
|
|
309
|
+
// happens in the batched resolveCvssScores call after this loop.
|
|
310
|
+
const primaryCvss = enriched.get(v.id)?.cvssScore;
|
|
311
|
+
if (primaryCvss !== null && primaryCvss !== undefined)
|
|
312
|
+
finding.cvssScore = primaryCvss;
|
|
313
|
+
// pip-audit returns sorted fix versions ascending; the first is the
|
|
314
|
+
// minimal upgrade that resolves the issue.
|
|
315
|
+
if (v.fix_versions && v.fix_versions.length > 0) {
|
|
316
|
+
finding.fixedVersion = v.fix_versions[0];
|
|
317
|
+
}
|
|
318
|
+
// Filter empty alias entries — ECHO advisories occasionally emit [].
|
|
319
|
+
const aliases = (v.aliases ?? []).filter((a) => a && a.length > 0);
|
|
320
|
+
if (aliases.length > 0)
|
|
321
|
+
finding.aliases = aliases;
|
|
322
|
+
if (v.description)
|
|
323
|
+
finding.summary = v.description;
|
|
324
|
+
// pip-audit doesn't carry advisory URLs; OSV.dev hosts a canonical
|
|
325
|
+
// page per vulnerability id, so synthesize the reference. Render
|
|
326
|
+
// layer can override if a tool-supplied URL becomes available later.
|
|
327
|
+
finding.references = [`https://osv.dev/vulnerability/${v.id}`];
|
|
328
|
+
const parents = getTopLevel(finding.package);
|
|
329
|
+
if (parents)
|
|
330
|
+
finding.topLevelDep = parents;
|
|
331
|
+
findings.push(finding);
|
|
125
332
|
}
|
|
126
|
-
|
|
127
|
-
|
|
333
|
+
}
|
|
334
|
+
// Alias-fallback CVSS pass: PYSEC-* records on OSV.dev frequently
|
|
335
|
+
// lack CVSS vectors that the corresponding CVE alias carries (the
|
|
336
|
+
// pip ecosystem assigns PYSEC ids before CVEs land). When primary
|
|
337
|
+
// lookup misses, we re-query each alias to fill the score.
|
|
338
|
+
if (findings.length > 0) {
|
|
339
|
+
const cvssInputs = findings.map((f) => ({
|
|
340
|
+
primaryId: f.id,
|
|
341
|
+
embeddedCvss: f.cvssScore ?? null,
|
|
342
|
+
aliases: f.aliases ?? [],
|
|
343
|
+
}));
|
|
344
|
+
const resolved = await (0, osv_1.resolveCvssScores)(cvssInputs);
|
|
345
|
+
for (const f of findings) {
|
|
346
|
+
const score = resolved.get(f.id);
|
|
347
|
+
if (score !== null && score !== undefined)
|
|
348
|
+
f.cvssScore = score;
|
|
128
349
|
}
|
|
129
350
|
}
|
|
130
351
|
const envelope = {
|
|
@@ -132,6 +353,7 @@ async function gatherPyDepVulnsResult(cwd) {
|
|
|
132
353
|
tool: 'pip-audit',
|
|
133
354
|
enrichment: enrichedCount > 0 ? 'osv.dev' : null,
|
|
134
355
|
counts: { critical, high, medium, low },
|
|
356
|
+
findings,
|
|
135
357
|
};
|
|
136
358
|
return { kind: 'success', envelope };
|
|
137
359
|
}
|
|
@@ -364,6 +586,144 @@ const pyTestFrameworkProvider = {
|
|
|
364
586
|
return gatherPyTestFrameworkResult(cwd);
|
|
365
587
|
},
|
|
366
588
|
};
|
|
589
|
+
/**
|
|
590
|
+
* Check whether an absolute path points at a runnable Python
|
|
591
|
+
* interpreter (a file; Windows `python.exe` not yet supported —
|
|
592
|
+
* matches the pre-10h.4.4 behavior).
|
|
593
|
+
*/
|
|
594
|
+
function isPyExecutable(abs) {
|
|
595
|
+
try {
|
|
596
|
+
return fs.statSync(abs).isFile();
|
|
597
|
+
}
|
|
598
|
+
catch {
|
|
599
|
+
return false;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
/**
|
|
603
|
+
* Given a candidate venv root directory, return the path to its
|
|
604
|
+
* `bin/python[3]` binary if present, or null otherwise. Extracted so
|
|
605
|
+
* the fallback chain below can reuse it across detection strategies.
|
|
606
|
+
*/
|
|
607
|
+
function venvRootToPython(venvRoot) {
|
|
608
|
+
for (const exe of ['python', 'python3']) {
|
|
609
|
+
const candidate = path.join(venvRoot, 'bin', exe);
|
|
610
|
+
if (isPyExecutable(candidate))
|
|
611
|
+
return candidate;
|
|
612
|
+
}
|
|
613
|
+
return null;
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* Locate the project's own Python interpreter.
|
|
617
|
+
*
|
|
618
|
+
* Detection order (fail-cheap first, subprocess last):
|
|
619
|
+
* 1. `./.venv` or `./venv` under cwd — uv default, in-project
|
|
620
|
+
* poetry (`virtualenvs.in-project = true`), hand-rolled venvs.
|
|
621
|
+
* Zero-cost stat() checks.
|
|
622
|
+
* 2. `$VIRTUAL_ENV` env var — set by `source .venv/bin/activate`
|
|
623
|
+
* and poetry shell. Catches externally-activated envs.
|
|
624
|
+
* 3. `poetry env info --path` — external poetry venvs
|
|
625
|
+
* (default `virtualenvs.in-project = false` on most installs;
|
|
626
|
+
* env lives in `~/.cache/pypoetry/virtualenvs/<hash>`).
|
|
627
|
+
* 4. `pipenv --venv` — pipenv default stores elsewhere too.
|
|
628
|
+
*
|
|
629
|
+
* Returns null if no venv is resolvable — the provider then skips
|
|
630
|
+
* cleanly rather than falling through to pip-licenses's install env
|
|
631
|
+
* (which would report dxkit's own packages, not the project's).
|
|
632
|
+
*/
|
|
633
|
+
function findPyProjectVenvPython(cwd) {
|
|
634
|
+
// 1. Conventional in-project venv roots (fast path).
|
|
635
|
+
for (const dir of ['.venv', 'venv']) {
|
|
636
|
+
const p = venvRootToPython(path.join(cwd, dir));
|
|
637
|
+
if (p)
|
|
638
|
+
return p;
|
|
639
|
+
}
|
|
640
|
+
// 2. Caller-activated env (poetry shell, source activate, etc.).
|
|
641
|
+
const active = process.env.VIRTUAL_ENV;
|
|
642
|
+
if (active) {
|
|
643
|
+
const p = venvRootToPython(active);
|
|
644
|
+
if (p)
|
|
645
|
+
return p;
|
|
646
|
+
}
|
|
647
|
+
// 3. External poetry venv. `poetry env info --path` returns the
|
|
648
|
+
// active env's root directory on stdout or nothing if no env.
|
|
649
|
+
const poetryPath = (0, runner_1.run)('poetry env info --path 2>/dev/null', cwd, 10000).trim();
|
|
650
|
+
if (poetryPath) {
|
|
651
|
+
const p = venvRootToPython(poetryPath);
|
|
652
|
+
if (p)
|
|
653
|
+
return p;
|
|
654
|
+
}
|
|
655
|
+
// 4. External pipenv venv.
|
|
656
|
+
const pipenvPath = (0, runner_1.run)('pipenv --venv 2>/dev/null', cwd, 10000).trim();
|
|
657
|
+
if (pipenvPath) {
|
|
658
|
+
const p = venvRootToPython(pipenvPath);
|
|
659
|
+
if (p)
|
|
660
|
+
return p;
|
|
661
|
+
}
|
|
662
|
+
return null;
|
|
663
|
+
}
|
|
664
|
+
/**
|
|
665
|
+
* Single source of truth for the python pack's license gathering.
|
|
666
|
+
* Consumed by `pyLicensesProvider` (capability dispatcher).
|
|
667
|
+
*
|
|
668
|
+
* Gating is strict — both a Python manifest AND a project venv are
|
|
669
|
+
* required. Reason: pip-licenses operates on the active Python
|
|
670
|
+
* environment, so invoking it without `--python <project-venv>` would
|
|
671
|
+
* report whatever packages are installed in dxkit's graphify-venv
|
|
672
|
+
* (i.e. garbage). Returns null when either prerequisite is missing so
|
|
673
|
+
* the dispatcher drops the pack cleanly.
|
|
674
|
+
*/
|
|
675
|
+
function gatherPyLicensesResult(cwd) {
|
|
676
|
+
const hasManifest = (0, runner_1.fileExists)(cwd, 'pyproject.toml') ||
|
|
677
|
+
(0, runner_1.fileExists)(cwd, 'setup.py') ||
|
|
678
|
+
(0, runner_1.fileExists)(cwd, 'requirements.txt') ||
|
|
679
|
+
(0, runner_1.fileExists)(cwd, 'Pipfile');
|
|
680
|
+
if (!hasManifest)
|
|
681
|
+
return null;
|
|
682
|
+
const venvPython = findPyProjectVenvPython(cwd);
|
|
683
|
+
if (!venvPython)
|
|
684
|
+
return null;
|
|
685
|
+
const status = (0, tool_registry_1.findTool)(tool_registry_1.TOOL_DEFS['pip-licenses'], cwd);
|
|
686
|
+
if (!status.available || !status.path)
|
|
687
|
+
return null;
|
|
688
|
+
const raw = (0, runner_1.run)(`${status.path} --python ${venvPython} --format=json --with-license-file --no-license-path --with-description --with-urls --with-authors 2>/dev/null`, cwd, 120000);
|
|
689
|
+
if (!raw)
|
|
690
|
+
return null;
|
|
691
|
+
let data;
|
|
692
|
+
try {
|
|
693
|
+
data = JSON.parse(raw);
|
|
694
|
+
}
|
|
695
|
+
catch {
|
|
696
|
+
return null;
|
|
697
|
+
}
|
|
698
|
+
if (!Array.isArray(data))
|
|
699
|
+
return null;
|
|
700
|
+
const findings = [];
|
|
701
|
+
for (const entry of data) {
|
|
702
|
+
if (!entry.Name || !entry.Version)
|
|
703
|
+
continue;
|
|
704
|
+
const licenseType = entry.License && entry.License !== 'UNKNOWN' ? entry.License : 'UNKNOWN';
|
|
705
|
+
findings.push({
|
|
706
|
+
package: entry.Name,
|
|
707
|
+
version: entry.Version,
|
|
708
|
+
licenseType,
|
|
709
|
+
licenseText: entry.LicenseText && entry.LicenseText !== 'UNKNOWN' ? entry.LicenseText : undefined,
|
|
710
|
+
sourceUrl: entry.URL && entry.URL !== 'UNKNOWN' ? entry.URL : undefined,
|
|
711
|
+
description: entry.Description && entry.Description !== 'UNKNOWN' ? entry.Description : undefined,
|
|
712
|
+
supplier: entry.Author && entry.Author !== 'UNKNOWN' ? entry.Author : undefined,
|
|
713
|
+
});
|
|
714
|
+
}
|
|
715
|
+
return {
|
|
716
|
+
schemaVersion: 1,
|
|
717
|
+
tool: 'pip-licenses',
|
|
718
|
+
findings,
|
|
719
|
+
};
|
|
720
|
+
}
|
|
721
|
+
const pyLicensesProvider = {
|
|
722
|
+
source: 'python',
|
|
723
|
+
async gather(cwd) {
|
|
724
|
+
return gatherPyLicensesResult(cwd);
|
|
725
|
+
},
|
|
726
|
+
};
|
|
367
727
|
exports.python = {
|
|
368
728
|
id: 'python',
|
|
369
729
|
displayName: 'Python',
|
|
@@ -377,7 +737,7 @@ exports.python = {
|
|
|
377
737
|
(0, runner_1.fileExists)(cwd, 'Pipfile') ||
|
|
378
738
|
hasPyFileWithinDepth(cwd, 2));
|
|
379
739
|
},
|
|
380
|
-
tools: ['ruff', 'pip-audit', 'coverage-py'],
|
|
740
|
+
tools: ['ruff', 'pip-audit', 'coverage-py', 'pip-licenses'],
|
|
381
741
|
semgrepRulesets: ['p/python'],
|
|
382
742
|
capabilities: {
|
|
383
743
|
depVulns: pyDepVulnsProvider,
|
|
@@ -385,6 +745,7 @@ exports.python = {
|
|
|
385
745
|
coverage: pyCoverageProvider,
|
|
386
746
|
imports: pyImportsProvider,
|
|
387
747
|
testFramework: pyTestFrameworkProvider,
|
|
748
|
+
licenses: pyLicensesProvider,
|
|
388
749
|
},
|
|
389
750
|
mapLintSeverity: mapRuffSeverity,
|
|
390
751
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/languages/python.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/languages/python.ts"],"names":[],"mappings":"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"}
|
package/dist/languages/rust.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Coverage } from '../analyzers/tools/coverage';
|
|
2
|
+
import type { DepVulnFinding, SeverityCounts } from './capabilities/types';
|
|
2
3
|
import type { LanguageSupport, LintSeverity } from './types';
|
|
3
4
|
/**
|
|
4
5
|
* Tier a clippy or rustc lint by its code name.
|
|
@@ -12,6 +13,33 @@ import type { LanguageSupport, LintSeverity } from './types';
|
|
|
12
13
|
* `deprecated` are meaningful but rarely critical.
|
|
13
14
|
*/
|
|
14
15
|
export declare function mapClippyLintSeverity(code: string | undefined): LintSeverity;
|
|
16
|
+
/**
|
|
17
|
+
* Pure parser for `cargo-audit --json` output. Extracted from the gather
|
|
18
|
+
* function so it can be exhaustively unit-tested without a real Cargo
|
|
19
|
+
* toolchain on the dev machine (10h.5 release-time validation runs the
|
|
20
|
+
* full pipeline). Returns null when the input is malformed or contains
|
|
21
|
+
* no vulnerabilities object; otherwise returns counts + findings ready
|
|
22
|
+
* for downstream alias-fallback enrichment.
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseCargoAuditOutput(raw: string): {
|
|
25
|
+
counts: SeverityCounts;
|
|
26
|
+
findings: DepVulnFinding[];
|
|
27
|
+
} | null;
|
|
28
|
+
/**
|
|
29
|
+
* Pure parser for `cargo metadata --format-version 1`, returning a
|
|
30
|
+
* per-crate-name index of the top-level manifest deps that transitively
|
|
31
|
+
* pull that crate. Mirrors the TS pack's `buildTsTopLevelDepIndex`
|
|
32
|
+
* shape so bom + HTML renders can use identical grouping logic.
|
|
33
|
+
*
|
|
34
|
+
* Cargo's resolve graph uses opaque package ids (e.g.
|
|
35
|
+
* `openssl 0.10.50 (registry+...)`). We map id→name via `packages[]`
|
|
36
|
+
* and then BFS starting from each direct dep of `resolve.root`
|
|
37
|
+
* (derived from the workspace root's `resolve.nodes[i].dependencies`).
|
|
38
|
+
*
|
|
39
|
+
* Returns an empty map on malformed input rather than throwing — the
|
|
40
|
+
* caller keeps attribution unset so dep-vuln gather still succeeds.
|
|
41
|
+
*/
|
|
42
|
+
export declare function buildRustTopLevelDepIndex(raw: string): Map<string, string[]>;
|
|
15
43
|
/**
|
|
16
44
|
* Capture Rust `use` path specifiers from source text. Handles simple
|
|
17
45
|
* paths (`use std::io;`) and grouped (`use std::{io, fs};`). Rust has
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../src/languages/rust.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../src/languages/rust.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,6BAA6B,CAAC;AAO1E,OAAO,KAAK,EAEV,cAAc,EAQd,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAyE7D;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAM5E;AA+DD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,GACV;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,GAAG,IAAI,CAmE/D;AAiBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAoD5E;AA2KD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ/D;AAuID,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAyCvF;AAED,eAAO,MAAM,IAAI,EAAE,eA2BlB,CAAC"}
|