circle-ir 3.164.0 → 3.166.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.
@@ -33,8 +33,12 @@
33
33
  *
34
34
  * # Scope
35
35
  *
36
- * - Java only (relies on `classifyEntryPointTier`, which is Java-primary).
37
- * Non-Java files: pass-through, no annotation, no drop.
36
+ * - Java + Python + JS/TS + Go + Bash (as of 3.166.0, #237). Rust /
37
+ * HTML / Vue / unknown languages pass through unchanged. The
38
+ * `SUPPORTED_LANGUAGES` set below controls language admission; the
39
+ * per-language safety guard (`entryPointKeysByLanguage.get(lang) === 0
40
+ * → keep`) preserves recall on library-only bundles where the
41
+ * classifier truly has no signal.
38
42
  * - Project-level only. Per-file `analyze()` never runs this helper —
39
43
  * the reachability question is meaningful only across a full scan.
40
44
  * - Only H+C findings from taint passes are candidates for drop. Metric
@@ -158,8 +162,18 @@ export function applyRequireEntryPath(fileAnalyses, options = {}) {
158
162
  const graph = buildProjectMethodGraph(fileAnalyses);
159
163
  if (graph.methodsByKey.size === 0)
160
164
  return;
165
+ // Per-file classifier context (calls, runtime_registrations) — used
166
+ // by the polyglot classifier for Go inline call walks and JS/TS +
167
+ // Python handler resolution. Added 3.166.0 (#237).
168
+ const fileContext = buildFileContext(fileAnalyses);
161
169
  // Classify entry points once — reused for every finding.
162
- const entryPointKeys = collectEntryPointKeys(graph);
170
+ const entryPointKeys = collectEntryPointKeys(graph, fileContext);
171
+ // Per-language entry-point-key count — used by the safety guard
172
+ // (#237): if a language has ZERO classified entry points across the
173
+ // whole scan, findings on that language MUST be preserved regardless
174
+ // of profile / BFS. Otherwise, the polyglot expansion could over-drop
175
+ // on languages where the classifier's positive signal is thin.
176
+ const entryPointKeysByLanguage = countEntryPointKeysByLanguage(graph, entryPointKeys);
163
177
  const profileResolver = makeProfileResolver(options.projectProfile);
164
178
  for (const fa of fileAnalyses) {
165
179
  const findings = fa.analysis.findings;
@@ -167,7 +181,7 @@ export function applyRequireEntryPath(fileAnalyses, options = {}) {
167
181
  continue;
168
182
  const kept = [];
169
183
  for (const finding of findings) {
170
- const decision = classifyFinding(finding, fa.analysis, graph, entryPointKeys, profileResolver(fa.file));
184
+ const decision = classifyFinding(finding, fa.analysis, graph, entryPointKeys, entryPointKeysByLanguage, profileResolver(fa.file));
171
185
  switch (decision.action) {
172
186
  case 'keep':
173
187
  kept.push(finding);
@@ -291,19 +305,72 @@ function resolveCalleeKeys(call, methodsByKey, methodsByName) {
291
305
  // ---------------------------------------------------------------------------
292
306
  // Entry-point classification
293
307
  // ---------------------------------------------------------------------------
294
- function collectEntryPointKeys(graph) {
308
+ function collectEntryPointKeys(graph, fileContext) {
295
309
  const entryPoints = new Set();
296
310
  for (const rec of graph.methodsByKey.values()) {
311
+ const fileCtx = fileContext.get(rec.file);
297
312
  const tier = classifyEntryPointTier(rec.method, rec.enclosingType, {
298
313
  types: [rec.enclosingType],
299
314
  language: rec.language,
315
+ filePath: rec.file,
316
+ calls: fileCtx?.calls ?? null,
317
+ runtimeRegistrations: fileCtx?.runtimeRegistrations ?? null,
300
318
  });
301
319
  if (tier === 'TIER_1_ENTRY_POINT')
302
320
  entryPoints.add(rec.key);
303
321
  }
304
322
  return entryPoints;
305
323
  }
306
- function classifyFinding(finding, ir, graph, entryPointKeys, profile) {
324
+ function buildFileContext(fileAnalyses) {
325
+ const out = new Map();
326
+ for (const fa of fileAnalyses) {
327
+ out.set(fa.file, {
328
+ language: (fa.analysis.meta.language ?? '').toLowerCase(),
329
+ calls: fa.analysis.calls ?? null,
330
+ runtimeRegistrations: fa.analysis.runtime_registrations ?? null,
331
+ });
332
+ }
333
+ return out;
334
+ }
335
+ /**
336
+ * Bucket the entry-point-keys set by the language of each key's method
337
+ * record. Used by `classifyFinding` to enforce the per-language safety
338
+ * guard: if a language has zero Tier-1 entry points, keep every
339
+ * finding on that language (preserves recall — see #237 plan).
340
+ */
341
+ function countEntryPointKeysByLanguage(graph, entryPointKeys) {
342
+ const out = new Map();
343
+ for (const key of entryPointKeys) {
344
+ const rec = graph.methodsByKey.get(key);
345
+ if (!rec)
346
+ continue;
347
+ out.set(rec.language, (out.get(rec.language) ?? 0) + 1);
348
+ }
349
+ return out;
350
+ }
351
+ /**
352
+ * Languages whose entry-point classifier is expected to emit at least
353
+ * some Tier-1 signal on a well-formed application. Files whose
354
+ * language is NOT in this set short-circuit to `keep` — the classifier
355
+ * would return `TIER_UNKNOWN` and dropping on the miss branch would
356
+ * strip legitimate signal on languages we haven't taught the
357
+ * classifier yet (Rust, HTML, Vue).
358
+ *
359
+ * Added 3.166.0 for cognium-dev #237 polyglot expansion — replaces the
360
+ * hardcoded `if (language !== 'java')` gate.
361
+ */
362
+ const SUPPORTED_LANGUAGES = new Set([
363
+ 'java',
364
+ 'python',
365
+ 'javascript',
366
+ 'typescript',
367
+ 'tsx',
368
+ 'jsx',
369
+ 'go',
370
+ 'bash',
371
+ 'shell',
372
+ ]);
373
+ function classifyFinding(finding, ir, graph, entryPointKeys, entryPointKeysByLanguage, profile) {
307
374
  // Only taint findings from the security category are in scope.
308
375
  if (finding.category !== 'security')
309
376
  return { action: 'keep' };
@@ -318,13 +385,21 @@ function classifyFinding(finding, ir, graph, entryPointKeys, profile) {
318
385
  // are preserved regardless of reachability (may still be annotated
319
386
  // when we can).
320
387
  const isHighOrCritical = finding.severity === 'high' || finding.severity === 'critical';
321
- // Java-only. The classifier is Java-primary (`classifyEntryPointTier`
322
- // returns `TIER_UNKNOWN` for every other language), so applying the
323
- // reachability drop to non-Java findings would strip legitimate
324
- // signal on Python / Node / Go / Rust — pass through unchanged.
388
+ // Polyglot-supported languages (#237). Rust / HTML / Vue / unknown
389
+ // route via `keep` the classifier lacks the framework tables to
390
+ // decide, and misclassifying to TIER_UNKNOWN cannot support a drop.
325
391
  const language = (ir.meta.language ?? '').toLowerCase();
326
- if (language !== 'java')
392
+ if (!SUPPORTED_LANGUAGES.has(language))
393
+ return { action: 'keep' };
394
+ // Safety guard (#237). If the language's classifier found ZERO
395
+ // Tier-1 entry points across the whole scan, the reachability
396
+ // question has no answer we can trust — preserve the finding. This
397
+ // is what keeps recall on library / helper-only bundles where the
398
+ // classifier truly has no signal, and matches the plan's per-file-
399
+ // language guard specification.
400
+ if ((entryPointKeysByLanguage.get(language) ?? 0) === 0) {
327
401
  return { action: 'keep' };
402
+ }
328
403
  // Resolve containing method by (file, line-range) lookup.
329
404
  const containing = findContainingMethod(finding, ir, graph);
330
405
  if (!containing) {
@@ -1 +1 @@
1
- {"version":3,"file":"require-entry-path.js","sourceRoot":"","sources":["../../src/analysis/require-entry-path.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"require-entry-path.js","sourceRoot":"","sources":["../../src/analysis/require-entry-path.ts"],"names":[],"mappings":"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"}
@@ -20148,9 +20148,28 @@ function methodIsSupertypeLifecycleEntryPoint(method, enclosingType) {
20148
20148
  return false;
20149
20149
  }
20150
20150
  function classifyEntryPointTier(method, enclosingType, ctx) {
20151
- const language = (ctx.language ?? "").toLowerCase();
20152
- if (language !== "java") return "TIER_UNKNOWN";
20153
20151
  if (!method) return "TIER_UNKNOWN";
20152
+ const language = (ctx.language ?? "").toLowerCase();
20153
+ switch (language) {
20154
+ case "java":
20155
+ return classifyJavaEntryPoint(method, enclosingType);
20156
+ case "python":
20157
+ return classifyPythonEntryPoint(method, enclosingType, ctx);
20158
+ case "javascript":
20159
+ case "typescript":
20160
+ case "tsx":
20161
+ case "jsx":
20162
+ return classifyJsTsEntryPoint(method, enclosingType, ctx);
20163
+ case "go":
20164
+ return classifyGoEntryPoint(method, enclosingType, ctx);
20165
+ case "bash":
20166
+ case "shell":
20167
+ return classifyBashEntryPoint(method, enclosingType, ctx);
20168
+ default:
20169
+ return "TIER_UNKNOWN";
20170
+ }
20171
+ }
20172
+ function classifyJavaEntryPoint(method, enclosingType) {
20154
20173
  if (classShapeIsLibraryFacade(enclosingType)) {
20155
20174
  return "TIER_3_LIBRARY_API";
20156
20175
  }
@@ -20174,6 +20193,413 @@ function shouldGateInterproceduralParam(sourceType, enclosingMethod, enclosingTy
20174
20193
  const tier = classifyEntryPointTier(enclosingMethod, enclosingType, ctx);
20175
20194
  return tier === "TIER_3_LIBRARY_API";
20176
20195
  }
20196
+ var POLYGLOT_LIBRARY_PATH_FRAGMENTS = [
20197
+ "/lib/",
20198
+ "/libapi/",
20199
+ "/libs/",
20200
+ "/utils/",
20201
+ "/util/",
20202
+ "/helpers/",
20203
+ "/helper/",
20204
+ "/interop/",
20205
+ "/vendor/",
20206
+ "/vendored/",
20207
+ "/node_modules/",
20208
+ "/dist/",
20209
+ "/build/",
20210
+ "/_internal/",
20211
+ "/__tests__/",
20212
+ "/tests/",
20213
+ "/test/",
20214
+ "/testing/",
20215
+ "/spec/",
20216
+ "/specs/",
20217
+ "/fixtures/",
20218
+ "/mocks/",
20219
+ "/__mocks__/"
20220
+ ];
20221
+ var POLYGLOT_TEST_FILE_MARKERS = [
20222
+ ".test.",
20223
+ ".spec.",
20224
+ "_test.",
20225
+ "_spec.",
20226
+ ".tests."
20227
+ ];
20228
+ function pathLooksLikeLibraryOrTest(filePath) {
20229
+ if (!filePath) return false;
20230
+ const normalized = filePath.replace(/\\/g, "/").toLowerCase();
20231
+ const padded = `/${normalized}/`;
20232
+ for (const frag of POLYGLOT_LIBRARY_PATH_FRAGMENTS) {
20233
+ if (padded.includes(frag)) return true;
20234
+ }
20235
+ const slash = normalized.lastIndexOf("/");
20236
+ const base = slash >= 0 ? normalized.slice(slash + 1) : normalized;
20237
+ for (const marker of POLYGLOT_TEST_FILE_MARKERS) {
20238
+ if (base.includes(marker)) return true;
20239
+ }
20240
+ return false;
20241
+ }
20242
+ var PYTHON_TIER_1_DECORATOR_NAMES = /* @__PURE__ */ new Set([
20243
+ // Flask
20244
+ "route",
20245
+ "get",
20246
+ "post",
20247
+ "put",
20248
+ "delete",
20249
+ "patch",
20250
+ "options",
20251
+ "head",
20252
+ "before_request",
20253
+ "after_request",
20254
+ "errorhandler",
20255
+ "teardown_request",
20256
+ // FastAPI
20257
+ "websocket",
20258
+ "websocket_route",
20259
+ "api_route",
20260
+ "middleware",
20261
+ // Django
20262
+ "login_required",
20263
+ "csrf_exempt",
20264
+ "csrf_protect",
20265
+ "require_http_methods",
20266
+ "require_GET",
20267
+ "require_POST",
20268
+ "require_safe",
20269
+ "permission_required",
20270
+ "user_passes_test",
20271
+ "staff_member_required",
20272
+ "api_view",
20273
+ "action",
20274
+ "detail_route",
20275
+ "list_route",
20276
+ "renderer_classes",
20277
+ "authentication_classes",
20278
+ "permission_classes",
20279
+ // Click / Typer
20280
+ "command",
20281
+ "group",
20282
+ // Celery / RQ / dramatiq
20283
+ "task",
20284
+ "shared_task",
20285
+ "periodic_task",
20286
+ "actor",
20287
+ // aiohttp
20288
+ "view",
20289
+ // pytest fixtures ARE library callback surfaces (test framework calls
20290
+ // them), so we mark them TIER_1 too — a taint sink inside a fixture
20291
+ // is genuinely reachable when the test runs.
20292
+ "fixture"
20293
+ ]);
20294
+ function classifyPythonEntryPoint(method, enclosingType, ctx) {
20295
+ if (pathLooksLikeLibraryOrTest(ctx.filePath)) {
20296
+ return "TIER_3_LIBRARY_API";
20297
+ }
20298
+ if (pythonDecoratorLooksTier1(method.annotations)) {
20299
+ return "TIER_1_ENTRY_POINT";
20300
+ }
20301
+ if (methodIsRuntimeRegistrationHandler(method, ctx.runtimeRegistrations)) {
20302
+ return "TIER_1_ENTRY_POINT";
20303
+ }
20304
+ if (method.name === "main" && !enclosingType) {
20305
+ return "TIER_1_ENTRY_POINT";
20306
+ }
20307
+ if (method.name === "main" && enclosingType && looksLikeModuleType(enclosingType)) {
20308
+ return "TIER_1_ENTRY_POINT";
20309
+ }
20310
+ if (method.name.startsWith("_") && !method.name.startsWith("__")) {
20311
+ return "TIER_3_LIBRARY_API";
20312
+ }
20313
+ return "TIER_UNKNOWN";
20314
+ }
20315
+ function pythonDecoratorLooksTier1(annotations) {
20316
+ if (!annotations || annotations.length === 0) return false;
20317
+ for (const raw of annotations) {
20318
+ let name2 = raw.replace(/^@/, "").replace(/[<(].*$/, "").trim();
20319
+ if (!name2) continue;
20320
+ const dot = name2.lastIndexOf(".");
20321
+ if (dot >= 0) name2 = name2.slice(dot + 1);
20322
+ if (PYTHON_TIER_1_DECORATOR_NAMES.has(name2)) return true;
20323
+ }
20324
+ return false;
20325
+ }
20326
+ function looksLikeModuleType(t) {
20327
+ return !t.extends && (!t.implements || t.implements.length === 0) && (!t.annotations || t.annotations.length === 0);
20328
+ }
20329
+ var JSTS_TIER_1_METHOD_DECORATORS = /* @__PURE__ */ new Set([
20330
+ // NestJS HTTP method decorators
20331
+ "Get",
20332
+ "Post",
20333
+ "Put",
20334
+ "Delete",
20335
+ "Patch",
20336
+ "Head",
20337
+ "Options",
20338
+ "All",
20339
+ // NestJS WebSocket
20340
+ "SubscribeMessage",
20341
+ "MessageBody",
20342
+ "ConnectedSocket",
20343
+ // NestJS microservices / event
20344
+ "EventPattern",
20345
+ "MessagePattern",
20346
+ "GrpcMethod",
20347
+ "GrpcStreamMethod",
20348
+ // Angular / other DI-registered handler hooks
20349
+ "HostListener"
20350
+ ]);
20351
+ var JSTS_TIER_1_CLASS_DECORATORS = /* @__PURE__ */ new Set([
20352
+ "Controller",
20353
+ "RestController",
20354
+ "Resolver",
20355
+ "WebSocketGateway",
20356
+ "Gateway"
20357
+ ]);
20358
+ var JSTS_TIER_1_MODULE_EXPORTS = /* @__PURE__ */ new Set([
20359
+ // AWS Lambda / Google Cloud Functions / Netlify / Vercel
20360
+ "handler",
20361
+ // Next.js App Router — HTTP method exports
20362
+ "GET",
20363
+ "POST",
20364
+ "PUT",
20365
+ "DELETE",
20366
+ "PATCH",
20367
+ "HEAD",
20368
+ "OPTIONS",
20369
+ // SvelteKit / Remix
20370
+ "load",
20371
+ "action",
20372
+ // Next.js middleware
20373
+ "middleware"
20374
+ ]);
20375
+ function classifyJsTsEntryPoint(method, enclosingType, ctx) {
20376
+ if (pathLooksLikeLibraryOrTest(ctx.filePath)) {
20377
+ return "TIER_3_LIBRARY_API";
20378
+ }
20379
+ if (annotationsInclude(method.annotations, JSTS_TIER_1_METHOD_DECORATORS)) {
20380
+ return "TIER_1_ENTRY_POINT";
20381
+ }
20382
+ if (enclosingType && annotationsInclude(enclosingType.annotations, JSTS_TIER_1_CLASS_DECORATORS)) {
20383
+ return "TIER_1_ENTRY_POINT";
20384
+ }
20385
+ if (methodIsRuntimeRegistrationHandler(method, ctx.runtimeRegistrations)) {
20386
+ return "TIER_1_ENTRY_POINT";
20387
+ }
20388
+ if (JSTS_TIER_1_MODULE_EXPORTS.has(method.name) && (!enclosingType || looksLikeModuleType(enclosingType))) {
20389
+ return "TIER_1_ENTRY_POINT";
20390
+ }
20391
+ if (method.name === "main" && (!enclosingType || looksLikeModuleType(enclosingType))) {
20392
+ return "TIER_1_ENTRY_POINT";
20393
+ }
20394
+ return "TIER_UNKNOWN";
20395
+ }
20396
+ var GO_HTTP_REGISTRAR_METHODS = /* @__PURE__ */ new Set([
20397
+ // net/http
20398
+ "HandleFunc",
20399
+ "Handle",
20400
+ // gorilla/mux, chi, echo, gin
20401
+ "GET",
20402
+ "POST",
20403
+ "PUT",
20404
+ "DELETE",
20405
+ "PATCH",
20406
+ "HEAD",
20407
+ "OPTIONS",
20408
+ "Any",
20409
+ "Get",
20410
+ "Post",
20411
+ "Put",
20412
+ "Delete",
20413
+ "Patch",
20414
+ "Head",
20415
+ "Options",
20416
+ // gorilla/chi/gin sub-routers
20417
+ "Route",
20418
+ "Mount",
20419
+ "Method"
20420
+ ]);
20421
+ var GO_HTTP_REGISTRAR_RECEIVERS = [
20422
+ "http",
20423
+ // net/http.HandleFunc
20424
+ "mux",
20425
+ // gorilla/mux
20426
+ "router",
20427
+ // chi/gin/gorilla common
20428
+ "r",
20429
+ // gin/chi convention
20430
+ "e",
20431
+ // echo convention
20432
+ "g",
20433
+ // gin group convention
20434
+ "app",
20435
+ // fiber convention
20436
+ "engine",
20437
+ // gin engine convention
20438
+ "srv",
20439
+ "server"
20440
+ ];
20441
+ function classifyGoEntryPoint(method, enclosingType, ctx) {
20442
+ if (pathLooksLikeLibraryOrTest(ctx.filePath)) {
20443
+ return "TIER_3_LIBRARY_API";
20444
+ }
20445
+ if (ctx.filePath && ctx.filePath.toLowerCase().endsWith("_test.go")) {
20446
+ return "TIER_3_LIBRARY_API";
20447
+ }
20448
+ if (method.name === "main" && enclosingType?.package === "main") {
20449
+ return "TIER_1_ENTRY_POINT";
20450
+ }
20451
+ if (methodHasNetHttpHandlerSignature(method)) {
20452
+ return "TIER_1_ENTRY_POINT";
20453
+ }
20454
+ if (methodLooksLikeGrpcHandler(method, enclosingType)) {
20455
+ return "TIER_1_ENTRY_POINT";
20456
+ }
20457
+ if (methodIsRegisteredByGoHttpFramework(method, ctx.calls)) {
20458
+ return "TIER_1_ENTRY_POINT";
20459
+ }
20460
+ return "TIER_UNKNOWN";
20461
+ }
20462
+ function methodHasNetHttpHandlerSignature(method) {
20463
+ const params = method.parameters ?? [];
20464
+ if (params.length !== 2) return false;
20465
+ const p0 = normalizeGoType(params[0]?.type ?? "");
20466
+ const p1 = normalizeGoType(params[1]?.type ?? "");
20467
+ const p0IsWriter = p0.includes("http.ResponseWriter") || p0.endsWith("ResponseWriter");
20468
+ const p1IsRequest = p1.includes("http.Request") || p1.endsWith("*Request") || p1.endsWith("Request");
20469
+ return p0IsWriter && p1IsRequest;
20470
+ }
20471
+ function methodLooksLikeGrpcHandler(method, enclosingType) {
20472
+ if (!enclosingType) return false;
20473
+ const params = method.parameters ?? [];
20474
+ if (params.length < 2) return false;
20475
+ const p0 = normalizeGoType(params[0]?.type ?? "");
20476
+ if (!p0.includes("context.Context") && !p0.endsWith("Context")) return false;
20477
+ const typeName = enclosingType.name ?? "";
20478
+ if (!/(Server|Service|Handler)$/.test(typeName)) return false;
20479
+ return true;
20480
+ }
20481
+ function normalizeGoType(t) {
20482
+ return t.replace(/\s+/g, "").replace(/^\*+/, "");
20483
+ }
20484
+ function methodIsRegisteredByGoHttpFramework(method, calls) {
20485
+ if (!calls || calls.length === 0) return false;
20486
+ for (const call of calls) {
20487
+ if (!GO_HTTP_REGISTRAR_METHODS.has(call.method_name)) continue;
20488
+ const receiver = call.receiver ?? "";
20489
+ if (!goRegistrarReceiverMatches(receiver)) continue;
20490
+ const args2 = call.arguments ?? [];
20491
+ for (const arg of args2) {
20492
+ const expr = (arg.expression ?? arg.variable ?? arg.value ?? "").trim();
20493
+ if (!expr) continue;
20494
+ const short = expr.slice(expr.lastIndexOf(".") + 1);
20495
+ if (short === method.name) return true;
20496
+ }
20497
+ }
20498
+ return false;
20499
+ }
20500
+ function goRegistrarReceiverMatches(receiver) {
20501
+ const trimmed = receiver.trim();
20502
+ if (!trimmed) return false;
20503
+ for (const target of GO_HTTP_REGISTRAR_RECEIVERS) {
20504
+ if (trimmed === target) return true;
20505
+ if (trimmed.endsWith(`.${target}`)) return true;
20506
+ }
20507
+ return false;
20508
+ }
20509
+ var BASH_POSITIONAL_TOKENS = [
20510
+ "$1",
20511
+ "$2",
20512
+ "$3",
20513
+ "$4",
20514
+ "$5",
20515
+ "$6",
20516
+ "$7",
20517
+ "$8",
20518
+ "$9",
20519
+ "$@",
20520
+ "$*",
20521
+ "$#",
20522
+ "${1",
20523
+ "${2",
20524
+ "${3",
20525
+ "${@",
20526
+ "getopts"
20527
+ ];
20528
+ var BASH_LIBRARY_FILENAME_PREFIXES = [
20529
+ "benign_",
20530
+ "safe_",
20531
+ "lib_",
20532
+ "common_",
20533
+ "helpers_",
20534
+ "_"
20535
+ ];
20536
+ function classifyBashEntryPoint(method, enclosingType, ctx) {
20537
+ if (pathLooksLikeLibraryOrTest(ctx.filePath)) {
20538
+ return "TIER_3_LIBRARY_API";
20539
+ }
20540
+ if (bashFilenameLooksLikeLibrary(ctx.filePath)) {
20541
+ return "TIER_3_LIBRARY_API";
20542
+ }
20543
+ if (method.name === "main") {
20544
+ return "TIER_1_ENTRY_POINT";
20545
+ }
20546
+ if (methodConsumesPositionalArgs(method, ctx.calls)) {
20547
+ return "TIER_1_ENTRY_POINT";
20548
+ }
20549
+ if (enclosingType && looksLikeModuleType(enclosingType) && fileHasPositionalArgUse(ctx.calls)) {
20550
+ return "TIER_1_ENTRY_POINT";
20551
+ }
20552
+ return "TIER_UNKNOWN";
20553
+ }
20554
+ function bashFilenameLooksLikeLibrary(filePath) {
20555
+ if (!filePath) return false;
20556
+ const normalized = filePath.replace(/\\/g, "/");
20557
+ const slash = normalized.lastIndexOf("/");
20558
+ const base = (slash >= 0 ? normalized.slice(slash + 1) : normalized).toLowerCase();
20559
+ for (const prefix of BASH_LIBRARY_FILENAME_PREFIXES) {
20560
+ if (base.startsWith(prefix)) return true;
20561
+ }
20562
+ if (base.includes(".test.") || base.includes("_test.")) return true;
20563
+ return false;
20564
+ }
20565
+ function methodConsumesPositionalArgs(method, calls) {
20566
+ if (!calls || calls.length === 0) return false;
20567
+ for (const call of calls) {
20568
+ if (call.location.line < method.start_line) continue;
20569
+ if (call.location.line > method.end_line) continue;
20570
+ if (callHasPositionalToken(call)) return true;
20571
+ }
20572
+ return false;
20573
+ }
20574
+ function fileHasPositionalArgUse(calls) {
20575
+ if (!calls || calls.length === 0) return false;
20576
+ for (const call of calls) {
20577
+ if (callHasPositionalToken(call)) return true;
20578
+ }
20579
+ return false;
20580
+ }
20581
+ function callHasPositionalToken(call) {
20582
+ for (const arg of call.arguments ?? []) {
20583
+ const expr = arg.expression ?? arg.variable ?? arg.value ?? "";
20584
+ for (const tok of BASH_POSITIONAL_TOKENS) {
20585
+ if (expr.includes(tok)) return true;
20586
+ }
20587
+ }
20588
+ if (call.method_name === "getopts") return true;
20589
+ return false;
20590
+ }
20591
+ function methodIsRuntimeRegistrationHandler(method, regs) {
20592
+ if (!regs || regs.length === 0) return false;
20593
+ for (const reg of regs) {
20594
+ if (reg.kind !== "http_route" && reg.kind !== "decorator" && reg.kind !== "event_listener" && reg.kind !== "middleware") {
20595
+ continue;
20596
+ }
20597
+ const handlerName = reg.handler?.name;
20598
+ if (!handlerName) continue;
20599
+ if (handlerName === method.name) return true;
20600
+ }
20601
+ return false;
20602
+ }
20177
20603
 
20178
20604
  // src/analysis/project-profile-transform.ts
20179
20605
  var DOWNGRADE_ELIGIBLE_RULE_IDS = /* @__PURE__ */ new Set([
@@ -33145,7 +33571,13 @@ var InterproceduralPass = class {
33145
33571
  source.type,
33146
33572
  enclosing?.method,
33147
33573
  enclosing?.type,
33148
- { language, types: graph.ir.types }
33574
+ {
33575
+ language,
33576
+ types: graph.ir.types,
33577
+ filePath: graph.ir.meta.file,
33578
+ calls: graph.ir.calls,
33579
+ runtimeRegistrations: graph.ir.runtime_registrations ?? null
33580
+ }
33149
33581
  )) {
33150
33582
  continue;
33151
33583
  }
package/dist/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export type { CircleIR, Meta, TypeInfo, MethodInfo, ParameterInfo, FieldInfo, Ca
12
12
  export type { SourceConfig, SinkConfig, TaintConfig, SourcePattern, SinkPattern, SanitizerPattern, } from './types/config.js';
13
13
  export { initParser, parse, walkTree, findNodes, findAncestor, getNodeText, collectAllNodes, type SupportedLanguage, type SyntaxNode, type Node, type NodeCache, type Tree, } from './core/index.js';
14
14
  export { extractMeta, extractTypes, extractCalls, extractImports, extractExports, buildCFG, buildDFG, } from './core/index.js';
15
- export { getDefaultConfig, createTaintConfig, analyzeTaint, attachSourceLineCode, detectUnresolved, propagateTaint, generateFindings, setFindingsInstrumentation, isFindingsInstrumentationEnabled, analyzeConstantPropagation, ConstantPropagator, isKnown, createUnknown, getNodeLine, DEFAULT_SOURCES, DEFAULT_SINKS, DEFAULT_SANITIZERS, type ConstantValue, type ConstantPropagatorResult, type TaintPropagationResult, type TaintedVariable, type TaintFlow, } from './analysis/index.js';
15
+ export { getDefaultConfig, createTaintConfig, analyzeTaint, attachSourceLineCode, detectUnresolved, propagateTaint, generateFindings, isNonExecutableSourceLine, setFindingsInstrumentation, isFindingsInstrumentationEnabled, analyzeConstantPropagation, ConstantPropagator, isKnown, createUnknown, getNodeLine, DEFAULT_SOURCES, DEFAULT_SINKS, DEFAULT_SANITIZERS, type ConstantValue, type ConstantPropagatorResult, type TaintPropagationResult, type TaintedVariable, type TaintFlow, } from './analysis/index.js';
16
16
  export { getRuleInfo, RULE_DEFINITIONS, type RuleInfo, } from './analysis/rules.js';
17
17
  export { DominatorGraph } from './graph/dominator-graph.js';
18
18
  export { ExceptionFlowGraph, type TryCatchInfo } from './graph/exception-flow-graph.js';