Pre-indexed code knowledge graph, auto syncs on code changes, for Claude Code, Codex, Gemini, Cursor, OpenCode, AntiGravity, Kiro, CoPilot, and Hermes Agent — fewer tokens, fewer tool calls, 100% local
This report summarizes scanner evidence for colbymchenry/codegraph, a TypeScript project with 76,063 GitHub stars. SynthScan examined 525,713 lines of code across 1494 source files, recording 737 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 2.0 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 616 finding(s).
Are imports declared and package/API names verified? 48 finding(s).
Are wrappers, guards, and repeated structures necessary? 226 finding(s).
Which changes need focused human review? 737 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 737 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 1 | #!/bin/sh | COMMENT |
| LOW | install.sh | 81 | # Archives contain a top-level codegraph-<target>/ dir; strip it. | COMMENT |
| LOW | ui/vite.config.ts | 1 | import { fileURLToPath } from 'node:url'; | COMMENT |
| LOW | telemetry-dashboard/scripts/smoke-auth.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | telemetry-worker/scripts/smoke-cutover.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | telemetry-worker/scripts/smoke-cutover.sh | 81 | console.log(v === undefined ? "<missing>" : typeof v === "object" && v !== null ? JSON.stringify(v) : String(v)); | COMMENT |
| LOW | telemetry-worker/scripts/smoke-cutover.sh | 241 | # The funnel reads machine_first_seen.first_index_day. The ingest worker sets it as | COMMENT |
| LOW | telemetry-worker/scripts/smoke-rollup.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | telemetry-worker/src/rollup.ts | 281 | } | COMMENT |
| LOW | __tests__/explore-allocation-e2e.test.ts | 621 | it('spends more than the reservation, not a fraction of it', () => { | COMMENT |
| LOW | __tests__/explore-allocation-e2e.test.ts | 781 | expect(run.allowance(SPRAWL) / size).toBeLessThan(EXPLORE_ALLOCATION.WHOLE_FILE_BUY_FRACTION); | COMMENT |
| LOW | __tests__/explore-allocation-e2e.test.ts | 801 | // unchanged 13,000 budget because nothing picked up what `lib/utils.js` | COMMENT |
| LOW | __tests__/c-fnptr-synthesizer.test.ts | 301 | // The vim command-table shape: a table-building macro and the struct are both | COMMENT |
| LOW | __tests__/extraction.test.ts | 4121 | expect(blankCppInlineAnnotationMacros(c)).toBe(c); | COMMENT |
| LOW | __tests__/mcp-daemon.test.ts | 821 | expect(fs.readFileSync(path.join(realRoot, '.codegraph', 'codegraph.db'))).toEqual(before); | COMMENT |
| LOW | __tests__/kernel-dart-parity.test.ts | 141 | // ones skipped), every redirect-target form, and constructors called | COMMENT |
| LOW | __tests__/kernel-dart-parity.test.ts | 161 | // Comments of every form between annotations and the declaration they | COMMENT |
| LOW | __tests__/installer-targets.test.ts | 1841 | it('codegraph inside an inline mcp_servers table: uninstall says it can\'t remove it, and leaves the file alone', () = | COMMENT |
| LOW | __tests__/installer-targets.test.ts | 3141 | }); | COMMENT |
| LOW | __tests__/mcp-ppid-watchdog.test.ts | 81 | // stdin-holder is alive (it is — it's an orphan after the wrapper | COMMENT |
| LOW | __tests__/kernel-r-parity.test.ts | 101 | // Pin the R-distinctive quirks on the KERNEL arm so both arms drifting | COMMENT |
| LOW | codegraph-kernel/Cargo.toml | 41 | # php: the walker calls LANGUAGE_PHP (the full HTML-interleaving variant the | COMMENT |
| LOW | codegraph-kernel/build.rs | 1 | fn main() { | COMMENT |
| LOW | codegraph-kernel/build.rs | 61 | scala.flag_if_supported("-Wno-trigraphs"); | COMMENT |
| LOW | codegraph-kernel/build.rs | 81 | dart.file("grammars/dart/scanner.c"); | COMMENT |
| LOW | codegraph-kernel/grammars/dart/tree_sitter/parser.h | 1 | #ifndef TREE_SITTER_PARSER_H_ | COMMENT |
| LOW | codegraph-kernel/grammars/dart/tree_sitter/array.h | 1 | #ifndef TREE_SITTER_ARRAY_H_ | COMMENT |
| LOW | codegraph-kernel/grammars/dart/tree_sitter/array.h | 41 | (assert((uint32_t)(_index) < (self)->size), &(self)->contents[_index]) | COMMENT |
| LOW | codegraph-kernel/grammars/dart/tree_sitter/array.h | 101 | COMMENT | |
| LOW | codegraph-kernel/grammars/dart/tree_sitter/array.h | 121 | /// callback to determine the order. | COMMENT |
| LOW | codegraph-kernel/grammars/dart/tree_sitter/array.h | 281 | #ifdef _MSC_VER | COMMENT |
| LOW | codegraph-kernel/grammars/dart/tree_sitter/alloc.h | 21 | #define ts_malloc ts_current_malloc | COMMENT |
| LOW | codegraph-kernel/grammars/dart/tree_sitter/alloc.h | 41 | #ifndef ts_realloc | COMMENT |
| LOW | codegraph-kernel/grammars/kotlin/tree_sitter/parser.h | 1 | #ifndef TREE_SITTER_PARSER_H_ | COMMENT |
| LOW | codegraph-kernel/grammars/kotlin/tree_sitter/array.h | 1 | #ifndef TREE_SITTER_ARRAY_H_ | COMMENT |
| LOW | codegraph-kernel/grammars/kotlin/tree_sitter/array.h | 41 | COMMENT | |
| LOW | codegraph-kernel/grammars/kotlin/tree_sitter/array.h | 101 | /// Remove one element from the array at the given `index`. | COMMENT |
| LOW | codegraph-kernel/grammars/kotlin/tree_sitter/array.h | 121 | /// | COMMENT |
| LOW | codegraph-kernel/grammars/kotlin/tree_sitter/array.h | 281 | #pragma warning(default : 4101) | COMMENT |
| LOW | codegraph-kernel/grammars/kotlin/tree_sitter/alloc.h | 21 | #define ts_malloc ts_current_malloc | COMMENT |
| LOW | codegraph-kernel/grammars/kotlin/tree_sitter/alloc.h | 41 | #ifndef ts_realloc | COMMENT |
| LOW | codegraph-kernel/grammars/lua/parser.c | 1 | /* Automatically @generated by tree-sitter */ | COMMENT |
| LOW | codegraph-kernel/grammars/lua/tree_sitter/parser.h | 1 | #ifndef TREE_SITTER_PARSER_H_ | COMMENT |
| LOW | codegraph-kernel/grammars/lua/tree_sitter/array.h | 1 | #ifndef TREE_SITTER_ARRAY_H_ | COMMENT |
| LOW | codegraph-kernel/grammars/lua/tree_sitter/array.h | 41 | (assert((uint32_t)(_index) < (self)->size), &(self)->contents[_index]) | COMMENT |
| LOW | codegraph-kernel/grammars/lua/tree_sitter/array.h | 101 | COMMENT | |
| LOW | codegraph-kernel/grammars/lua/tree_sitter/array.h | 121 | /// callback to determine the order. | COMMENT |
| LOW | codegraph-kernel/grammars/lua/tree_sitter/array.h | 281 | #ifdef _MSC_VER | COMMENT |
| LOW | codegraph-kernel/grammars/lua/tree_sitter/alloc.h | 21 | #define ts_malloc ts_current_malloc | COMMENT |
| LOW | codegraph-kernel/grammars/lua/tree_sitter/alloc.h | 41 | #ifndef ts_realloc | COMMENT |
| LOW | codegraph-kernel/grammars/scala/scanner.c | 1 | #include "tree_sitter/alloc.h" | COMMENT |
| LOW | codegraph-kernel/grammars/scala/scanner.c | 1841 | COMMENT | |
| LOW | codegraph-kernel/grammars/scala/tree_sitter/parser.h | 1 | #ifndef TREE_SITTER_PARSER_H_ | COMMENT |
| LOW | codegraph-kernel/grammars/scala/tree_sitter/array.h | 1 | #ifndef TREE_SITTER_ARRAY_H_ | COMMENT |
| LOW | codegraph-kernel/grammars/scala/tree_sitter/array.h | 141 | (other)->contents = _array_swap_tmp; \ | COMMENT |
| LOW | codegraph-kernel/grammars/scala/tree_sitter/array.h | 161 | /// of a given struct field (specified with a leading dot) to determine the order. | COMMENT |
| LOW | codegraph-kernel/grammars/scala/tree_sitter/array.h | 321 | #pragma warning(pop) | COMMENT |
| LOW | codegraph-kernel/grammars/scala/tree_sitter/alloc.h | 21 | #define ts_malloc ts_current_malloc | COMMENT |
| LOW | codegraph-kernel/grammars/scala/tree_sitter/alloc.h | 41 | #ifndef ts_realloc | COMMENT |
| LOW | codegraph-kernel/grammars/swift/scanner.c | 801 | } else if (valid_symbols[RAW_STR_CONTINUING_INDICATOR]) { | COMMENT |
| 317 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | telemetry-worker/scripts/smoke-cutover.sh | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-cutover.sh | 109 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-cutover.sh | 130 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-ingest.sh | 37 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-ingest.sh | 39 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-ingest.sh | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-ingest.sh | 58 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-ingest.sh | 83 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-ingest.sh | 85 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-ingest.sh | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-ingest.sh | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-rollup.sh | 96 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-rollup.sh | 98 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | telemetry-worker/scripts/smoke-rollup.sh | 163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | telemetry-worker/scripts/smoke-rollup.sh | 165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | telemetry-worker/scripts/smoke-rollup.sh | 174 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | telemetry-worker/scripts/smoke-rollup.sh | 176 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-rollup.sh | 222 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | telemetry-worker/scripts/smoke-rollup.sh | 224 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | __tests__/explore-allocation-1500.test.ts | 89 | // ── 1. Fixture shape ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-allocation-1500.test.ts | 195 | // ── 2. Budget allocation — the open bug ─────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-allocation-e2e.test.ts | 135 | // ── 1. The self-query fixture's shape ─────────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-allocation-e2e.test.ts | 832 | // ── 2. Degenerate and diffuse result sets ─────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-reservation-invariant.test.ts | 121 | // ── Fixture shape — if these rot, the gates below mean nothing ───────────── | COMMENT |
| MEDIUM | __tests__/explore-reservation-invariant.test.ts | 145 | // ── The invariant ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-reservation-invariant.test.ts | 193 | // ── What the ceiling must no longer do ──────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-reservation-invariant.test.ts | 221 | // ── The epilogue is budgeted, not discarded ─────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-reservation-invariant.test.ts | 247 | // ── The thing the invariant must NOT become ─────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-oversize-member.test.ts | 98 | // ── Fixture shape — if these rot, the gate below means nothing ───────────── | COMMENT |
| MEDIUM | __tests__/explore-oversize-member.test.ts | 125 | // ── The gate ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/resolution.test.ts | 1244 | // ── Rust `self.<field>.<method>()` receivers (#1585) ─────────────────── | COMMENT |
| MEDIUM | __tests__/resolution.test.ts | 1244 | // ── Rust `self.<field>.<method>()` receivers (#1585) ─────────────────── | COMMENT |
| MEDIUM | __tests__/resolution.test.ts | 1330 | // ── Rust `self.<method>()` receivers (#1861) ────────────────────────── | COMMENT |
| MEDIUM | __tests__/resolution.test.ts | 1330 | // ── Rust `self.<method>()` receivers (#1861) ────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-merged-spine-cluster.test.ts | 39 | // ── Fixture generators ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-merged-spine-cluster.test.ts | 182 | // ── Harness ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-merged-spine-cluster.test.ts | 258 | // ── The reported shape ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-merged-spine-cluster.test.ts | 324 | // ── Two consequences of rendering such a cluster by member ───────────────── | COMMENT |
| MEDIUM | __tests__/explore-proportional-allocation.test.ts | 240 | // ── CG-14 ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-proportional-allocation.test.ts | 554 | // ── A file the query named is exempt from the MAX_SHARE valve ───────────────── | COMMENT |
| MEDIUM | __tests__/explore-displacement-guard.test.ts | 132 | // ── Fixture shape — if these rot, the gate below means nothing ───────────── | COMMENT |
| MEDIUM | __tests__/explore-displacement-guard.test.ts | 162 | // ── The gate ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-displacement-guard.test.ts | 224 | // ── The thing the guard must NOT become ─────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-named-file-valve.test.ts | 93 | // ── 1. Far from spent ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | __tests__/explore-named-file-valve.test.ts | 150 | // ── 2. Saturated ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | __tests__/integration/full-pipeline.test.ts | 89 | // ── init ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | __tests__/integration/full-pipeline.test.ts | 95 | // ── indexAll ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | __tests__/integration/full-pipeline.test.ts | 104 | // ── resolveReferences ──────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | __tests__/integration/full-pipeline.test.ts | 117 | // ── searchNodes ────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | __tests__/integration/full-pipeline.test.ts | 126 | // ── getCallers / getCallees ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | __tests__/integration/full-pipeline.test.ts | 135 | // ── buildContext ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | __tests__/integration/full-pipeline.test.ts | 143 | // ── sync (add + modify + remove in one pass) ───────────────── | COMMENT |
| MEDIUM | scripts/pack-npm.sh | 129 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/pack-npm.sh | 141 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/mcp/tools.ts | 412 | // ── Explore relevance scoring (CG-10 / #1500) ────────────────────────────── | COMMENT |
| MEDIUM | src/mcp/tools.ts | 412 | // ── Explore relevance scoring (CG-10 / #1500) ────────────────────────────── | COMMENT |
| MEDIUM | src/mcp/tools.ts | 589 | // ── Score-proportional byte allocation (CG-12 / #1500) ───────────────────── | COMMENT |
| MEDIUM | src/mcp/tools.ts | 589 | // ── Score-proportional byte allocation (CG-12 / #1500) ───────────────────── | COMMENT |
| MEDIUM | src/resolution/callback-synthesizer.ts | 3689 | // ── Object-literal registry dispatch ───────────────────────────────────────── | COMMENT |
| MEDIUM | src/resolution/callback-synthesizer.ts | 3874 | // ── RTK Query generated-hook → endpoint ────────────────────────────────────── | COMMENT |
| 12 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | __tests__/dart-local-call-scope.test.ts | 80 | print(box); | CODE |
| HIGH | __tests__/dart-local-call-scope.test.ts | 148 | print(notify); | CODE |
| HIGH | __tests__/branch-guards.test.ts | 304 | elif not user.is_active: | CODE |
| HIGH | __tests__/branch-guards-languages.test.ts | 52 | return None | CODE |
| HIGH | __tests__/branch-guards-languages.test.ts | 55 | elif item.count == 0: | CODE |
| HIGH | __tests__/branch-guards-languages.test.ts | 77 | expect(await labelAt(src, 'return None', 'python')).toBe('item_in.title && on error'); | CODE |
| HIGH | __tests__/extraction.test.ts | 2797 | print(name); | CODE |
| HIGH | __tests__/extraction.test.ts | 7247 | fs.writeFileSync(path.join(tempDir, 'app/views.py'), `def home(request):\n return None\n`); | CODE |
| HIGH | __tests__/python-external-module-receiver.test.ts | 88 | 'other.py': 'class Other:\n def go(self, x):\n return None\n', | CODE |
| HIGH | __tests__/explore-empty-diagnostics.test.ts | 33 | 'src/users.py': 'class RegistrationService:\n def create_account(self):\n return 1\n\nclass RateLimiter:\n | CODE |
| HIGH | __tests__/resolution.test.ts | 1655 | 'def append(row):\n return True\n\n\ndef path():\n return "ledger.jsonl"\n' | CODE |
| HIGH | __tests__/resolution.test.ts | 1664 | return None | CODE |
| HIGH | __tests__/python-typed-builtin-method-calls.test.ts | 30 | return None | CODE |
| HIGH | __tests__/python-typed-builtin-method-calls.test.ts | 39 | return None | CODE |
| HIGH | __tests__/python-typed-builtin-method-calls.test.ts | 160 | return None | CODE |
| HIGH | __tests__/python-typed-builtin-method-calls.test.ts | 168 | return None | CODE |
| HIGH | __tests__/celery-dispatch-synthesizer.test.ts | 50 | return None | CODE |
| HIGH | __tests__/python-receiver-guess.test.ts | 29 | return None | CODE |
| HIGH | __tests__/python-receiver-guess.test.ts | 34 | return None | CODE |
| HIGH | __tests__/graph.test.ts | 45 | print(): void; | CODE |
| HIGH | __tests__/graph.test.ts | 64 | print(): void { | CODE |
| HIGH | __tests__/python-function-value-scope.test.ts | 47 | return None | CODE |
| HIGH | __tests__/member-function-ref-owner.test.ts | 29 | return None | CODE |
| HIGH | __tests__/kernel-python-call-fabrication.test.ts | 60 | 'def append(row):\n return True\n\n\ndef path():\n return "ledger.jsonl"\n' | CODE |
| HIGH | __tests__/kernel-python-call-fabrication.test.ts | 64 | 'from . import ledger\n\n\ndef add_outcome(row):\n if not ledger.append(row):\n return None\n return | CODE |
| HIGH | __tests__/python-local-import-alias.test.ts | 87 | 'm.py': 'def f():\n try:\n import jinja2 as j\n except ImportError:\n return None\n return | CODE |
| HIGH | __tests__/python-attr-types.test.ts | 100 | 'client.py': 'class Client:\n def send(self):\n pass\n\ndef make_client(url=None):\n if url is None | CODE |
| HIGH | __tests__/python-attr-types.test.ts | 193 | 'loader.py': 'def import_string(p):\n return None\n', | CODE |
| HIGH | __tests__/inherited-class-method.test.ts | 93 | return None | CODE |
| HIGH | __tests__/ui-steps-api-servers.test.ts | 172 | write('api/deps.py', 'def get_current_user():\n return None\n\nSessionDep = None\n'); | CODE |
| HIGH | __tests__/python-module-global-receiver-call.test.ts | 43 | const OTHER = 'class Unrelated:\n def delete(self, obj):\n return None\n\n def purge(self):\n return | CODE |
| HIGH | __tests__/python-module-global-receiver-call.test.ts | 74 | const other = 'class Unrelated:\n def handler(self):\n return None\n'; | CODE |
| HIGH | __tests__/unittest-named-files.test.ts | 28 | return True | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | __tests__/explore-allocation-e2e.test.ts | 262 | export function budgetRemainderAfterFloors(pool: number, floors: number): number { | CODE |
| LOW | __tests__/read-commands-during-rebuild.test.ts | 179 | async function insideWritersEdgeTransaction( | CODE |
| LOW | __tests__/cjk-query-tokens.test.ts | 275 | function oldExtractSymbolsFromQuery(query: string): string[] { | CODE |
| LOW | __tests__/python-multiline-bases.test.ts | 145 | def class_wrapped_base_method(x): | CODE |
| LOW | __tests__/python-multiline-bases.test.ts | 149 | def class_wrapped_type_argument(x): | CODE |
| LOW | __tests__/installer-targets.test.ts | 2688 | function plantUnparseableAntigravityConfig(content: string): string { | CODE |
| LOW | __tests__/library-method-calls.test.ts | 43 | ' def getOrElse(d: Int): Int = d\n' + | CODE |
| LOW | __tests__/mcp-nested-repo-projectpath.test.ts | 43 | function makeParentWithIgnoredNestedRepo(root: string, ignoreNested = true): { parent: string; nested: string } { | CODE |
| LOW | __tests__/segment-vocab.test.ts | 50 | export function resolveDeferredThisMemberRefs(): void {} | CODE |
| LOW | __tests__/index-files-write-lock.test.ts | 31 | async function editedProjectWithGatedIndexing(fail = false) { | CODE |
| LOW | __tests__/default-export-declaration.test.ts | 193 | 'src/animated/AnimatedColor.ts': `export function getRgbaValueAndNativeColor(value: string): string { | CODE |
| LOW | __tests__/explore-synth-link-endpoints.test.ts | 109 | function implementationsInEdgeOrder(): string[] { | CODE |
| LOW | __tests__/daemon-older-version.test.ts | 529 | function holdWriterSlotForSuccessor(): string { | CODE |
| LOW | __tests__/dead-code.test.ts | 793 | export function registerChartConfiguration(): void { | CODE |
| LOW | __tests__/explore-nl-stopword-collision.test.ts | 161 | 'export function startExtensionHostProcess(): ExtensionHostConnection {\n' + | CODE |
| LOW | src/directory.ts | 419 | export function findIndexedSubprojectRoots( | CODE |
| LOW | src/directory.ts | 475 | function eligibleForSubprojectScan(base: string): boolean { | CODE |
| LOW | src/utils.ts | 357 | export function sensitiveDirectoryRefusal(dirPath: string): string | null { | CODE |
| LOW | src/project-config.ts | 354 | export function loadIncludeIgnoredPatterns(rootDir: string): string[] { | CODE |
| LOW | src/project-config.ts | 412 | export function addIncludeIgnoredPatterns(rootDir: string, patterns: string[]): number { | CODE |
| LOW | src/upgrade/update-check.ts | 239 | export function checkForUpdateInBackground( | CODE |
| LOW | src/upgrade/index.ts | 288 | export function parseLatestTagFromLocation(location: string | undefined): string | null { | CODE |
| LOW | src/upgrade/index.ts | 617 | function selfHealInstalledSurfaces(deps: UpgradeDeps): void { | CODE |
| LOW | src/upgrade/index.ts | 780 | export function buildWindowsUpgradeScript(bundleRoot: string, version: string, arch: string): string { | CODE |
| LOW | src/bin/command-supervision.ts | 54 | export function installCommandSupervision(label: string, watchdog: WatchdogOptions = {}): CommandSupervision { | CODE |
| LOW | src/bin/codegraph.ts | 1143 | function describeFilesMissingSymbols(health: { needsReindex: string[]; parseErrors: string[] }): string[] { | CODE |
| LOW | src/graph/dynamic-boundary-report.ts | 204 | export function shortlistBoundaryCandidates( | CODE |
| LOW | src/ui-server/api/screens.ts | 180 | function arrivesFromAnotherContext(edge: Edge): boolean { | CODE |
| LOW | src/mcp/index-version-warning.ts | 42 | export function formatIndexVersionWarning(build: IndexBuildInfo): string { | CODE |
| LOW | src/mcp/daemon.ts | 782 | export function acquireLockViaExclusiveOpen(pidPath: string, info: DaemonLockInfo): boolean { | CODE |
| LOW | src/mcp/daemon-registry.ts | 210 | export async function clearStaleDaemonArtifacts(root: string): Promise<boolean> { | CODE |
| LOW | src/mcp/daemon-paths.ts | 76 | export function getDaemonSocketCandidates(projectRoot: string): string[] { | CODE |
| LOW | src/mcp/stdin-teardown.ts | 26 | export function treatStdinFailureAsShutdown( | CODE |
| LOW | src/mcp/startup-handshake.ts | 49 | export function parseStartupHandshakeTimeoutMs(raw: string | undefined): number { | CODE |
| LOW | src/mcp/startup-handshake.ts | 62 | export function armStartupHandshakeTimeout( | CODE |
| LOW | src/mcp/process-identity.ts | 125 | export function isCodeGraphServerCommandLine(commandLine: string): boolean { | CODE |
| LOW | src/mcp/tools.ts | 900 | function exploreLineNumbersEnabled(): boolean { | CODE |
| LOW | src/mcp/tools.ts | 933 | function resolveCatchUpGateTimeoutMs(): number { | CODE |
| LOW | src/mcp/tools.ts | 1968 | export function describeOmittedDefinitions(nodes: readonly Node[]): string { | CODE |
| LOW | src/mcp/tools.ts | 2057 | function resolveProjectIdleTimeoutMs(): number { | CODE |
| LOW | src/mcp/proxy.ts | 627 | function startPpidWatchdogNoSocket(onDeath: () => void): void { | CODE |
| LOW | src/mcp/stdout-teardown.ts | 25 | export function treatStdoutFailureAsShutdown( | CODE |
| LOW | src/mcp/index.ts | 193 | export async function connectAnyDaemonCandidate( | CODE |
| LOW | src/mcp/liveness-watchdog.ts | 312 | export function installMainThreadWatchdog(options: WatchdogOptions = {}): WatchdogHandle | null { | CODE |
| LOW | src/search/query-paths.ts | 202 | function stripLineTokenPunctuation(token: string): string { | CODE |
| LOW | src/search/identifier-segments.ts | 138 | export function extractSegmentSearchWords(query: string): string[] { | CODE |
| LOW | src/resolution/c-feature-variants.ts | 54 | export function clearCFeatureVariantMemos(context: ResolutionContext): void { | CODE |
| LOW | src/resolution/callback-synthesizer.ts | 1378 | async function goCrossFileMethodContainsEdges(queries: QueryBuilder, onYield: MaybeYield): Promise<Edge[]> { | CODE |
| LOW | src/resolution/callback-synthesizer.ts | 4862 | async function erlangBehaviourDispatchEdges(queries: QueryBuilder, ctx: ResolutionContext, onYield: MaybeYield): Promise | CODE |
| LOW | src/resolution/path-aliases.ts | 409 | export function aliasAndBaseUrlCandidates( | CODE |
| LOW | src/resolution/import-resolver.ts | 413 | function resolveImportPathUncached( | CODE |
| LOW | src/resolution/import-resolver.ts | 1285 | function findSourceForEmittedSpecifier( | CODE |
| LOW | src/resolution/import-resolver.ts | 1608 | function loadCppIncludeDirsFromCompileDB(projectRoot: string): string[] | null { | CODE |
| LOW | src/resolution/import-resolver.ts | 1717 | function loadCppIncludeDirsHeuristic(projectRoot: string): string[] { | CODE |
| LOW | src/resolution/import-resolver.ts | 2642 | export function resolvePhpImportedStaticCall( | CODE |
| LOW | src/resolution/import-resolver.ts | 2746 | export function resolvePhpQualifiedClassRef( | CODE |
| LOW | src/resolution/import-resolver.ts | 2820 | export function resolveTsQualifiedTypeRef(ref: UnresolvedRef, context: ResolutionContext): ResolvedRef | null | undefine | CODE |
| LOW | src/resolution/import-resolver.ts | 3478 | function resolvePythonModuleMember( | CODE |
| LOW | src/resolution/import-resolver.ts | 3684 | function resolveObjectLiteralAlias( | CODE |
| LOW | src/resolution/import-resolver.ts | 3696 | function resolveModuleImportToFile( | CODE |
| 93 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | __tests__/ui-trails.test.ts | 202 | export function handleRequest(key: string): string { | CODE |
| LOW | __tests__/ui-trails.test.ts | 719 | export function handleRequest(key: string): string { | CODE |
| LOW | __tests__/python-from-import-module-file.test.ts | 71 | 'pkg/__init__.py': 'def helper():\n return 1\n', | CODE |
| LOW | __tests__/python-from-import-module-file.test.ts | 86 | 'src/app/__init__.py': 'def helper():\n return 1\n', | CODE |
| LOW | __tests__/scala-bare-call-scope.test.ts | 43 | def helper(): Int = 1 | CODE |
| LOW | __tests__/sync-module-importers.test.ts | 46 | 'lib/impl.py': 'def helper():\n return 1\n', | CODE |
| LOW | __tests__/extraction.test.ts | 9662 | private def helper(): Unit = {} | CODE |
| LOW | __tests__/extraction.test.ts | 10994 | const js = extractFromSource('service.xsjs', 'function handleRequest() { return 1; }'); | CODE |
| LOW | __tests__/extraction.test.ts | 11130 | fs.writeFileSync(path.join(dir, 'pkg', 'foo.py'), `widget = {"n": 1}\ndef helper():\n return 1\n`); | CODE |
| LOW | __tests__/ui-server-api.test.ts | 173 | export function handleRequest(service: Service, key: string): string { | CODE |
| LOW | __tests__/python-module-resolution.test.ts | 380 | 'scripts/helpers.py': 'def helper():\n return 1\n', | CODE |
| LOW | __tests__/python-module-resolution.test.ts | 382 | 'lib/helpers.py': 'def helper():\n return 2\n', | CODE |
| LOW | __tests__/python-module-resolution.test.ts | 397 | 'helpers.py': 'def helper():\n return 1\n', | CODE |
| LOW | __tests__/function-ref.test.ts | 1353 | global_in_nested_def: [{ 'm.py': 'from decoy import Decoy\nconn = None\n\ndef init():\n def helper():\n | CODE |
| LOW | __tests__/python-outside-bases.test.ts | 128 | def helper(self): | CODE |
| LOW | __tests__/python-outside-bases.test.ts | 133 | def helper(self): | CODE |
| LOW | __tests__/celery-dispatch-synthesizer.test.ts | 56 | `def process_data(x): | CODE |
| LOW | __tests__/celery-dispatch-synthesizer.test.ts | 69 | def handle_request(req): | CODE |
| LOW | __tests__/jest-manual-mocks.test.ts | 54 | export function handleRequest(name: string, role: string): string { | CODE |
| LOW | __tests__/python-resolution-work.test.ts | 66 | 'helpers.py': 'def helper():\n return 1\n', | CODE |
| LOW | __tests__/python-resolution-work.test.ts | 96 | for (let k = 0; k < CANDIDATES; k++) files[`lib${k}/helpers.py`] = 'def helper():\n return 1\n'; | CODE |
| LOW⚡ | __tests__/same-file-match-confidence.test.ts | 52 | write('x.py', 'def helper():\n return 1\n\ndef main():\n return helper()\n'); | CODE |
| LOW⚡ | __tests__/same-file-match-confidence.test.ts | 53 | write('pkg/other.py', 'def helper():\n return 2\n'); | CODE |
| LOW⚡ | __tests__/same-file-match-confidence.test.ts | 60 | write('a/b/c/x.py', 'def helper():\n return 1\n\ndef main():\n return helper()\n'); | CODE |
| LOW⚡ | __tests__/same-file-match-confidence.test.ts | 61 | write('a/b/c/y.py', 'def helper():\n return 2\n'); | CODE |
| LOW | __tests__/python-receiver-guessing.test.ts | 55 | def helper(self): | CODE |
| LOW | __tests__/python-attr-types.test.ts | 531 | 'client.py': 'class Client:\n def send(self):\n pass\n\ndef make(k):\n return k()\n\ndef helper():\ | CODE |
| LOW | __tests__/python-attr-types.test.ts | 541 | write({ 'client.py': 'class Client:\n def send(self):\n pass\n\ndef make(k) -> Client:\n return k() | CODE |
| LOW | __tests__/ui-flow-api.test.ts | 110 | export function handleRequest(id: string): string { | CODE |
| LOW | __tests__/python-module-global-receiver-call.test.ts | 106 | const code = 'class A:\n def run(self):\n return 1\n\n\n_svc = A()\n\n\ndef use():\n def helper():\n | CODE |
| LOW | __tests__/workspace-package-entries.test.ts | 261 | "import { formatLabel, isAdmin } from 'acme-shared/utils';\nexport function handleRequest(name: string, role: stri | CODE |
| LOW | src/ui-server/index.ts | 237 | async function handleRequest( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/context/index.ts | 516 | // Step 1: Extract potential symbol names from query | COMMENT |
| LOW⚡ | src/context/index.ts | 520 | // Step 2: Look up exact matches for extracted symbols | COMMENT |
| LOW | src/context/index.ts | 672 | // Step 3: Run text search for natural language term matching | COMMENT |
| LOW | src/context/index.ts | 727 | // Step 4: Merge results, taking the max score when duplicates appear | COMMENT |
| LOW | src/mcp/tools.ts | 4531 | // Step 1: Find relevant context with generous parameters. | COMMENT |
| LOW | src/mcp/tools.ts | 4910 | // Step 2: Group nodes by file, score by relevance | COMMENT |
| LOW | src/mcp/tools.ts | 5403 | // Step 3: Build relationship map | COMMENT |
| LOW | src/mcp/tools.ts | 5478 | // Step 4: Read contiguous file sections | COMMENT |
| LOW | src/installer/index.ts | 96 | // Step 1: which agent targets? Asked FIRST so the user knows what | COMMENT |
| LOW | src/installer/index.ts | 107 | // Step 2: install the codegraph npm package on PATH (always offered; | COMMENT |
| LOW | src/installer/index.ts | 135 | // Step 3: where the per-agent config files should land. | COMMENT |
| LOW | src/installer/index.ts | 166 | // Step 4: auto-allow permissions (only meaningful for Claude Code and | COMMENT |
| LOW | src/installer/index.ts | 236 | // Step 5: per-target install loop. | COMMENT |
| LOW | src/installer/index.ts | 285 | // Step 6: install wires up agents only — it deliberately does NOT index. | COMMENT |
| LOW | src/installer/index.ts | 474 | // Step 1: which location — asked FIRST, the one decision the user | COMMENT |
| LOW | src/installer/index.ts | 498 | // Step 2: which agents. Default is every agent, so the user doesn't | COMMENT |
| LOW | src/installer/index.ts | 513 | // Step 3: sweep + per-agent feedback. | COMMENT |
| LOW | src/installer/index.ts | 533 | // Step 4: for local uninstall, the index dir is separate — point at | COMMENT |
| LOW | src/installer/index.ts | 596 | // Step 5: summary. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/context/index.ts | 516 | // Step 1: Extract potential symbol names from query | COMMENT |
| LOW⚡ | src/context/index.ts | 520 | // Step 2: Look up exact matches for extracted symbols | COMMENT |
| LOW | src/context/index.ts | 672 | // Step 3: Run text search for natural language term matching | COMMENT |
| LOW | src/context/index.ts | 727 | // Step 4: Merge results, taking the max score when duplicates appear | COMMENT |
| LOW | src/mcp/tools.ts | 4531 | // Step 1: Find relevant context with generous parameters. | COMMENT |
| LOW | src/mcp/tools.ts | 4910 | // Step 2: Group nodes by file, score by relevance | COMMENT |
| LOW | src/mcp/tools.ts | 5403 | // Step 3: Build relationship map | COMMENT |
| LOW | src/mcp/tools.ts | 5478 | // Step 4: Read contiguous file sections | COMMENT |
| LOW | src/installer/index.ts | 96 | // Step 1: which agent targets? Asked FIRST so the user knows what | COMMENT |
| LOW | src/installer/index.ts | 107 | // Step 2: install the codegraph npm package on PATH (always offered; | COMMENT |
| LOW | src/installer/index.ts | 135 | // Step 3: where the per-agent config files should land. | COMMENT |
| LOW | src/installer/index.ts | 166 | // Step 4: auto-allow permissions (only meaningful for Claude Code and | COMMENT |
| LOW | src/installer/index.ts | 236 | // Step 5: per-target install loop. | COMMENT |
| LOW | src/installer/index.ts | 285 | // Step 6: install wires up agents only — it deliberately does NOT index. | COMMENT |
| LOW | src/installer/index.ts | 474 | // Step 1: which location — asked FIRST, the one decision the user | COMMENT |
| LOW | src/installer/index.ts | 498 | // Step 2: which agents. Default is every agent, so the user doesn't | COMMENT |
| LOW | src/installer/index.ts | 513 | // Step 3: sweep + per-agent feedback. | COMMENT |
| LOW | src/installer/index.ts | 533 | // Step 4: for local uninstall, the index dir is separate — point at | COMMENT |
| LOW | src/installer/index.ts | 596 | // Step 5: summary. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/design/rust-kernel-migration-plan.md | 295 | ## 3. Phase 0 — scaffold (do first, ~days) | COMMENT |
| MEDIUM | codegraph-kernel/src/ids.rs | 14 | //! in `__tests__/kernel-scaffold.test.ts`. | COMMENT |
| MEDIUM | src/graph/named-symbol-flow.ts | 106 | // hand-written implementations before the protobuf scaffold). | COMMENT |
| MEDIUM | src/mcp/tools.ts | 5386 | // the agent rarely needs to see the protobuf scaffold or gomock output | COMMENT |
| MEDIUM | src/resolution/callback-synthesizer.ts | 1849 | // a protoc-emitted scaffold rather than someone naming a struct | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | __tests__/extraction-old-git.test.ts | 45 | runGit(dir, 'config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/extraction.test.ts | 8905 | git(libDir, 'config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/extraction.test.ts | 8915 | git(mainDir, 'config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/extraction.test.ts | 8944 | git('config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/extraction.test.ts | 9133 | git(root, 'config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/extraction.test.ts | 9142 | git(path.join(root, 'sub_repo1'), 'config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/extraction.test.ts | 9314 | git(root, 'config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/extraction.test.ts | 14501 | runGit('config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/sync.test.ts | 277 | git('config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/sync.test.ts | 433 | git('config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/sync.test.ts | 1207 | git('config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/src-build-folders.test.ts | 56 | git(dir, 'config', 'user.email', 'test@test.com'); | CODE |
| LOW | __tests__/objc-declaration-types.test.ts | 175 | const placeholder = cg.searchNodes('placeholder', { limit: 5 }).map((r) => `${r.node.kind} ${r.node.name}`); | CODE |
| LOW | __tests__/objc-declaration-types.test.ts | 177 | const struct = cg.getNodesByName('placeholder').find((n) => n.kind === 'struct'); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | ui/src/lib/filecode-model.ts | 324 | a.call.relation.node.name.localeCompare(b.call.relation.node.name) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | __tests__/generated-detection.test.ts | 94 | '//------------------------------------------------------------------------------\n// <auto-generated>\n// Thi | CODE |
| HIGH | __tests__/vbnet-keyword-prefixed-names.test.ts | 166 | ' This code was generated by a tool. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | __tests__/resolution.test.ts | 2806 | // way). Method↔type association is by qualifiedName, robust where the method | COMMENT |
| MEDIUM | scripts/agent-eval/ab-new-vs-baseline.sh | 13 | # This is the harness those metrics were built for: both arms are codegraph-on, | COMMENT |
| MEDIUM | scripts/agent-eval/itrun.sh | 80 | # Busy signals. The robust one is the spinner's elapsed-time-in-parens, which | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/benchmarks/observe-index.py | 27 | except (FileNotFoundError, ProcessLookupError): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/build-kernel.sh | 13 | # Usage: | COMMENT |
| LOW | scripts/build-bundle.sh | 12 | # Usage: | COMMENT |
| LOW | scripts/local-install.sh | 6 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | __tests__/generated-detection.test.ts | 138 | ['YAML/shell — "#" comment leader', '# This file is generated by kustomize. Do not edit.\napiVersion: v1\n'], | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/benchmarks/observe-index.py | 46 | CODE | |
| LOW | assets/generate-language-tiles.py | 167 | CODE |