Documentation ¶
Index ¶
- func AllCategoriesAndIDsForVersionSpec(versionSpec *VersionSpec) []string
- func AllCategoriesForVersionSpec(versionSpec *VersionSpec) []string
- func AllIDsForVersionSpec(versionSpec *VersionSpec) []string
- type CheckFunc
- type Config
- type ConfigBuilder
- type Helper
- func (h *Helper) AddFileAnnotationWithExtraIgnoreDescriptorsf(descriptor protosource.Descriptor, ...)
- func (h *Helper) AddFileAnnotationWithExtraIgnoreLocationsf(descriptor protosource.Descriptor, location protosource.Location, ...)
- func (h *Helper) AddFileAnnotationf(descriptor protosource.Descriptor, location protosource.Location, ...)
- func (h *Helper) FileAnnotations() []bufanalysis.FileAnnotation
- type IgnoreFunc
- type Rule
- type RuleBuilder
- type Runner
- type RunnerOption
- type VersionSpec
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AllCategoriesAndIDsForVersionSpec ¶
func AllCategoriesAndIDsForVersionSpec(versionSpec *VersionSpec) []string
AllCategoriesAndIDsForVersionSpec returns all categories and rules for the VersionSpec.
Sorted lexographically.
func AllCategoriesForVersionSpec ¶
func AllCategoriesForVersionSpec(versionSpec *VersionSpec) []string
AllCategoriesForVersionSpec returns all categories for the VersionSpec.
Sorted by category priority.
func AllIDsForVersionSpec ¶
func AllIDsForVersionSpec(versionSpec *VersionSpec) []string
AllIDsForVersionSpec returns all ids for the VersionSpec.
Sorted lexographically.
Types ¶
type CheckFunc ¶
type CheckFunc func(id string, ignoreFunc IgnoreFunc, previousFiles []protosource.File, files []protosource.File) ([]bufanalysis.FileAnnotation, error)
CheckFunc is a check function.
type Config ¶
type Config struct { // Rules are the rules to run. // // Rules will be sorted by first categories, then id when Configs are // created from this package, i.e. created wth ConfigBuilder.NewConfig. Rules []*Rule IgnoreRootPaths map[string]struct{} IgnoreIDToRootPaths map[string]map[string]struct{} AllowCommentIgnores bool IgnoreUnstablePackages bool }
Config is the check config.
type ConfigBuilder ¶
type ConfigBuilder struct { Use []string Except []string IgnoreRootPaths []string IgnoreIDOrCategoryToRootPaths map[string][]string AllowCommentIgnores bool IgnoreUnstablePackages bool EnumZeroValueSuffix string RPCAllowSameRequestResponse bool RPCAllowGoogleProtobufEmptyRequests bool RPCAllowGoogleProtobufEmptyResponses bool ServiceSuffix string }
ConfigBuilder is a config builder.
func (ConfigBuilder) NewConfig ¶
func (b ConfigBuilder) NewConfig(versionSpec *VersionSpec) (*Config, error)
NewConfig returns a new Config.
type Helper ¶
type Helper struct {
// contains filtered or unexported fields
}
Helper is a helper for rules.
func NewHelper ¶
func NewHelper(id string, ignoreFunc IgnoreFunc) *Helper
NewHelper returns a new Helper for the given id.
func (*Helper) AddFileAnnotationWithExtraIgnoreDescriptorsf ¶
func (h *Helper) AddFileAnnotationWithExtraIgnoreDescriptorsf( descriptor protosource.Descriptor, extraIgnoreDescriptors []protosource.Descriptor, location protosource.Location, format string, args ...interface{}, )
AddFileAnnotationWithExtraIgnoreDescriptorsf adds a FileAnnotation with the id as the Type.
extraIgnoreDescriptors are extra desciptors to check for ignores.
If descriptor is nil, no filename information is added. If location is nil, no line or column information will be added.
func (*Helper) AddFileAnnotationWithExtraIgnoreLocationsf ¶
func (h *Helper) AddFileAnnotationWithExtraIgnoreLocationsf( descriptor protosource.Descriptor, location protosource.Location, extraIgnoreLocations []protosource.Location, format string, args ...interface{}, )
AddFileAnnotationWithExtraIgnoreLocationsf adds a FileAnnotation with the id as the Type.
extraIgnoreLocations are extra locations to check for comment ignores.
If descriptor is nil, no filename information is added. If location is nil, no line or column information will be added.
func (*Helper) AddFileAnnotationf ¶
func (h *Helper) AddFileAnnotationf( descriptor protosource.Descriptor, location protosource.Location, format string, args ...interface{}, )
AddFileAnnotationf adds a FileAnnotation with the id as the Type.
If descriptor is nil, no filename information is added. If location is nil, no line or column information will be added.
func (*Helper) FileAnnotations ¶
func (h *Helper) FileAnnotations() []bufanalysis.FileAnnotation
FileAnnotations returns the added FileAnnotations.
type IgnoreFunc ¶
type IgnoreFunc func(id string, descriptors []protosource.Descriptor, locations []protosource.Location) bool
IgnoreFunc is an ignore function.
Descriptors are the descriptors to check for ignores. Sometimes we have multiple descriptors, such as when we want to check previous file descriptors, or if an entire package is deleted.
Locations are the locations to check for comment ignores. Sometimes, we have multiple locations to check, for example with RPC_REQUEST_STANDARD_NAME and RPC_RESPONSE_STANDARD_NAME, we want to check both the input/output type, and the method.
Any descriptor or location may be nil.
type Rule ¶
type Rule struct {
// contains filtered or unexported fields
}
Rule provides a base embeddable rule.
func (*Rule) MarshalJSON ¶
MarshalJSON implements Rule.
type RuleBuilder ¶
type RuleBuilder struct {
// contains filtered or unexported fields
}
RuleBuilder is a rule builder.
func NewNopRuleBuilder ¶
func NewNopRuleBuilder( id string, purpose string, checkFunc CheckFunc, ) *RuleBuilder
NewNopRuleBuilder returns a new RuleBuilder for the direct purpose and CheckFunc.
func NewRuleBuilder ¶
func NewRuleBuilder( id string, newPurpose func(ConfigBuilder) (string, error), newCheck func(ConfigBuilder) (CheckFunc, error), ) *RuleBuilder
NewRuleBuilder returns a new RuleBuilder.
func (*RuleBuilder) NewRule ¶
func (c *RuleBuilder) NewRule(configBuilder ConfigBuilder, categories []string) (*Rule, error)
NewRule returns a new Rule.
Categories will be sorted and Purpose will be prepended with "Checks that " and appended with ".".
Categories is an actual copy from the ruleBuilder.
type Runner ¶
type Runner struct {
// contains filtered or unexported fields
}
Runner is a runner.
func NewRunner ¶
func NewRunner(logger *zap.Logger, options ...RunnerOption) *Runner
NewRunner returns a new Runner.
func (*Runner) Check ¶
func (r *Runner) Check(ctx context.Context, config *Config, previousFiles []protosource.File, files []protosource.File) ([]bufanalysis.FileAnnotation, error)
Check runs the Rules.
type RunnerOption ¶
type RunnerOption func(*Runner)
RunnerOption is an option for a new Runner.
func RunnerWithIgnorePrefix ¶
func RunnerWithIgnorePrefix(ignorePrefix string) RunnerOption
RunnerWithIgnorePrefix returns a new RunnerOption that sets the comment ignore prefix.
This will result in failures where the location has "ignore_prefix id" in the leading comment being ignored.
The default is to not enable comment ignores.
type VersionSpec ¶
type VersionSpec struct { RuleBuilders []*RuleBuilder DefaultCategories []string // May include IDs without any categories. // To get all categories, use AllCategoriesForVersionSpec. IDToCategories map[string][]string }
VersionSpec specifies the rules, ids, and categories for a given version.