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 ¶
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. |