S022

SchemasStandard

check for Schema of TypeMap with invalid Elem of *schema.Resource

The S022 analyzer reports cases of schema that declare Elem of *schema.Resource with TypeMap, which has undefined behavior. Only TypeList and TypeSet can be used for configuration block attributes.

Examples

&schema.Schema{
  Type: schema.TypeMap,
  Elem: &schema.Resource{},
}
&schema.Schema{
  Type: schema.TypeList,
  Elem: &schema.Resource{},
}

// or

&schema.Schema{
  Type: schema.TypeSet,
  Elem: &schema.Resource{},
}

// or

&schema.Schema{
  Type: schema.TypeMap,
  Elem: &schema.Schema{},
}

Ignoring reports

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

//lintignore:S022
&schema.Schema{
  Type: schema.TypeMap,
  Elem: &schema.Resource{},
}

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