lint

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: May 29, 2018 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// AllCheckers is the slice of all known Checkers.
	AllCheckers = []Checker{
		commentsNoCStyleChecker,
		enumFieldNamesUppercaseChecker,
		enumFieldNamesUpperSnakeCaseChecker,
		enumFieldPrefixesChecker,
		enumNamesCamelCaseChecker,
		enumNamesCapitalizedChecker,
		enumZeroValuesInvalidChecker,
		enumsHaveCommentsChecker,
		fileOptionsEqualGoPackagePbSuffixChecker,
		fileOptionsEqualJavaMultipleFilesTrueChecker,
		fileOptionsEqualJavaPackageComPbChecker,
		fileOptionsGoPackageSameInDirChecker,
		fileOptionsJavaPackageSameInDirChecker,
		fileOptionsRequireGoPackageChecker,
		fileOptionsRequireJavaMultipleFilesChecker,
		fileOptionsRequireJavaPackageChecker,
		messageFieldsNotFloatsChecker,
		messageFieldNamesLowerSnakeCaseChecker,
		messageFieldNamesLowercaseChecker,
		messageNamesCamelCaseChecker,
		messageNamesCapitalizedChecker,
		messagesHaveCommentsChecker,
		messagesHaveCommentsExceptRequestResponseTypesChecker,
		oneofNamesLowerSnakeCaseChecker,
		packageIsDeclaredChecker,
		packageLowerSnakeCaseChecker,
		packagesSameInDirChecker,
		rpcsHaveCommentsChecker,
		rpcNamesCamelCaseChecker,
		rpcNamesCapitalizedChecker,
		requestResponseTypesInSameFileChecker,
		requestResponseTypesUniqueChecker,
		requestResponseNamesMatchRPCChecker,
		servicesHaveCommentsChecker,
		serviceNamesCamelCaseChecker,
		serviceNamesCapitalizedChecker,
		syntaxProto3Checker,
		wktDirectlyImportedChecker,
	}

	// DefaultCheckers is the slice of default Checkers.
	DefaultCheckers = copyCheckersWithout(
		AllCheckers,
		enumFieldNamesUppercaseChecker,
		enumsHaveCommentsChecker,
		fileOptionsEqualJavaMultipleFilesTrueChecker,
		fileOptionsEqualJavaOuterClassnameProtoSuffixChecker,
		fileOptionsRequireJavaMultipleFilesChecker,
		fileOptionsRequireJavaOuterClassnameChecker,
		messageFieldsNotFloatsChecker,
		messagesHaveCommentsChecker,
		messagesHaveCommentsExceptRequestResponseTypesChecker,
		messageFieldNamesLowercaseChecker,
		requestResponseNamesMatchRPCChecker,
		rpcsHaveCommentsChecker,
		servicesHaveCommentsChecker,
	)

	// DefaultGroup is the default group.
	DefaultGroup = "default"

	// AllGroup is the group of all known linters.
	AllGroup = "all"

	// GroupToCheckers is the map from checker group to the corresponding slice of checkers.
	GroupToCheckers = map[string][]Checker{
		DefaultGroup: DefaultCheckers,
		AllGroup:     AllCheckers,
	}
)

Functions

func CheckMultiple

func CheckMultiple(checkers []Checker, dirPathToDescriptors map[string][]*proto.Proto, ignoreIDToFilePaths map[string][]string) ([]*text.Failure, error)

CheckMultiple is a convenience function that checks multiple checkers and multiple descriptors.

func GetDirPathToDescriptors

func GetDirPathToDescriptors(protoSet *file.ProtoSet) (map[string][]*proto.Proto, error)

GetDirPathToDescriptors is a convenience function that gets the descriptors for the given ProtoSet.

Types

type Checker

type Checker interface {
	// Return the ID of this Checker. This should be all UPPER_SNAKE_CASE.
	ID() string
	// Return the purpose of this Checker. This should be a human-readable string.
	Purpose() string
	// Check the file data for the descriptors in a common directgory.
	// If there is a lint failure, this returns it in the
	// slice and does not return an error. An error is returned if something
	// unexpected happens. Callers should verify the files are compilable
	// before running this.
	Check(dirPath string, descriptors []*proto.Proto) ([]*text.Failure, error)
}

Checker is a linter for Protobuf files.

func GetCheckers

func GetCheckers(config settings.LintConfig) ([]Checker, error)

GetCheckers returns the Checkers for the LintConfig.

The config is expected to be valid, ie slices deduped, all upper-case, and only either IDs or Group/IncludeIDs/ExcludeIDs, with no overlap between IncludeIDs and ExcludeIDs.

If the config came from the settings package, this is already validated.

func NewAddChecker

func NewAddChecker(id string, purpose string, addCheck func(func(*text.Failure), string, []*proto.Proto) error) Checker

NewAddChecker is a convenience function that returns a new Checker for the given parameters, using a function to record failures.

The ID will be upper-cased.

Failures returned from check do not need to set the ID, this will be overwritten.

func NewChecker

func NewChecker(id string, purpose string, check func(string, []*proto.Proto) ([]*text.Failure, error)) Checker

NewChecker is a convenience function that returns a new Checker for the given parameters.

The ID will be upper-cased.

Failures returned from check do not need to set the ID, this will be overwritten.

type Runner

type Runner interface {
	Run(...*file.ProtoSet) ([]*text.Failure, error)
}

Runner runs a lint job.

func NewRunner

func NewRunner(options ...RunnerOption) Runner

NewRunner returns a new Runner.

type RunnerOption

type RunnerOption func(*runner)

RunnerOption is an option for a new Runner.

func RunnerWithLogger

func RunnerWithLogger(logger *zap.Logger) RunnerOption

RunnerWithLogger returns a RunnerOption that uses the given logger.

The default is to use zap.NewNop().

Jump to

Keyboard shortcuts

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