Design-first Go framework that generates API code, documentation, and clients. Define once in an elegant DSL, deploy as HTTP and gRPC services with zero drift between code and docs.
This report summarizes scanner evidence for goadesign/goa, a Go project with 6,117 GitHub stars. SynthScan examined 248,179 lines of code across 963 source files, recording 459 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 2.1 (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? 439 finding(s).
Are imports declared and package/API names verified? 20 finding(s).
Are wrappers, guards, and repeated structures necessary? 0 finding(s).
Which changes need focused human review? 459 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 459 distinct pattern matches across 6 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 | middleware/xray/segment.go | 21 | Name string `json:"name"` | COMMENT |
| LOW | middleware/xray/segment.go | 41 | HTTP *HTTP `json:"http,omitempty"` | COMMENT |
| LOW | grpc/handler.go | 21 | // | COMMENT |
| LOW | grpc/middleware/trace.go | 21 | // SpanIDMetadataKey is the default name of the gRPC request metadata | COMMENT |
| LOW | grpc/middleware/trace.go | 41 | ctx = withTrace(ctx, info.FullMethod, o) | COMMENT |
| LOW | grpc/middleware/doc.go | 1 | // Package middleware contains gRPC server and client interceptors that wraps | COMMENT |
| LOW | grpc/middleware/canceler.go | 21 | // | COMMENT |
| LOW | grpc/middleware/requestid.go | 21 | // request ID. The default behavior is to always generate a new ID. | COMMENT |
| LOW | grpc/middleware/requestid.go | 41 | // RequestIDMetadata key. Optionally, it uses the incoming "x-request-id" | COMMENT |
| LOW | grpc/middleware/xray/middleware.go | 21 | type xrayStreamClientWrapper struct { | COMMENT |
| LOW | grpc/middleware/xray/middleware.go | 41 | // closing the top level segment. Typical usage: | COMMENT |
| LOW | grpc/codegen/service_data.go | 61 | // Endpoints describes the gRPC service endpoints. | COMMENT |
| LOW | grpc/codegen/service_data.go | 81 | // | COMMENT |
| LOW | grpc/codegen/service_data.go | 101 | ClientInterfaceInit string | COMMENT |
| LOW | grpc/codegen/service_data.go | 121 | // validations contain the data to generate the validation functions to | COMMENT |
| LOW | grpc/codegen/service_data.go | 141 | ServerProtobufPkgName string | COMMENT |
| LOW | grpc/codegen/service_data.go | 181 | // MessageSchemes lists all the security requirement schemes that | COMMENT |
| LOW | grpc/codegen/service_data.go | 201 | COMMENT | |
| LOW | grpc/codegen/service_data.go | 221 | // ClientDecode is the response decoder name kept for existing plugins. | COMMENT |
| LOW | grpc/codegen/service_data.go | 241 | // Changing it does not rename generated code. | COMMENT |
| LOW | grpc/codegen/service_data.go | 301 | // Slice is true if the metadata value type is an array. | COMMENT |
| LOW | grpc/codegen/service_data.go | 341 | RequestData struct { | COMMENT |
| LOW | grpc/codegen/service_data.go | 361 | // transport must carry both the one-shot payload and streaming payload | COMMENT |
| LOW | grpc/codegen/service_data.go | 401 | // StreamItemFieldName is the name of the streaming payload item branch | COMMENT |
| LOW | grpc/codegen/service_data.go | 421 | FuncName string | COMMENT |
| LOW | grpc/codegen/service_data.go | 441 | // Description is the response description. | COMMENT |
| LOW | grpc/codegen/service_data.go | 461 | // initialize the method result type or the projected result type | COMMENT |
| LOW | grpc/codegen/service_data.go | 481 | // TgtName is the fully qualified name of the target type. | COMMENT |
| LOW | grpc/codegen/service_data.go | 501 | } | COMMENT |
| LOW | grpc/codegen/service_data.go | 561 | // initialized with the argument if any. | COMMENT |
| LOW | grpc/codegen/service_data.go | 581 | Validate string | COMMENT |
| LOW | grpc/codegen/service_data.go | 601 | // ServiceInterface is the service interface that the struct implements. | COMMENT |
| LOW | grpc/codegen/service_data.go | 621 | SendConvert *ConvertData | COMMENT |
| LOW | security/scheme.go | 21 | // BasicScheme represents the BasicAuth security scheme. | COMMENT |
| LOW | security/scheme.go | 41 | // by the scheme. It is a subset of Scopes field. | COMMENT |
| LOW | security/scheme.go | 61 | // generated by JWTSecurity for designs that intentionally model JWT | COMMENT |
| LOW | jsonrpc/doc.go | 1 | // Package jsonrpc provides constructs and utilities for building JSON-RPC 2.0 | COMMENT |
| LOW | jsonrpc/integration_tests/framework/generator.go | 21 | var templateFS embed.FS | COMMENT |
| LOW | expr/attribute.go | 21 | // Attribute type | COMMENT |
| LOW | expr/attribute.go | 61 | // CompositeExpr defines a generic composite expression that contains an | COMMENT |
| LOW | expr/attribute.go | 81 | // ExclusiveMinimum represents an exclusiveMinimum value validation as described | COMMENT |
| LOW | expr/attribute.go | 101 | // described at | COMMENT |
| LOW | expr/service.go | 21 | Description string | COMMENT |
| LOW | expr/user_type.go | 1 | // This file defines user types and records the original declaration from | COMMENT |
| LOW | expr/random.go | 61 | COMMENT | |
| LOW | expr/types.go | 281 | // type (so call aliased type). | COMMENT |
| LOW | expr/security.go | 61 | // SchemeExpr defines a security scheme used to authenticate against the | COMMENT |
| LOW | expr/method.go | 21 | // Name of method. | COMMENT |
| LOW | expr/http_endpoint.go | 21 | // responses made to that endpoint. The shape of requests is defined via | COMMENT |
| LOW | expr/http_endpoint.go | 41 | // Params defines the HTTP request path and query parameters. | COMMENT |
| LOW | expr/http_endpoint.go | 61 | // without an ID and do not wait for a JSON-RPC response. | COMMENT |
| LOW | expr/http_endpoint.go | 81 | MultipartRequest bool | COMMENT |
| LOW | expr/http_service.go | 21 | // ServiceExpr is the service expression that backs this | COMMENT |
| LOW | expr/http_service.go | 41 | // HTTPErrors lists HTTP errors that apply to all endpoints. | COMMENT |
| LOW | expr/result_type.go | 21 | type ( | COMMENT |
| LOW | expr/result_type.go | 261 | // Project returns an error if the view does not exist for the given result type | COMMENT |
| LOW | expr/validation_effective.go | 1 | package expr | COMMENT |
| LOW | expr/api.go | 21 | Description string | COMMENT |
| LOW | expr/http_sse.go | 21 | // DataField is the name of the attribute in the StreamingResult type | COMMENT |
| LOW | expr/meta.go | 1 | package expr | COMMENT |
| 372 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | grpc/codegen/planned_name_collision_test.go | 60 | require.NotEqual(t, "NewProtoWatchRequest", endpoint.Request.ClientConvert.Init.Declaration.Name()) | CODE |
| CRITICAL | grpc/codegen/planned_name_collision_test.go | 64 | require.NotEqual(t, "ValidateWatchRequest", endpoint.Request.ServerConvert.Validation.Declaration.Name()) | CODE |
| CRITICAL | grpc/codegen/streaming_test.go | 220 | legacyConstructor := service.Endpoints[0].Request.LegacyDecode.ServerConvert.Init.Declaration.Name() | CODE |
| CRITICAL | grpc/codegen/streaming_errors_test.go | 44 | name := errorData.Response.ClientConvert.Init.Declaration.Name() | CODE |
| CRITICAL | expr/http_endpoint.go | 430 | if s := e.MethodExpr.Service.design.API.GRPC.Service(e.Service.Name()); s != nil { | CODE |
| CRITICAL | expr/http_endpoint.go | 445 | if s := e.MethodExpr.Service.design.API.GRPC.Service(e.Service.Name()); s != nil { | CODE |
| CRITICAL | expr/grpc_endpoint.go | 612 | if v, ok := e.MethodExpr.Service.design.API.Meta.Last(streamCompatMetaKey); ok { | CODE |
| CRITICAL | http/codegen/plan_test.go | 958 | require.Equal(t, endpoint.Payload.Request.PayloadInit.Declaration.Name(), endpoint.Payload.Request.PayloadInit.Name) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | codegen/funcs_test.go | 208 | str: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dol | CODE |
| LOW⚡ | codegen/funcs_test.go | 208 | str: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dol | CODE |
| LOW⚡ | codegen/funcs_test.go | 209 | expected: "Lorem ipsum dolor sit amet, consectetur\n" + | CODE |
| LOW⚡ | codegen/funcs_test.go | 209 | expected: "Lorem ipsum dolor sit amet, consectetur\n" + | CODE |
| LOW⚡ | codegen/funcs_test.go | 217 | str: "Lorem ipsum dolor sit amet,\n" + | CODE |
| LOW⚡ | codegen/funcs_test.go | 217 | str: "Lorem ipsum dolor sit amet,\n" + | CODE |
| LOW⚡ | codegen/funcs_test.go | 222 | expected: "Lorem ipsum dolor sit amet,\n" + | CODE |
| LOW⚡ | codegen/funcs_test.go | 222 | expected: "Lorem ipsum dolor sit amet,\n" + | CODE |
| LOW⚡ | codegen/funcs_test.go | 232 | str: "Lorem ipsum dolor sit amet,\n" + | CODE |
| LOW⚡ | codegen/funcs_test.go | 232 | str: "Lorem ipsum dolor sit amet,\n" + | CODE |
| LOW⚡ | codegen/funcs_test.go | 235 | expected: "Lorem ipsum dolor sit amet,\n" + | CODE |
| LOW⚡ | codegen/funcs_test.go | 235 | expected: "Lorem ipsum dolor sit amet,\n" + | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | jsonrpc/integration_tests/scenarios/scenarios.yaml | 684 | # Note: The gRPC call itself is validated via harness gRPC client parity checks | COMMENT |
| MEDIUM | jsonrpc/integration_tests/scenarios/scenarios.yaml | 685 | # (to be added in harness/runner extensions if we choose to assert both paths here). | COMMENT |
| MEDIUM | expr/types.go | 75 | // implementations. Plugins may leverage this interface to introduce | COMMENT |
| MEDIUM | codegen/go_transform.go | 253 | // don't have a match in source. The matching and generated code leverage | COMMENT |
| MEDIUM | eval/error.go | 87 | // Start scanning just above computeErrorLocation itself. This is robust to | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | jsonrpc/integration_tests/README.md | 488 | ├── framework/ # The core engine: discovers scenarios, orchestrates code generation, and runs tests. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | dsl/error.go | 187 | // Example usage: | COMMENT |