8000 Recognize Go 1.27 JSON v2 marshaling in SA9005 by dajiaohuang · Pull Request #1753 · dominikh/go-tools · GitHub
[go: up one dir, main page]

Skip to content
8000

Recognize Go 1.27 JSON v2 marshaling in SA9005 - #1753

Open
dajiaohuang wants to merge 2 commits into
dominikh:masterfrom
dajiaohuang:fix/1744-json-v2-marshaler-go127
Open

dajiaohuang wants to merge 2 commits into
dominikh:masterfrom
dajiaohuang:fix/1744-json-v2-marshaler-go127

Conversation

@dajiaohuang
8000 @dajiaohuang dajiaohuang commented Oct 1, 2026 •
Copy link
Copy Markdown

Recognize the exact MarshalJSONTo(*jsontext.Encoder) error and UnmarshalJSONFrom(*jsontext.Decoder) error contracts as custom marshaling methods for encoding/json in the Go 1.27 JSON v2 configuration. This avoids SA9005 false positives for structs with only unexported fields while retaining diagnostics for same-named methods with incompatible signatures. Legacy marshaling checks are unchanged.

Fixes #1744.

Validation: GOTOOLCHAIN=go1.27.0 GOPROXY=off GOEXPERIMENT=jsonv2 go test ./staticcheck/sa9005 passed. The repository fixture harness still skips its Go 1.27 group due to its version ceiling; this is not claimed as fixture acceptance. The new signature unit test passes. Separately, direct production staticcheck CLI execution with Go 1.27 reports both JSON calls on the incompatible-signature fixture and emits no SA9005 on the valid-v2 MarshalJSONTo fixture. Prior runtime verification confirms the valid method is dispatched by encoding/json and encoding/json/v2 in this configuration. No full-suite or CI acceptance claimed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SA9005 does not understand json/v2 custom marshaling

1 participant

0