Delve is a debugger for the Go programming language.
This report summarizes scanner evidence for go-delve/delve, a Go project with 24,955 GitHub stars. SynthScan examined 135,121 lines of code across 612 source files, recording 214 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 2.9 (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? 202 finding(s).
Are imports declared and package/API names verified? 12 finding(s).
Are wrappers, guards, and repeated structures necessary? 2 finding(s).
Which changes need focused human review? 214 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 214 distinct pattern matches across 8 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 |
|---|---|---|---|---|
| MEDIUM | cmd/dlv/dlv_test.go | 185 | // Give delve some time to compile and write the binary. | COMMENT |
| MEDIUM | cmd/dlv/dlv_test.go | 211 | // Sometimes delve on Windows can't remove the built binary before | COMMENT |
| MEDIUM | cmd/dlv/dlv_test.go | 213 | // See: https://travis-ci.com/go-delve/delve/jobs/296325131. | COMMENT |
| MEDIUM | cmd/dlv/dlv_test.go | 1882 | // Check that when delve is run twice in the same directory simultaneously | COMMENT |
| MEDIUM | cmd/dlv/cmds/commands.go | 400 | // -c is unused and exists so delve can be used with coredumpctl | COMMENT |
| MEDIUM | cmd/dlv/cmds/commands.go | 1007 | // so SIGINT gets sent to the debuggee and not to delve. | COMMENT |
| MEDIUM | cmd/dlv/cmds/commands.go | 1013 | // as SIGINT to delve. Ignore it instead of stopping the server | COMMENT |
| MEDIUM | .github/ISSUE_TEMPLATE/issue_template.yml | 27 | If this is about source listing not showing up (or breakpoints not being accepted) while running in a container | CODE |
| MEDIUM | service/test/integration2_test.go | 2576 | // See https://github.com/go-delve/delve/issues/2259 | COMMENT |
| MEDIUM | service/rpccommon/server.go | 28 | //go:generate go run github.com/go-delve/build-tools/cmd/gen-suitablemethods@latest suitablemethods | COMMENT |
| MEDIUM | service/rpccommon/server.go | 365 | // GetVersion returns the version of delve as well as the API version | COMMENT |
| MEDIUM | service/rpccommon/suitablemethods.go | 1 | // DO NOT EDIT: auto-generated using github.com/go-delve/build-tools/cmd/gen-suitablemethods | COMMENT |
| MEDIUM | service/api/prettyprint.go | 520 | // See https://ci.appveyor.com/project/derekparker/delve-facy3/builds/30179356. | COMMENT |
| MEDIUM | service/rpc2/server.go | 282 | // `debugger.CreateBreakpoint` here: https://pkg.go.dev/github.com/go-delve/delve/service/debugger#Debugger.CreateBreakp | COMMENT |
| MEDIUM | service/rpc2/server.go | 580 | // See https://github.com/go-delve/delve/blob/master/Documentation/cli/expr.md | COMMENT |
| MEDIUM | service/rpc2/client.go | 290 | // https://pkg.go.dev/github.com/go-delve/delve/service/debugger#Debugger.CreateBreakpoint | COMMENT |
| MEDIUM | service/dap/handles.go | 22 | // https://github.com/go-delve/delve/blob/master/Documentation/api/ClientHowto.md#loading-more-of-a-variable | COMMENT |
| MEDIUM | service/dap/server.go | 2 | // This allows delve to communicate with frontends using DAP | COMMENT |
| MEDIUM | service/dap/server.go | 912 | /*TODO*/ s.sendUnsupportedErrorResponse(request.Request) // https://github.com/go-delve/delve/issues/2851 | COMMENT |
| MEDIUM | service/dap/server.go | 3144 | // https://github.com/go-delve/delve/blob/master/Documentation/api/ClientHowto.md#looking-into-variables. | COMMENT |
| MEDIUM | service/dap/server.go | 4486 | // Filter out internal delve breakpoints (panic, fatal, hardcoded, etc.) | COMMENT |
| MEDIUM | service/dap/server.go | 4325 | Unable to propagate EXC_BAD_ACCESS signal to target process and panic (see https://github.com/go-delve/delve/issues/852) | CODE |
| MEDIUM | service/dap/types.go | 210 | // https://github.com/go-delve/delve/blob/master/Documentation/cli/README.md#goroutines | COMMENT |
| MEDIUM | service/dap/server_test.go | 632 | // TODO(polina): once https://github.com/go-delve/delve/issues/2259 is | COMMENT |
| MEDIUM | service/dap/server_test.go | 4096 | t.Skip("test skipped on Windows, see https://delve.teamcity.com/project/Delve_windows for details") | CODE |
| MEDIUM | service/dap/server_test.go | 4422 | // TestEvaluateEscapeStrings reproduces https://github.com/go-delve/delve/issues/4245. | COMMENT |
| MEDIUM | service/dap/server_test.go | 6451 | t.Skip("test skipped on Windows, see https://delve.teamcity.com/project/Delve_windows for details") | CODE |
| MEDIUM | service/dap/daptest/client.go | 5 | //go:generate go run github.com/go-delve/build-tools/cmd/gen-daptest@latest -o ./resp.go | COMMENT |
| MEDIUM | service/dap/daptest/client.go | 660 | // KnownEvent passes decode checks, but delve has no 'case' to | COMMENT |
| MEDIUM | service/dap/daptest/client.go | 662 | // added to go-dap, but not to delve. | COMMENT |
| MEDIUM | .teamcity/pom.xml | 25 | <url>https://delve.teamcity.com/app/dsl-plugins-repository</url> | CODE |
| MEDIUM | pkg/proc/proc_amd64_test.go | 82 | // Fixes issue https://github.com/go-delve/delve/issues/2985 | COMMENT |
| MEDIUM | pkg/proc/target_exec.go | 1737 | // in delve to support breakpoints in cgo. | COMMENT |
| MEDIUM | pkg/proc/bininfo.go | 89 | // github.com/go-delve/delve | COMMENT |
| MEDIUM | pkg/proc/bininfo.go | 90 | // will map to 'delve' because it ends in '/delve'. | COMMENT |
| MEDIUM | pkg/proc/bininfo.go | 1708 | // Previous versions of delve looked for the build id in every debug info | COMMENT |
| MEDIUM | pkg/proc/bininfo.go | 1715 | // Previous versions of delve looked for the executable filename (with | COMMENT |
| MEDIUM | pkg/proc/bininfo.go | 2006 | // This is a bit arcane. Essentially: | COMMENT |
| MEDIUM | pkg/proc/bininfo.go | 2395 | // See also https://github.com/go-delve/delve/issues/3797 | COMMENT |
| MEDIUM | pkg/proc/variables.go | 177 | // When this happens delve will have to scan many empty buckets to find the | COMMENT |
| MEDIUM | pkg/proc/variables.go | 182 | // Since there is no good way for a user of delve to specify the value of | COMMENT |
| MEDIUM | pkg/proc/ppc64le_disasm.go | 34 | // address, Teach delve to recognize this sequence to appropriately adjust PC address so that the breakpoint is actuall | COMMENT |
| MEDIUM | pkg/proc/proc_test.go | 695 | skipOn(t, "broken - see https://github.com/go-delve/delve/issues/3158", "darwin", "amd64") | CODE |
| MEDIUM | pkg/proc/proc_test.go | 1838 | // See: https://github.com/go-delve/delve/pull/2082 | COMMENT |
| MEDIUM | pkg/proc/proc_test.go | 4977 | // https://github.com/go-delve/delve/issues/2346 | COMMENT |
| MEDIUM | pkg/proc/proc_test.go | 4997 | skipOn(t, "see https://github.com/go-delve/delve/issues/2768", "windows") | CODE |
| MEDIUM | pkg/proc/proc_test.go | 5051 | skipOn(t, "see https://github.com/go-delve/delve/issues/2768", "windows") | CODE |
| MEDIUM | pkg/proc/proc_test.go | 5174 | skipOn(t, "see https://github.com/go-delve/delve/issues/2768", "windows") | CODE |
| MEDIUM | pkg/proc/proc_test.go | 5961 | skipOn(t, "see https://github.com/go-delve/delve/issues/2768", "windows") | CODE |
| MEDIUM | pkg/proc/proc_test.go | 5995 | skipOn(t, "see https://github.com/go-delve/delve/issues/2768", "windows") | CODE |
| MEDIUM | pkg/proc/proc_test.go | 6035 | skipOn(t, "see https://github.com/go-delve/delve/issues/2768", "windows") | CODE |
| MEDIUM | pkg/proc/proc_unix_test.go | 37 | // SIGINT directed at the inferior should be passed along not swallowed by delve | COMMENT |
| MEDIUM | pkg/proc/breakpoints.go | 122 | // BreakpointKind determines the behavior of delve when the | COMMENT |
| MEDIUM | pkg/proc/fncall.go | 670 | // See: https://github.com/go-delve/delve/pull/2451#discussion_r665761531 | COMMENT |
| MEDIUM | pkg/proc/fncall.go | 878 | // See https://github.com/go-delve/delve/issues/2985 and | COMMENT |
| MEDIUM | pkg/proc/eval.go | 563 | // See https://github.com/go-delve/delve/issues/2049 for details | COMMENT |
| MEDIUM | pkg/proc/core/core_test.go | 685 | t.Fatalf("issue #3591: main.mod_map frame SP mismatch: delve=%#x runtime=%#x (see panic.txt in test temp dir pattern)" | CODE |
| MEDIUM | pkg/proc/native/dump_linux.go | 51 | // pure PFN range, see https://github.com/go-delve/delve/issues/2630 | COMMENT |
| MEDIUM | pkg/proc/native/ptrace_linux_386.go | 31 | // ignore ENODEV, it just means this CPU or kernel doesn't support XSTATE, see https://github.com/go-delve/delve/issu | COMMENT |
| MEDIUM | pkg/proc/native/ptrace_linux_amd64.go | 30 | // ignore ENODEV, it just means this CPU or kernel doesn't support XSTATE, see https://github.com/go-delve/delve/issu | COMMENT |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/dlv/cmds/helphelpers/help.go | 1 | package helphelpers | COMMENT |
| LOW | _scripts/rtype.go | 1 | // This script checks that the Go runtime hasn't changed in ways that Delve | COMMENT |
| LOW | _scripts/rtype.go | 21 | // // +rtype -field S.F T | COMMENT |
| LOW | _scripts/rtype.go | 41 | // and check that type T has the specified fields. | COMMENT |
| LOW | service/client.go | 141 | // AttachedToExistingProcess returns whether we attached to a running process or not | COMMENT |
| LOW | service/debugger/debugger.go | 101 | // only when launching a new process. | COMMENT |
| LOW | service/debugger/debugger.go | 661 | // CreateBreakpoint creates a breakpoint using information from the provided `requestedBp`. | COMMENT |
| LOW | service/debugger/debugger.go | 681 | // corresponding to all specified addresses. | COMMENT |
| LOW | service/api/types.go | 21 | type DebuggerState struct { | COMMENT |
| LOW | service/api/types.go | 41 | // NextInProgress indicates that a next or step operation was interrupted by another breakpoint | COMMENT |
| LOW | service/api/types.go | 81 | type Breakpoint struct { | COMMENT |
| LOW | service/api/types.go | 341 | // contents. | COMMENT |
| LOW | service/api/types.go | 461 | COMMENT | |
| LOW | service/rpc2/server.go | 681 | Groups []api.GoroutineGroup | COMMENT |
| LOW | service/rpc2/server.go | 701 | // | COMMENT |
| LOW | service/dap/server.go | 41 | "github.com/go-delve/delve/pkg/proc" | COMMENT |
| LOW | service/dap/server.go | 61 | // signal that can come from an OS interrupt (such as Ctrl-C) or | COMMENT |
| LOW | service/dap/server.go | 81 | // goroutines here because the dap server does not support | COMMENT |
| LOW | service/dap/server.go | 181 | COMMENT | |
| LOW | service/dap/server.go | 281 | } | COMMENT |
| LOW | service/dap/server.go | 301 | ShowRegisters bool `cfgName:"showRegisters"` | COMMENT |
| LOW | service/dap/server.go | 361 | // DefaultLoadConfig controls how variables are loaded from the target's memory. | COMMENT |
| LOW | service/dap/server.go | 401 | // stringify complex data conveniently. | COMMENT |
| LOW | service/dap/server.go | 541 | gobuild.Remove(s.binaryToRemove) | COMMENT |
| LOW | service/dap/server.go | 561 | // client, this is used as a signal to stop the entire server. | COMMENT |
| LOW | service/dap/server.go | 761 | // --1-- Return a dummy response or an error right away. | COMMENT |
| LOW | service/dap/server.go | 2161 | // attribute unknown functions to the runtime | COMMENT |
| LOW | service/dap/server.go | 3441 | if _, err := parser.ParseExpr(expr); err != nil { | COMMENT |
| LOW | service/dap/server.go | 3681 | // | COMMENT |
| LOW | service/dap/server.go | 4021 | } | COMMENT |
| LOW | service/dap/server.go | 4041 | // 0x0008 instruction (func2) | COMMENT |
| LOW | service/dap/types.go | 21 | // same args as above | COMMENT |
| LOW | service/dap/types.go | 61 | defaultAttachConfig = AttachConfig{ | COMMENT |
| LOW | service/dap/types.go | 81 | // to debug in `exec` mode. | COMMENT |
| LOW | service/dap/types.go | 101 | Cwd string `json:"cwd,omitempty"` | COMMENT |
| LOW | service/dap/types.go | 121 | Output string `json:"output,omitempty"` | COMMENT |
| LOW | service/dap/types.go | 141 | // using Delve's working directory will use this new directory. | COMMENT |
| LOW | service/dap/types.go | 201 | // in the variables pane or not. | COMMENT |
| LOW | service/dap/types.go | 221 | // running remote debugging, or debugging an executable compiled externally. | COMMENT |
| LOW | service/dap/types.go | 281 | COMMENT | |
| LOW | service/dap/server_test.go | 361 | <-serverStopped | COMMENT |
| LOW | service/dap/server_test.go | 381 | // : 6 >> threads | COMMENT |
| LOW | service/dap/server_test.go | 1861 | // reflect.Kind == Int32 - see testvariables2 | COMMENT |
| LOW | service/dap/server_test.go | 2101 | // reflect.Kind == Bool - see testvariables | COMMENT |
| LOW | service/dap/server_test.go | 5821 | // execution. Otherwise, a continue will be issued and the | COMMENT |
| LOW | _fixtures/cgostacktest/hello.c | 1 | #include <stdio.h> | COMMENT |
| LOW | _fixtures/testvariablescgo/test.c | 1 | #include <stdlib.h> | COMMENT |
| LOW | pkg/proc/arm64_arch.go | 61 | func arm64FixFrameUnwindContext(fctxt *frame.FrameContext, pc uint64, bi *BinaryInfo) *frame.FrameContext { | COMMENT |
| LOW | pkg/proc/amd64_arch.go | 61 | // - sp is cfa | COMMENT |
| LOW | pkg/proc/mapiter.go | 341 | // | COMMENT |
| LOW | pkg/proc/scope_test.go | 41 | } | COMMENT |
| LOW | pkg/proc/target_exec.go | 521 | return grp.StepInstruction(false) | COMMENT |
| LOW | pkg/proc/target_exec.go | 681 | dbp.StopReason = StopNextFinished | COMMENT |
| LOW | pkg/proc/target_exec.go | 701 | // and condition checking that we remain on the same goroutine | COMMENT |
| LOW | pkg/proc/arch.go | 41 | RegistersToDwarfRegisters func(uint64, Registers) *op.DwarfRegisters | COMMENT |
| LOW | pkg/proc/ppc64le_arch.go | 201 | // For a detailed description of how this works read the long comment at | COMMENT |
| LOW | pkg/proc/bininfo.go | 421 | } | COMMENT |
| LOW | pkg/proc/bininfo.go | 1861 | return nil | COMMENT |
| LOW | pkg/proc/variables.go | 61 | ) | COMMENT |
| LOW | pkg/proc/variables.go | 81 | VariableReturnArgument | COMMENT |
| 64 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | pkg/proc/target_exec.go | 800 | if !backward && !topframe.Current.Fn.cu.image.Stripped() { | CODE |
| CRITICAL | pkg/proc/target_exec.go | 1080 | if topframe.Call.Fn == nil || topframe.Call.Fn.cu.image.Stripped() { | CODE |
| CRITICAL | pkg/proc/target_exec.go | 1089 | dwarfTree, err := topframe.Current.Fn.cu.image.getDwarfTree(topframe.Current.Fn.offset) | CODE |
| CRITICAL | pkg/proc/stack.go | 417 | r.Call.File, r.Call.Line = r.Current.Fn.cu.lineInfo.PCToLine(r.Current.Fn.Entry, it.pc-1) | CODE |
| CRITICAL | pkg/proc/stack.go | 507 | dwarfTree, err := frame.Call.Fn.cu.image.getDwarfTree(frame.Call.Fn.offset) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/dlv/dlv_test.go | 1104 | Street: "123 Main St", | CODE |
| LOW | cmd/dlv/dlv_test.go | 1109 | Street: "123 Main St", | CODE |
| LOW | _fixtures/issue1598.go | 9 | return `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut | CODE |
| LOW | _fixtures/issue1598.go | 9 | return `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut | CODE |
| LOW | _fixtures/traceverb.go | 48 | Street: "123 Main St", | CODE |
| LOW | pkg/terminal/command_test.go | 1071 | if !strings.Contains(r, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut | CODE |
| LOW | pkg/terminal/command_test.go | 1071 | if !strings.Contains(r, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | _scripts/gencert.sh | 13 | # Create the certificate template | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Documentation/cli/starlark.md | 171 | def command_goroutine_start_line(args): | CODE |
| LOW | Documentation/cli/starlark.md | 239 | def command_switch_to_main_goroutine(args): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | _scripts/gencert.sh | 3 | # Check if the certificate is already present in the system keychain | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pkg/debugdetect/doc.go | 8 | // Example usage: | COMMENT |