From 6b14958def11a97a241145ffd3a61b448c6dbe5c Mon Sep 17 00:00:00 2001 From: jingyugao <1121087373@qq.com> Date: Sat, 30 Jan 2021 09:36:10 +0800 Subject: [PATCH 1/3] fix rowserrcheck reports false positive #943 --- go.mod | 5 +++- go.sum | 7 ++--- test/testdata/rowserrcheck.go | 52 +++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index e716aff0d83e..92e83c8f1a64 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( github.com/esimonov/ifshort v1.0.0 github.com/fatih/color v1.10.0 github.com/go-critic/go-critic v0.5.3 + github.com/go-sql-driver/mysql v1.4.0 github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b github.com/gofrs/flock v0.8.0 github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 @@ -30,8 +31,9 @@ require ( github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0 github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 github.com/jgautheron/goconst v0.0.0-20201117150253-ccae5bf973f3 - github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a + github.com/jingyugao/rowserrcheck v0.0.0-20210130005344-c6a0c12dd98d github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3 + github.com/jmoiron/sqlx v1.2.0 github.com/kulti/thelper v0.2.1 github.com/kunwardeep/paralleltest v1.0.2 github.com/kyoh86/exportloopref v0.1.8 @@ -69,6 +71,7 @@ require ( github.com/ultraware/whitespace v0.0.4 github.com/uudashr/gocognit v1.0.1 github.com/valyala/quicktemplate v1.6.3 + golang.org/x/mod v0.4.0 golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634 // indirect golang.org/x/text v0.3.4 // indirect golang.org/x/tools v0.0.0-20210105210202-9ed45478a130 diff --git a/go.sum b/go.sum index 8c7372d062ac..493046b1eeee 100644 --- a/go.sum +++ b/go.sum @@ -208,13 +208,12 @@ github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NH github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jgautheron/goconst v0.0.0-20201117150253-ccae5bf973f3 h1:7nkB9fLPMwtn/R6qfPcHileL/x9ydlhw8XyDrLI1ZXg= github.com/jgautheron/goconst v0.0.0-20201117150253-ccae5bf973f3/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= -github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a h1:GmsqmapfzSJkm28dhRoHz2tLRbJmqhU86IPgBtN3mmk= -github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a/go.mod h1:xRskid8CManxVta/ALEhJha/pweKBaVG6fWgc0yH25s= +github.com/jingyugao/rowserrcheck v0.0.0-20210130005344-c6a0c12dd98d h1:BYDZtm80MLJpTWalkwHxNnIbO/2akQHERcfLq4TbIWE= +github.com/jingyugao/rowserrcheck v0.0.0-20210130005344-c6a0c12dd98d/go.mod h1:/EZlaYCnEX24i7qdVhT9du5JrtFWYRQr67bVgR7JJC8= github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3 h1:jNYPNLe3d8smommaoQlK7LOA5ESyUJJ+Wf79ZtA7Vp4= github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= +github.com/jmoiron/sqlx v1.2.0 h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA= github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5 h1:lrdPtrORjGv1HbbEvKWDUAy97mPpFm4B8hp77tcCUJY= -github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= diff --git a/test/testdata/rowserrcheck.go b/test/testdata/rowserrcheck.go index c45064c3536a..528b0bc7353d 100644 --- a/test/testdata/rowserrcheck.go +++ b/test/testdata/rowserrcheck.go @@ -3,6 +3,8 @@ package testdata import ( "database/sql" + "fmt" + "math/rand" ) func RowsErrNotChecked(db *sql.DB) { @@ -11,3 +13,53 @@ func RowsErrNotChecked(db *sql.DB) { } } + +func issue943_1() { + db, err := sql.Open("postgres", "postgres://localhost:5432/postgres") + if err != nil { + panic(err) + } + defer db.Close() + + var rows *sql.Rows + if rand.Float64() < 0.5 { + rows, err = db.Query("select 1") + } else { + rows, err = db.Query("select 2") + } + if err != nil { + panic(err) + } + defer rows.Close() + for rows.Next() { + fmt.Println("new rows") + } + if err := rows.Err(); err != nil { + panic(err) + } +} + +func issue943_1() { + db, err := sql.Open("postgres", "postgres://localhost:5432/postgres") + if err != nil { + panic(err) + } + defer db.Close() + + var rows *sql.Rows + if rand.Float64() < 0.5 { + rows, err = db.Query("select 1") // ERROR "rows.Err must be checked" + } else { + rows, err = db.Query("select 2") // ERROR "rows.Err must be checked" + } + if err != nil { + panic(err) + } + defer rows.Close() + for rows.Next() { + fmt.Println("new rows") + } + if err := rows.Err(); err != nil { + panic(err) + } +} From cf19f3b1cad4d86106f76ed43a984da9f33b1ae4 Mon Sep 17 00:00:00 2001 From: jingyugao <1121087373@qq.com> Date: Sat, 30 Jan 2021 09:38:06 +0800 Subject: [PATCH 2/3] fix mod --- go.mod | 3 --- 1 file changed, 3 deletions(-) diff --git a/go.mod b/go.mod index 92e83c8f1a64..5775059942ff 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,6 @@ require ( github.com/esimonov/ifshort v1.0.0 github.com/fatih/color v1.10.0 github.com/go-critic/go-critic v0.5.3 - github.com/go-sql-driver/mysql v1.4.0 github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b github.com/gofrs/flock v0.8.0 github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 @@ -33,7 +32,6 @@ require ( github.com/jgautheron/goconst v0.0.0-20201117150253-ccae5bf973f3 github.com/jingyugao/rowserrcheck v0.0.0-20210130005344-c6a0c12dd98d github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3 - github.com/jmoiron/sqlx v1.2.0 github.com/kulti/thelper v0.2.1 github.com/kunwardeep/paralleltest v1.0.2 github.com/kyoh86/exportloopref v0.1.8 @@ -71,7 +69,6 @@ require ( github.com/ultraware/whitespace v0.0.4 github.com/uudashr/gocognit v1.0.1 github.com/valyala/quicktemplate v1.6.3 - golang.org/x/mod v0.4.0 golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634 // indirect golang.org/x/text v0.3.4 // indirect golang.org/x/tools v0.0.0-20210105210202-9ed45478a130 From 72848aeaf2f85020fd7ac4e3ef7d7c61e5edd84f Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Sat, 30 Jan 2021 02:48:55 +0100 Subject: [PATCH 3/3] fix: tests. --- test/testdata/rowserrcheck.go | 36 +++++------------------------------ 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/test/testdata/rowserrcheck.go b/test/testdata/rowserrcheck.go index 528b0bc7353d..554760a7b9af 100644 --- a/test/testdata/rowserrcheck.go +++ b/test/testdata/rowserrcheck.go @@ -14,14 +14,10 @@ func RowsErrNotChecked(db *sql.DB) { } } -func issue943_1() { - db, err := sql.Open("postgres", "postgres://localhost:5432/postgres") - if err != nil { - panic(err) - } - defer db.Close() - +func issue943(db *sql.DB) { var rows *sql.Rows + var err error + if rand.Float64() < 0.5 { rows, err = db.Query("select 1") } else { @@ -30,35 +26,13 @@ func issue943_1() { if err != nil { panic(err) } - defer rows.Close() - for rows.Next() { - fmt.Println("new rows") - } - if err := rows.Err(); err != nil { - panic(err) - } -} - -func issue943_1() { - db, err := sql.Open("postgres", "postgres://localhost:5432/postgres") - if err != nil { - panic(err) - } - defer db.Close() - var rows *sql.Rows - if rand.Float64() < 0.5 { - rows, err = db.Query("select 1") // ERROR "rows.Err must be checked" - } else { - rows, err = db.Query("select 2") // ERROR "rows.Err must be checked" - } - if err != nil { - panic(err) - } defer rows.Close() + for rows.Next() { fmt.Println("new rows") } + if err := rows.Err(); err != nil { panic(err) }