Giter Club home page Giter Club logo

rowserrcheck's Introduction

rowserrcheck

CircleCI

rowserrcheck is a static analysis tool which checks whether sql.Rows.Err is correctly checked.

Install

You can get rowserrcheck by go get command.

$ go get -u github.com/jingyugao/rowserrcheck

Analyzer

rowserrcheck validates whether *database/sql.Rows of sql query calls method rows.Err() such as below code.

rows, _ := db.Query("select id from tb") // Wrong case
if err != nil {
	// handle error
}
for rows.Next(){
	// handle rows
}

This code is wrong. You must check rows.Err when finished scan rows.

rows, _ := db.Query("select id from tb") // Wrong case
for rows.Next(){
	// handle rows
}
if rows.Err()!=nil{
	// handle err
}

In the GoDoc of sql.Rows this rule is clearly described.

If you forget this sentence, and unluckly an invaliad connection error happend when fetch data from database, rows.Next will return false, and you will get an incomplete data, and even it seems everything is ok. This will cause serious accident.

Thanks

Thanks for timakin.

rowserrcheck's People

Contributors

timakin avatar jingyugao avatar ldez avatar jirfag avatar stevenh avatar guidao avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.