rules

package
v0.0.0-...-2c72e55 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 12, 2024 License: Apache-2.0 Imports: 5 Imported by: 3

Documentation

Overview

Package rules contains API rules that are enforced in OpenAPI spec generation as part of the machinery. Files under this package implement APIRule interface which evaluates Go type and produces list of API rule violations.

Implementations of APIRule should be added to API linter under openAPIGen code- generator to get integrated in the generation process.

Index

Constants

View Source
const ListTypeIDLTag = "listType"

Variables

This section is empty.

Functions

This section is empty.

Types

type ListTypeMissing

type ListTypeMissing struct{}

ListTypeMissing implements APIRule interface. A list type is required for inlined list.

func (*ListTypeMissing) Name

func (l *ListTypeMissing) Name() string

Name returns the name of APIRule

func (*ListTypeMissing) Validate

func (l *ListTypeMissing) Validate(t *types.Type) ([]string, error)

Validate evaluates API rule on type t and returns a list of field names in the type that violate the rule. Empty field name [""] implies the entire type violates the rule.

type NamesMatch

type NamesMatch struct{}

NamesMatch implements APIRule interface. Go field names must be CamelCase. JSON field names must be camelCase. Other than capitalization of the initial letter, the two should almost always match. No underscores nor dashes in either. This rule verifies the convention "Other than capitalization of the initial letter, the two should almost always match." Examples (also in unit test):

Go name      | JSON name    | match
               podSpec        false
PodSpec        podSpec        true
PodSpec        PodSpec        false
podSpec        podSpec        false
PodSpec        spec           false
Spec           podSpec        false
JSONSpec       jsonSpec       true
JSONSpec       jsonspec       false
HTTPJSONSpec   httpJSONSpec   true

NOTE: this validator cannot tell two sequential all-capital words from one word, therefore the case below is also considered matched.

HTTPJSONSpec   httpjsonSpec   true

NOTE: an empty JSON name is valid only for inlined structs or pointer to structs. It cannot be empty for anything else because capitalization must be set explicitly.

NOTE: metav1.ListMeta and metav1.ObjectMeta by convention must have "metadata" as name. Other fields may have that JSON name if the field name matches.

func (*NamesMatch) Name

func (n *NamesMatch) Name() string

Name returns the name of APIRule

func (*NamesMatch) Validate

func (n *NamesMatch) Validate(t *types.Type) ([]string, error)

Validate evaluates API rule on type t and returns a list of field names in the type that violate the rule. Empty field name [""] implies the entire type violates the rule.

type OmitEmptyMatchCase

type OmitEmptyMatchCase struct{}

OmitEmptyMatchCase implements APIRule interface. "omitempty" must appear verbatim (no case variants).

func (*OmitEmptyMatchCase) Name

func (n *OmitEmptyMatchCase) Name() string

func (*OmitEmptyMatchCase) Validate

func (n *OmitEmptyMatchCase) Validate(t *types.Type) ([]string, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL