rules

package
v0.0.0-...-3c3b820 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2024 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Overview

Package rules contains implementations of rules that apply to Google APIs.

Rules are sorted into subpackages by the AEP (https://aep.dev/) that mandates the rule. Every rule represented in code here must be represented in English in a corresponding AEP. Conversely, anything mandated in an AEP should have a rule here if it is feasible to enforce in code (sometimes it is infeasible, however).

A rule is technically anything with a `GetName()`, `GetURI()“, and `Lint(*desc.FileDescriptorProto) []lint.Problem` method, but most rule authors will want to use the rule structs provided in the lint package (`&lint.MessageRule`, `&lint.FieldRule`, and so on). These run against each applicable descriptor in the file (`MessageRule` against every message, for example). They also have an `OnlyIf` property that can be used to run against a subset of descriptors.

A simple rule therefore looks like this:

var myRule = &lint.MessageRule{
  Name: lint.NewRuleName(1234, "my-rule"),
  LintMessage: func(m *desc.MessageDescriptor) []lint.Problem {
    if isBad(m) {
      return []lint.Problem{{
        Message: "This message is bad.",
        Descriptor: m,
      }}
    }
    return nil
  },
}

Once a rule is written, it needs to be registered. This involves adding the rule to the `AddRules` method for the appropriate AEP package. If this is the first rule for a new AEP, then the `rules.go` init() function must also be updated to run the `AddRules` function for the new package.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Add

func Add(r lint.RuleRegistry) error

Add all rules to the given registry.

Types

This section is empty.

Directories

Path Synopsis
Package aep0004 contains rules defined in https://aep.dev/4.
Package aep0004 contains rules defined in https://aep.dev/4.
Package aep0121 contains rules defined in https://aep.dev/121.
Package aep0121 contains rules defined in https://aep.dev/121.
Package aep0122 contains rules defined in https://aep.dev/122.
Package aep0122 contains rules defined in https://aep.dev/122.
Package aep0126 contains rules defined in https://aep.dev/126.
Package aep0126 contains rules defined in https://aep.dev/126.
Package aep0127 contains rules defined in https://aep.dev/127.
Package aep0127 contains rules defined in https://aep.dev/127.
Package aep0131 contains rules defined in https://aep.dev/131.
Package aep0131 contains rules defined in https://aep.dev/131.
Package aep0132 contains rules defined in https://aep.dev/132.
Package aep0132 contains rules defined in https://aep.dev/132.
Package aep0133 contains rules defined in https://aep.dev/133.
Package aep0133 contains rules defined in https://aep.dev/133.
Package aep0134 contains rules defined in https://aep.dev/134.
Package aep0134 contains rules defined in https://aep.dev/134.
Package aep0135 contains rules defined in https://aep.dev/135.
Package aep0135 contains rules defined in https://aep.dev/135.
Package aep0136 contains rules defined in https://aep.dev/136.
Package aep0136 contains rules defined in https://aep.dev/136.
Package aep0141 contains rules defined in https://aep.dev/141.
Package aep0141 contains rules defined in https://aep.dev/141.
Package aep0142 contains rules defined in https://aep.dev/142.
Package aep0142 contains rules defined in https://aep.dev/142.
Package aep0144 contains rules defined in https://aep.dev/144.
Package aep0144 contains rules defined in https://aep.dev/144.
Package aep0148 contains rules defined in https://aep.dev/148.
Package aep0148 contains rules defined in https://aep.dev/148.
Package aep0151 contains rules defined in https://aep.dev/151.
Package aep0151 contains rules defined in https://aep.dev/151.
Package aep0155 contains rules defined in https://aep.dev/155.
Package aep0155 contains rules defined in https://aep.dev/155.
Package aep0156 contains rules defined in https://aep.dev/156.
Package aep0156 contains rules defined in https://aep.dev/156.
Package aep0157 contains rules defined in https://aep.dev/157.
Package aep0157 contains rules defined in https://aep.dev/157.
Package aep0158 contains rules defined in https://aep.dev/158.
Package aep0158 contains rules defined in https://aep.dev/158.
Package aep0159 contains rules defined in https://aep.dev/159.
Package aep0159 contains rules defined in https://aep.dev/159.
Package aep0164 contains rules defined in https://aep.dev/164.
Package aep0164 contains rules defined in https://aep.dev/164.
Package aep0191 contains rules defined in https://aep.dev/191.
Package aep0191 contains rules defined in https://aep.dev/191.
Package aep0192 contains rules defined in https://aep.dev/192.
Package aep0192 contains rules defined in https://aep.dev/192.
Package aep0216 contains rules defined in https://aep.dev/216.
Package aep0216 contains rules defined in https://aep.dev/216.
internal
data
Package data contains constants used in multiple AEP rules.
Package data contains constants used in multiple AEP rules.

Jump to

Keyboard shortcuts

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