api-linter

module
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

README

Google API Linter

ci latest release go version

The API linter provides real-time checks for compliance with many of the API standards, documented using [API Enhancement Proposals][]. It operates on API surfaces defined in protocol buffers. For APIs defined in OpenAPI specification an equivalent OpenAPI specification linter is available.

It identifies common mistakes and inconsistencies in API surfaces:

// Incorrect.
message GetBookRequest {
  // This is wrong; it should be spelled `name`.
  string book = 1;
}

When able, it also offers a suggestion for the correct fix.

Read more ≫

Versioning

The AEP API linter does not follow semantic versioning. Semantic versioning is challenging for a tool like a linter because the addition or correction of virtually any rule is "breaking" (in the sense that a file that previously reported no problems may now do so).

Therefore, the version numbers refer to the linter's core interface. In general:

  • Releases with only documentation, chores, dependency upgrades, and/or bugfixes are patch releases.
  • Releases with new rules (or potentially removed rules) are minor releases.
  • Releases with core interface alterations are major releases. This could include changes to the internal Go interface or the CLI user interface.

Note: Releases that increment the Go version will be considered minor.

This is an attempt to follow the spirit of semantic versioning while still being useful.

Contributing

If you are interested in contributing to the API linter, please review the contributing guide to learn more.

License

This software is made available under the Apache 2.0 license.

Directories

Path Synopsis
cmd
api-linter
The command line `api-linter` checks Google APIs defined in Protobuf files.
The command line `api-linter` checks Google APIs defined in Protobuf files.
Package lint provides lint functions for Google APIs that register rules and user configurations, apply those rules to a lint request, and produce lint results.
Package lint provides lint functions for Google APIs that register rules and user configurations, apply those rules to a lint request, and produce lint results.
Package locations provides functions to get the location of a particular part of a descriptor, allowing Problems to be attached to just a descriptor's name, type, etc..
Package locations provides functions to get the location of a particular part of a descriptor, allowing Problems to be attached to just a descriptor's name, type, etc..
Package rules contains implementations of rules that apply to Google APIs.
Package rules contains implementations of rules that apply to Google APIs.
aep0004
Package aep0004 contains rules defined in https://aep.dev/4.
Package aep0004 contains rules defined in https://aep.dev/4.
aep0121
Package aep0121 contains rules defined in https://aep.dev/121.
Package aep0121 contains rules defined in https://aep.dev/121.
aep0122
Package aep0122 contains rules defined in https://aep.dev/122.
Package aep0122 contains rules defined in https://aep.dev/122.
aep0126
Package aep0126 contains rules defined in https://aep.dev/126.
Package aep0126 contains rules defined in https://aep.dev/126.
aep0127
Package aep0127 contains rules defined in https://aep.dev/127.
Package aep0127 contains rules defined in https://aep.dev/127.
aep0131
Package aep0131 contains rules defined in https://aep.dev/131.
Package aep0131 contains rules defined in https://aep.dev/131.
aep0132
Package aep0132 contains rules defined in https://aep.dev/132.
Package aep0132 contains rules defined in https://aep.dev/132.
aep0133
Package aep0133 contains rules defined in https://aep.dev/133.
Package aep0133 contains rules defined in https://aep.dev/133.
aep0134
Package aep0134 contains rules defined in https://aep.dev/134.
Package aep0134 contains rules defined in https://aep.dev/134.
aep0135
Package aep0135 contains rules defined in https://aep.dev/135.
Package aep0135 contains rules defined in https://aep.dev/135.
aep0136
Package aep0136 contains rules defined in https://aep.dev/136.
Package aep0136 contains rules defined in https://aep.dev/136.
aep0141
Package aep0141 contains rules defined in https://aep.dev/141.
Package aep0141 contains rules defined in https://aep.dev/141.
aep0142
Package aep0142 contains rules defined in https://aep.dev/142.
Package aep0142 contains rules defined in https://aep.dev/142.
aep0144
Package aep0144 contains rules defined in https://aep.dev/144.
Package aep0144 contains rules defined in https://aep.dev/144.
aep0148
Package aep0148 contains rules defined in https://aep.dev/148.
Package aep0148 contains rules defined in https://aep.dev/148.
aep0151
Package aep0151 contains rules defined in https://aep.dev/151.
Package aep0151 contains rules defined in https://aep.dev/151.
aep0155
Package aep0155 contains rules defined in https://aep.dev/155.
Package aep0155 contains rules defined in https://aep.dev/155.
aep0156
Package aep0156 contains rules defined in https://aep.dev/156.
Package aep0156 contains rules defined in https://aep.dev/156.
aep0157
Package aep0157 contains rules defined in https://aep.dev/157.
Package aep0157 contains rules defined in https://aep.dev/157.
aep0158
Package aep0158 contains rules defined in https://aep.dev/158.
Package aep0158 contains rules defined in https://aep.dev/158.
aep0159
Package aep0159 contains rules defined in https://aep.dev/159.
Package aep0159 contains rules defined in https://aep.dev/159.
aep0164
Package aep0164 contains rules defined in https://aep.dev/164.
Package aep0164 contains rules defined in https://aep.dev/164.
aep0191
Package aep0191 contains rules defined in https://aep.dev/191.
Package aep0191 contains rules defined in https://aep.dev/191.
aep0192
Package aep0192 contains rules defined in https://aep.dev/192.
Package aep0192 contains rules defined in https://aep.dev/192.
aep0216
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