Metadata

ID: go-best-practices/regexp-zero-results

Language: Go

Severity: Info

Category: Best Practices

Description

Go, invoking the function re.FindAll() with the second argument set to 0 will not return any results.

Non-Compliant Code Examples

import "regexp"

func check(re *regexp.Regexp) [][]byte {
    return re.FindAll([]byte(`seafood fool`), 0)
}

func other() {
    check := func(re regexp.Regexp) [][]byte {
        return re.FindAll([]byte(`foo`), 0)
    }
}
import "regexp"

func main () {
    re := regexp.MustCompile("foo(")
    re.FindAll([]byte(`seafood fool`), 0)
}
import "regexp"

func main () {

    var re *regexp.Regexp

    res := re.FindAll(something, 0)
}
import "regexp"

func main () {

    re := regexp.MustCompile(`foo.?`)

    res := re.FindAll(something, 0)
}
import "regexp"

func main () {
    var r *regexp.Regexp
    res := r.FindAll(something, 0)
    
    var r2 regexp.Regexp
    res := r2.FindAll(something, 0)

    regexp.MustCompile("foo(").FindAll(nil, 0)
    regexp.MustCompile(`foo.?`).FindAll([]byte(`seafood fool`), -1)

    res = r.FindAll(something, 0)

    if something {
        re.FindAll([]byte(`seafood fool`), -1)
    }
}

Compliant Code Examples

func main() {
    res1 := regexp.MustCompile("foo(").FindAll(nil, 1)

    var r2 regexp.Regexp
    res := r2.FindAll(something, 1)

    // FindAll called on a non-Regexp object
    var myObj MyClass
    res2 := myObj.FindAll(something, 0)
}
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Security

PREVIEWING: may/add-limitnofile-op-troubleshooting