Simple HTTP, REST, and SSE client library for Go
This report summarizes scanner evidence for go-resty/resty, a Go project with 11,824 GitHub stars. SynthScan examined 30,634 lines of code across 48 source files, recording 114 pattern matches distributed across 2 syntactic categories. The legacy adjusted pattern signal is 3.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? 114 finding(s).
Are imports declared and package/API names verified? 0 finding(s).
Are wrappers, guards, and repeated structures necessary? 0 finding(s).
Which changes need focused human review? 114 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 114 distinct pattern matches across 2 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 | hedging.go | 41 | // - 50ms delay between requests | COMMENT |
| LOW | hedging.go | 61 | delay: 50 * time.Millisecond, // delay between requests | COMMENT |
| LOW | multipart.go | 41 | // Reader is the [io.Reader] source for multipart upload. It is optional if | COMMENT |
| LOW | sse.go | 101 | // SetURL("https://example.com/events"). | COMMENT |
| LOW | sse.go | 281 | // | COMMENT |
| LOW | sse.go | 321 | // | COMMENT |
| LOW | sse.go | 461 | // }, | COMMENT |
| LOW | sse.go | 481 | // | COMMENT |
| LOW | sse.go | 521 | // func(e any) { | COMMENT |
| LOW | stream.go | 21 | ) | COMMENT |
| LOW | stream.go | 41 | // See [Client.AddContentTypeEncoder]. | COMMENT |
| LOW | response.go | 61 | return "" | COMMENT |
| LOW | response.go | 81 | // fmt.Println(err, res) | COMMENT |
| LOW | response.go | 141 | COMMENT | |
| LOW | request.go | 181 | return rr | COMMENT |
| LOW | request.go | 201 | func (r *Request) SetHeader(header, value string) *Request { | COMMENT |
| LOW | request.go | 221 | return r | COMMENT |
| LOW | request.go | 241 | COMMENT | |
| LOW | request.go | 261 | // | COMMENT |
| LOW | request.go | 281 | // | COMMENT |
| LOW | request.go | 301 | // | COMMENT |
| LOW | request.go | 321 | // | COMMENT |
| LOW | request.go | 341 | func (r *Request) SetQueryParams(params map[string]string) *Request { | COMMENT |
| LOW | request.go | 381 | } | COMMENT |
| LOW | request.go | 421 | } | COMMENT |
| LOW | request.go | 441 | // Password: "welcome2resty", | COMMENT |
| LOW | request.go | 461 | // client.R(). | COMMENT |
| LOW | request.go | 481 | // | COMMENT |
| LOW | request.go | 501 | // fmt.Println(response.Result().(*AuthToken)) | COMMENT |
| LOW | request.go | 541 | r.multipartFields = append(r.multipartFields, &MultipartField{ | COMMENT |
| LOW | request.go | 621 | }) | COMMENT |
| LOW | request.go | 641 | // FileName: "upload-file-2.json", | COMMENT |
| LOW | request.go | 701 | // SetBasicAuth method sets the basic authentication header in the current HTTP request. | COMMENT |
| LOW | request.go | 721 | // For Example: To set auth token BC594900518B4F7EAC75BD37F019E08FBC594900518B4F7EAC75BD37F019E08F | COMMENT |
| LOW | request.go | 741 | // // The outcome will be - | COMMENT |
| LOW | request.go | 761 | r.HeaderAuthorizationKey = k | COMMENT |
| LOW | request.go | 781 | r.ResponseSaveFileName = file | COMMENT |
| LOW | request.go | 801 | COMMENT | |
| LOW | request.go | 821 | return r | COMMENT |
| LOW | request.go | 841 | // that provides an ability to do unlimited reads. | COMMENT |
| LOW | request.go | 861 | // URL - /v1/users/{userId}/details | COMMENT |
| LOW | request.go | 881 | // | COMMENT |
| LOW | request.go | 901 | } | COMMENT |
| LOW | request.go | 921 | for p, v := range params { | COMMENT |
| LOW | request.go | 941 | // | COMMENT |
| LOW | request.go | 961 | // Composed URL - /v1/users/12345/details | COMMENT |
| LOW | request.go | 981 | // "path": "groups/developers", | COMMENT |
| LOW | request.go | 1041 | // SetCookies method sets an array of cookies in the current request instance. | COMMENT |
| LOW | request.go | 1061 | } | COMMENT |
| LOW | request.go | 1101 | // AddRetryConditions method adds one or more retry condition functions into the request. | COMMENT |
| LOW | request.go | 1121 | // | COMMENT |
| LOW | request.go | 1141 | } | COMMENT |
| LOW | request.go | 1221 | // SetTrace method is used to turn on/off the trace capability at the request level. | COMMENT |
| LOW | request.go | 1241 | // By default, Resty does not log the curl command in the debug log since it has the potential | COMMENT |
| LOW | request.go | 1301 | // | COMMENT |
| LOW | request.go | 1321 | } | COMMENT |
| LOW | request.go | 1461 | // | COMMENT |
| LOW | request.go | 1661 | // Unblock Client.Do / RoundTrip waiting on the request body pipe. | COMMENT |
| LOW | request.go | 1741 | rr.bodyBuf = acquireBuffer() | COMMENT |
| LOW | rate_limiter.go | 21 | // The limiters shipped with Resty wrap the context error alongside this sentinel, | COMMENT |
| 52 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | sse.go | 238 | // NOTE: This method overwrites existing [http.Transport.TLSClientConfig] | COMMENT |
| LOW | client.go | 1637 | // NOTE: This method overwrites existing [http.Transport.TLSClientConfig] | COMMENT |