durcheck
1.0.0
durcheck เป็น linter ที่ง่ายมากซึ่งตรวจพบข้อบกพร่องที่อาจเกิดขึ้นกับ time.Duration ในแพ็คเกจ GO
พิจารณารหัสต่อไปนี้:
func doInTime ( done chan struct {}) error {
select {
case <- time . After ( 60 ):
return errors . New ( "timeout" )
case <- done :
return nil
}
} เห็นได้ชัดว่ามีปัญหาเกี่ยวกับ time.After(60) ซึ่ง int ที่ไม่ได้รับการแปลงถูกแปลงเป็น 60 นาโนวินาที แต่โปรแกรมเมอร์สามารถพลาดได้หรือผู้มาใหม่ของ Golang จากภาษาเช่น PHP ที่ฟังก์ชั่นการนอนหลับมี Signature int sleep ( int $seconds ) สามารถทำผิดพลาดได้
การเรียกใช้ linter กับรหัสด้านบนจะสร้างข้อผิดพลาด:
$ durcheck .
main.go:14:9: implicit time.Duration means nanoseconds in " time.After(60) " go get -u github.com/hypnoglow/durcheck
ตัวเลือก A: ส่งอาร์กิวเมนต์เหล่านี้ไปยังคำสั่ง gometalinter :
gometalinter --linter=durcheck:durcheck:PATH:LINE:COL:MESSAGE --enable=durcheck ./...
ตัวเลือก B: เพิ่มการกำหนดค่านี้ในไฟล์ .gometalinter.json ของคุณ:
{
"Enable" : [
" durcheck "
],
"Linters" : {
"durcheck" : {
"Command" : " durcheck " ,
"Pattern" : " PATH:LINE:COL:MESSAGE "
}
}
}มิกซ์