V013

ValidationStandard

check for custom SchemaValidateFunc that implement validation.StringInSlice() or validation.StringNotInSlice()

The V013 analyzer reports when custom SchemaValidateFunc declarations can be replaced with validation.StringInSlice() or validation.StringNotInSlice().

Examples

func validateExampleThing(v interface{}, k string) (ws []string, errors []error) {
  value := v.(string)

  if value != "value1" && value != "value2" {
    errors = append(errors, fmt.Errorf("%q must be value1 or value2: %s", k, value))
  }

  return
}
// directly in Schema
ValidateFunc: validation.StringInSlice([]string{"value1", "value2"}, false),

// or saving as a variable
var validateExampleThing = validation.StringInSlice([]string{"value1", "value2"}, false)

// or replacing the function
func validateExampleThing() schema.SchemaValidateFunc {
  return validation.StringInSlice([]string{"value1", "value2"}, false)
}

Ignoring reports

Singular reports can be ignored by adding a //lintignore:V013 Go code comment at the end of the offending line or on the line immediately preceding, e.g.

//lintignore:V013
func validateExampleThing(v interface{}, k string) (ws []string, errors []error) {
  value := v.(string)

  if value != "value1" && value != "value2" {
    errors = append(errors, fmt.Errorf("%q must be value1 or value2: %s", k, value))
  }

  return
}

This page is generated from passes/V013/README.md, which lives beside the analyzer.