From a35f376c85cb0c4190906d059799f0c40db9c344 Mon Sep 17 00:00:00 2001 From: Jeff Ortel Date: Tue, 16 Jul 2024 14:54:47 -0500 Subject: [PATCH] :bug: Report violations for ruleset with errors. (#112) In support of succeeded-with-errors, the addon should report issues (violations) even when the ruleset reports errors. Also fixes duplicate rule errors added to the Task.Errors. Signed-off-by: Jeff Ortel --- builder/deps.go | 5 ++++- builder/issue.go | 14 ++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/builder/deps.go b/builder/deps.go index ba31a44..8d84c08 100644 --- a/builder/deps.go +++ b/builder/deps.go @@ -40,7 +40,7 @@ func (b *Deps) Write(writer io.Writer) (err error) { encoder := yaml.NewEncoder(writer) for _, p := range input { for _, d := range p.Dependencies { - _ = encoder.Encode( + err = encoder.Encode( &api.TechDependency{ Provider: p.Provider, Indirect: d.Indirect, @@ -49,6 +49,9 @@ func (b *Deps) Write(writer io.Writer) (err error) { SHA: d.ResolvedIdentifier, Labels: d.Labels, }) + if err != nil { + return + } } } return diff --git a/builder/issue.go b/builder/issue.go index c177bdd..078ca67 100644 --- a/builder/issue.go +++ b/builder/issue.go @@ -1,6 +1,7 @@ package builder import ( + "errors" "fmt" "io" "net/url" @@ -51,9 +52,6 @@ func (b *Issues) Write(writer io.Writer) (err error) { encoder := yaml.NewEncoder(writer) for _, ruleset := range input { b.ruleErr.Append(ruleset) - if b.ruleErr.NotEmpty() { - continue - } for ruleid, v := range ruleset.Violations { issue := api.Issue{ RuleSet: ruleset.Name, @@ -89,7 +87,10 @@ func (b *Issues) Write(writer io.Writer) (err error) { issue.Incidents, incident) } - _ = encoder.Encode(&issue) + err = encoder.Encode(&issue) + if err != nil { + return + } } } if err != nil { @@ -157,7 +158,8 @@ func (e *RuleError) Error() (s string) { } func (e *RuleError) Is(err error) (matched bool) { - _, matched = err.(*RuleError) + var ruleError *RuleError + matched = errors.As(err, &ruleError) return } @@ -184,6 +186,6 @@ func (e *RuleError) Report() { Severity: "Error", Description: fmt.Sprintf("[Analyzer] %s: %s", ruleid, err), }) - addon.Error(errors...) } + addon.Error(errors...) }