gordonklaus / ineffassign

Detect ineffectual assignments in Go code.
MIT License
397 stars 23 forks source link

false positive in `switch { case... case... }` #73

Closed trim21 closed 2 years ago

trim21 commented 2 years ago
package main

import (
    "context"
    "errors"
    "fmt"
    "time"
)

func main() {
}

var errExpected = errors.New("expected error")

const slowQueryTimeout = time.Millisecond * 200

func Trace(_ context.Context, begin time.Time, fc func() (sql string, rows int64), err error) {
    elapsed := time.Since(begin)
    var sql string
    var rows int64
    var fcCalled = false

    switch {
    case err != nil:
        fcCalled = true
        sql, rows = fc()
        fmt.Println("error", err, sql, rows)
    case elapsed >= slowQueryTimeout:
        if fcCalled {
            sql, rows = fc()
        }
        fmt.Println("slow sql", sql, rows)
    }
}
$ ineffassign.exe ./

main.go:25:3: ineffectual assignment to fcCalled
main.go:25:3: ineffectual assignment to fcCalled
trim21 commented 2 years ago

sorry, my fault, wrong issue