Skip to content

Commit 8031379

Browse files
authored
Merge pull request #1771 from reviewdog/rdf-ignore-unknown-field
rdf: Discard unknown fields when unmarshalling JSON data
2 parents 4527845 + 6d8afbc commit 8031379

File tree

4 files changed

+5
-4
lines changed

4 files changed

+5
-4
lines changed

parser/rdjson.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (p *RDJSONParser) Parse(r io.Reader) ([]*rdf.Diagnostic, error) {
2626
return nil, err
2727
}
2828
var dr rdf.DiagnosticResult
29-
if err := protojson.Unmarshal(b, &dr); err != nil {
29+
if err := (protojson.UnmarshalOptions{DiscardUnknown: true}).Unmarshal(b, &dr); err != nil {
3030
return nil, fmt.Errorf("failed to unmarshal rdjson (DiagnosticResult): %w", err)
3131
}
3232
for _, d := range dr.Diagnostics {

parser/rdjson_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ func ExampleRDJSONParser() {
7575
}
7676
}
7777
},
78-
"severity": 1
78+
"severity": 1,
79+
"unknown_field": "this field will be ignored"
7980
}
8081
]
8182
}`

parser/rdjsonl.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (p *RDJSONLParser) Parse(r io.Reader) ([]*rdf.Diagnostic, error) {
2626
s := bufio.NewScanner(r)
2727
for s.Scan() {
2828
d := new(rdf.Diagnostic)
29-
if err := protojson.Unmarshal(s.Bytes(), d); err != nil {
29+
if err := (protojson.UnmarshalOptions{DiscardUnknown: true}).Unmarshal(s.Bytes(), d); err != nil {
3030
return nil, fmt.Errorf("failed to unmarshal rdjsonl (Diagnostic): %w", err)
3131
}
3232
if d.GetOriginalOutput() == "" {

parser/rdjsonl_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ func TestRDJSONLParser(t *testing.T) {
1212
{"source":{"name":"ineffassign"},"message":"ineffectual assignment to 'x'","location":{"path":"testdata/main.go","range":{"start":{"line":12,"column":2}}}}
1313
{"source":{"name":"govet"},"message":"printf: Sprintf format %d reads arg #1, but call has 0 args","location":{"path":"testdata/main.go","range":{"start":{"line":13,"column":2}}}}
1414
{"source":{"name":"severity-test"},"message":"severity test (string)","location":{"path":"testdata/main.go","range":{"start":{"line":24,"column":6}}}, "severity": "WARNING"}
15-
{"source":{"name":"severity-test"},"message":"severity test (number)","location":{"path":"testdata/main.go","range":{"start":{"line":24,"column":6}}}, "severity": "WARNING"}`
15+
{"source":{"name":"severity-test"},"message":"severity test (number)","location":{"path":"testdata/main.go","range":{"start":{"line":24,"column":6}}}, "severity": "WARNING", "unknown_field": "this field will be ignored"}`
1616
sampleLines := strings.Split(sample, "\n")
1717
p := NewRDJSONLParser()
1818
diagnostics, err := p.Parse(strings.NewReader(sample))

0 commit comments

Comments
 (0)