Do not flag the unhandled errors which are explicitly ignored

fixes #270
This commit is contained in:
Cosmin Cojocar 2019-01-14 09:50:19 +01:00 committed by Cosmin Cojocar
parent 12400f9a1c
commit 14ed63d558
2 changed files with 2 additions and 14 deletions

View file

@ -51,18 +51,6 @@ func returnsError(callExpr *ast.CallExpr, ctx *gosec.Context) int {
func (r *noErrorCheck) Match(n ast.Node, ctx *gosec.Context) (*gosec.Issue, error) { func (r *noErrorCheck) Match(n ast.Node, ctx *gosec.Context) (*gosec.Issue, error) {
switch stmt := n.(type) { switch stmt := n.(type) {
case *ast.AssignStmt:
for _, expr := range stmt.Rhs {
if callExpr, ok := expr.(*ast.CallExpr); ok && r.whitelist.ContainsCallExpr(expr, ctx, false) == nil {
pos := returnsError(callExpr, ctx)
if pos < 0 || pos >= len(stmt.Lhs) {
return nil, nil
}
if id, ok := stmt.Lhs[pos].(*ast.Ident); ok && id.Name == "_" {
return gosec.NewIssue(ctx, n, r.ID(), r.What, r.Severity, r.Confidence), nil
}
}
}
case *ast.ExprStmt: case *ast.ExprStmt:
if callExpr, ok := stmt.X.(*ast.CallExpr); ok && r.whitelist.ContainsCallExpr(stmt.X, ctx, false) == nil { if callExpr, ok := stmt.X.(*ast.CallExpr); ok && r.whitelist.ContainsCallExpr(stmt.X, ctx, false) == nil {
pos := returnsError(callExpr, ctx) pos := returnsError(callExpr, ctx)

View file

@ -184,7 +184,7 @@ func test() (int,error) {
func main() { func main() {
v, _ := test() v, _ := test()
fmt.Println(v) fmt.Println(v)
}`}, 1}, {[]string{` }`}, 0}, {[]string{`
package main package main
import ( import (
"io/ioutil" "io/ioutil"
@ -206,7 +206,7 @@ func main() {
a() a()
b() b()
c() c()
}`}, 3}, {[]string{` }`}, 2}, {[]string{`
package main package main
import "fmt" import "fmt"
func test() error { func test() error {