e909289454
TLDR with many modules the versions included in each diverged quite a bit. Attempting to use Go Workspaces produces a bunch of errors. This commit: 1. Fixes envoy-library-references.sh to work again 2. Ensures we are pulling in go-control-plane@v0.11.0 everywhere (previously it was at that version in some modules and others were much older) 3. Remove one usage of golang/protobuf that caused us to have a direct dependency on it. 4. Remove deprecated usage of the Endpoint field in the grpc resolver.Target struct. The current version of grpc (v1.55.0) has removed that field and recommended replacement with URL.Opaque and calls to the Endpoint() func when needing to consume the previous field. 4. `go work init <all the paths to go.mod files>` && `go work sync`. This syncrhonized versions of dependencies from the main workspace/root module to all submodules 5. Updated .gitignore to ignore the go.work and go.work.sum files. This seems to be standard practice at the moment. 6. Update doc comments in protoc-gen-consul-rate-limit to be go fmt compatible 7. Upgraded makefile infra to perform linting, testing and go mod tidy on all modules in a flexible manner. 8. Updated linter rules to prevent usage of golang/protobuf 9. Updated a leader peering test to account for an extra colon in a grpc error message.
113 lines
3.6 KiB
YAML
113 lines
3.6 KiB
YAML
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: MPL-2.0
|
|
|
|
linters:
|
|
disable-all: true
|
|
enable:
|
|
- gofmt
|
|
- govet
|
|
- unconvert
|
|
- staticcheck
|
|
- ineffassign
|
|
- unparam
|
|
- forbidigo
|
|
- gomodguard
|
|
- depguard
|
|
|
|
issues:
|
|
# Disable the default exclude list so that all excludes are explicitly
|
|
# defined in this file.
|
|
exclude-use-default: false
|
|
|
|
exclude-rules:
|
|
# Temp Ignore SA9004: only the first constant in this group has an explicit type
|
|
# https://staticcheck.io/docs/checks#SA9004
|
|
- linters: [staticcheck]
|
|
text: "SA9004:"
|
|
|
|
- linters: [staticcheck]
|
|
text: 'SA1019: "io/ioutil" has been deprecated since Go 1.16'
|
|
|
|
# An argument that always receives the same value is often not a problem.
|
|
- linters: [unparam]
|
|
text: "always receives"
|
|
|
|
# Often functions will implement an interface that returns an error without
|
|
# needing to return an error. Sometimes the error return value is unnecessary
|
|
# but a linter can not tell the difference.
|
|
- linters: [unparam]
|
|
text: 'result \d+ \(error\) is always nil'
|
|
|
|
# Allow unused parameters to start with an underscore. Arguments with a name
|
|
# of '_' are already ignored.
|
|
# Ignoring longer names that start with underscore allow for better
|
|
# self-documentation than a single underscore by itself. Underscore arguments
|
|
# should generally only be used when a function is implementing an interface.
|
|
- linters: [unparam]
|
|
text: "`_[^`]*` is unused"
|
|
|
|
# Temp ignore some common unused parameters so that unparam can be added
|
|
# incrementally.
|
|
- linters: [unparam]
|
|
text: "`(t|resp|req|entMeta)` is unused"
|
|
|
|
# Temp ignore everything in _oss(_test).go and _ent(_test).go. Many of these
|
|
# could use underscore to ignore the unused arguments, but the "always returns"
|
|
# issue will likely remain in oss, and will need to be excluded.
|
|
- linters: [unparam]
|
|
path: "(_oss.go|_oss_test.go|_ent.go|_ent_test.go)"
|
|
|
|
linters-settings:
|
|
govet:
|
|
check-shadowing: true
|
|
enable-all: true
|
|
disable:
|
|
- fieldalignment
|
|
- nilness
|
|
- shadow
|
|
- unusedwrite
|
|
gofmt:
|
|
simplify: true
|
|
forbidigo:
|
|
# Forbid the following identifiers (list of regexp).
|
|
forbid:
|
|
- '\bioutil\b(# Use io and os packages instead of ioutil)?'
|
|
- '\brequire\.New\b(# Use package-level functions with explicit TestingT)?'
|
|
- '\bassert\.New\b(# Use package-level functions with explicit TestingT)?'
|
|
# Exclude godoc examples from forbidigo checks.
|
|
# Default: true
|
|
exclude_godoc_examples: false
|
|
gomodguard:
|
|
blocked:
|
|
# List of blocked modules.
|
|
modules:
|
|
# Blocked module.
|
|
- github.com/hashicorp/net-rpc-msgpackrpc:
|
|
recommendations:
|
|
- github.com/hashicorp/consul-net-rpc/net-rpc-msgpackrpc
|
|
- github.com/hashicorp/go-msgpack:
|
|
recommendations:
|
|
- github.com/hashicorp/consul-net-rpc/go-msgpack
|
|
- github.com/golang/protobuf:
|
|
recommendations:
|
|
- google.golang.org/protobuf
|
|
|
|
depguard:
|
|
list-type: denylist
|
|
include-go-root: true
|
|
# A list of packages for the list type specified.
|
|
# Default: []
|
|
packages:
|
|
- net/rpc
|
|
# A list of packages for the list type specified.
|
|
# Specify an error message to output when a denied package is used.
|
|
# Default: []
|
|
packages-with-error-message:
|
|
- net/rpc: "only use forked copy in github.com/hashicorp/consul-net-rpc/net/rpc"
|
|
- github.com/golang/protobuf: "only use google.golang.org/protobuf"
|
|
|
|
run:
|
|
timeout: 10m
|
|
concurrency: 4
|
|
skip-dirs-use-default: false
|