Skip to content

err-todo triggered on code that does not handle an error #64

@ainar-g

Description

@ainar-g

Synopsis:

package main

import (
	"fmt"
)

func weird() (n int, err error) {
	return 0, nil
}

func main() {
	n, err := weird()
	if err != nil {
		panic(err)
	} else if n == 0 {
		// TODO(ainar-g): weird API returns zero sometimes.  Use
		// the default value in such cases.
		n = 42
	}

	fmt.Println(n)
}
( cd "${HOME}/dev/semgrep-go/" && git show --oneline )
2a74033 (HEAD -> master, origin/master, origin/HEAD) Merge pull request #61 from yyoshiki41/improve/readeof
semgrep --vim -f "${HOME}/dev/semgrep-go/" -q ./main.go
main.go:16:3:E:home.ainar.dev.semgrep-go.err-todo:TODO in error handling code

It seems like the rules currently consider the entire if-else block “error handling code” if even only one branch actually works with err. I feel like it's more correct to think of that block as “result handling” as opposed to “error handling”.

It's a minor annoyance, so I don't mind it as much, but I still decided to report, just in case.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions