Skip to content

Commit

Permalink
fix: typecheck issues should never be ignored
Browse files Browse the repository at this point in the history
  • Loading branch information
ldez committed Jul 10, 2024
1 parent ee37ef3 commit a078c69
Show file tree
Hide file tree
Showing 8 changed files with 28 additions and 18 deletions.
5 changes: 0 additions & 5 deletions pkg/result/processors/autogenerated_exclude.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,6 @@ func (p *AutogeneratedExclude) Process(issues []result.Issue) ([]result.Issue, e
func (*AutogeneratedExclude) Finish() {}

func (p *AutogeneratedExclude) shouldPassIssue(issue *result.Issue) (bool, error) {
if issue.FromLinter == typeCheckName {
// don't hide typechecking errors in generated files: users expect to see why the project isn't compiling
return true, nil
}

if filepath.Base(issue.FilePath()) == "go.mod" {
return true, nil
}
Expand Down
8 changes: 0 additions & 8 deletions pkg/result/processors/autogenerated_exclude_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,14 +158,6 @@ func Test_shouldPassIssue(t *testing.T) {
issue *result.Issue
assert assert.BoolAssertionFunc
}{
{
desc: "typecheck issue",
mode: AutogeneratedModeLax,
issue: &result.Issue{
FromLinter: "typecheck",
},
assert: assert.True,
},
{
desc: "lax ",
mode: AutogeneratedModeLax,
Expand Down
2 changes: 1 addition & 1 deletion pkg/result/processors/invalid_issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func (InvalidIssue) Name() string {
}

func (p InvalidIssue) Process(issues []result.Issue) ([]result.Issue, error) {
tcIssues := filterIssues(issues, func(issue *result.Issue) bool {
tcIssues := filterIssuesUnsafe(issues, func(issue *result.Issue) bool {
return issue.FromLinter == typeCheckName
})

Expand Down
23 changes: 23 additions & 0 deletions pkg/result/processors/issues.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,23 @@ import (
)

func filterIssues(issues []result.Issue, filter func(issue *result.Issue) bool) []result.Issue {
retIssues := make([]result.Issue, 0, len(issues))
for i := range issues {
if issues[i].FromLinter == typeCheckName {
// don't hide typechecking errors in generated files: users expect to see why the project isn't compiling
retIssues = append(retIssues, issues[i])
continue
}

if filter(&issues[i]) {
retIssues = append(retIssues, issues[i])
}
}

return retIssues
}

func filterIssuesUnsafe(issues []result.Issue, filter func(issue *result.Issue) bool) []result.Issue {
retIssues := make([]result.Issue, 0, len(issues))
for i := range issues {
if filter(&issues[i]) {
Expand All @@ -20,6 +37,12 @@ func filterIssues(issues []result.Issue, filter func(issue *result.Issue) bool)
func filterIssuesErr(issues []result.Issue, filter func(issue *result.Issue) (bool, error)) ([]result.Issue, error) {
retIssues := make([]result.Issue, 0, len(issues))
for i := range issues {
if issues[i].FromLinter == typeCheckName {
// don't hide typechecking errors in generated files: users expect to see why the project isn't compiling
retIssues = append(retIssues, issues[i])
continue
}

ok, err := filter(&issues[i])
if err != nil {
return nil, fmt.Errorf("can't filter issue %#v: %w", issues[i], err)
Expand Down
2 changes: 1 addition & 1 deletion pkg/result/processors/max_from_linter.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func (p *MaxFromLinter) Process(issues []result.Issue) ([]result.Issue, error) {
return issues, nil
}

return filterIssues(issues, func(issue *result.Issue) bool {
return filterIssuesUnsafe(issues, func(issue *result.Issue) bool {
if issue.Replacement != nil && p.cfg.Issues.NeedFix {
// we need to fix all issues at once => we need to return all of them
return true
Expand Down
2 changes: 1 addition & 1 deletion pkg/result/processors/max_per_file_from_linter.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func (*MaxPerFileFromLinter) Name() string {
}

func (p *MaxPerFileFromLinter) Process(issues []result.Issue) ([]result.Issue, error) {
return filterIssues(issues, func(issue *result.Issue) bool {
return filterIssuesUnsafe(issues, func(issue *result.Issue) bool {
limit := p.maxPerFileFromLinterConfig[issue.FromLinter]
if limit == 0 {
return true
Expand Down
2 changes: 1 addition & 1 deletion pkg/result/processors/max_same_issues.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func (p *MaxSameIssues) Process(issues []result.Issue) ([]result.Issue, error) {
return issues, nil
}

return filterIssues(issues, func(issue *result.Issue) bool {
return filterIssuesUnsafe(issues, func(issue *result.Issue) bool {
if issue.Replacement != nil && p.cfg.Issues.NeedFix {
// we need to fix all issues at once => we need to return all of them
return true
Expand Down
2 changes: 1 addition & 1 deletion pkg/result/processors/uniq_by_line.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func (p *UniqByLine) Process(issues []result.Issue) ([]result.Issue, error) {
return issues, nil
}

return filterIssues(issues, p.shouldPassIssue), nil
return filterIssuesUnsafe(issues, p.shouldPassIssue), nil
}

func (*UniqByLine) Finish() {}
Expand Down

0 comments on commit a078c69

Please sign in to comment.