GeertJohan/go.rice

Report a coding bug about unused result

guodongli-google opened this issue · 0 comments

At https://github.com/GeertJohan/go.rice/blob/master/box.go#L66, the result of function errors.New is not actually used since err is local to case LocateFS such that errors.New("given name/path is not a directory") won't be assigned to the one declared outside the loop var err error.

var err error
for _, method := range order {
	...
	case LocateFS:
			// resolve absolute directory path
			err := b.resolveAbsolutePathFromCaller()
			...
			err = errors.New("given name/path is not a directory")
			continue
}

while function errors.New has no side effect:

func New(text string) error {
	return &errorString{text}
}

Another instance is at: https://github.com/GeertJohan/go.rice/blob/master/box.go#L83

A mini bug reproducer is available at:
https://play.golang.org/p/FA2ZsZ34zqJ

A possible fix is not to declare a local err within the cases, e.g.

	case LocateFS:
			// resolve absolute directory path
			err = b.resolveAbsolutePathFromCaller()

Found by static analyzer #deepgo