Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use already enabled revive linter and add depguard #2883

Merged
merged 59 commits into from
May 19, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
6a04aaf
Refactor golangci-lint conf
MrAlias Apr 29, 2022
83f09f4
Add revive settings to golangci conf
MrAlias Apr 29, 2022
01d22cc
Check blank imports
MrAlias Apr 29, 2022
d61b103
Check bool-literal-in-expr
MrAlias Apr 29, 2022
255f6fc
Check constant-logical-expr
MrAlias Apr 29, 2022
5318a99
Check context-as-argument
MrAlias Apr 29, 2022
b90ebc4
Check context-key-type
MrAlias Apr 29, 2022
f1bf0ec
Check deep-exit
MrAlias Apr 29, 2022
8a4b1fa
Check defer
MrAlias Apr 29, 2022
02f8f36
Check dot-imports
MrAlias Apr 29, 2022
9636e9c
Check duplicated-imports
MrAlias Apr 29, 2022
2ea3c59
Check early-return
MrAlias Apr 29, 2022
e35ef55
Check empty-block
MrAlias Apr 29, 2022
3a1589e
Check empty-lines
MrAlias Apr 29, 2022
60a975e
Check error-naming
MrAlias Apr 29, 2022
cd45f9b
Check error-return
MrAlias Apr 29, 2022
b7480d5
Check error-strings
MrAlias Apr 29, 2022
deaac0d
Check errorf
MrAlias Apr 29, 2022
ff4a0b9
Stop ignoring context first arg in tests
MrAlias Apr 29, 2022
3d908e2
Check exported comments
MrAlias Apr 30, 2022
5be2add
Check flag-parameter
MrAlias Apr 30, 2022
ed11b7b
Check identical branches
MrAlias Apr 30, 2022
7c4c5f1
Check if-return
MrAlias Apr 30, 2022
7b85ba3
Check increment-decrement
MrAlias Apr 30, 2022
ac40dc9
Check indent-error-flow
MrAlias Apr 30, 2022
2f3bf71
Check deny list of go imports
MrAlias Apr 30, 2022
3c80ebf
Check import shadowing
MrAlias Apr 30, 2022
ffc147e
Check package comments
MrAlias May 1, 2022
1e16859
Check range
MrAlias May 1, 2022
fe43190
Check range val in closure
MrAlias May 1, 2022
b961a5f
Check range val address
MrAlias May 1, 2022
505d4ac
Check redefines builtin id
MrAlias May 1, 2022
fccf398
Check string-format
MrAlias May 1, 2022
1471f34
Check struct tag
MrAlias May 1, 2022
a1768f6
Check superfluous else
MrAlias May 1, 2022
310cd17
Check time equal
MrAlias May 1, 2022
4b2112a
Check var naming
MrAlias May 1, 2022
af27ee4
Check var declaration
MrAlias May 1, 2022
f9e5508
Check unconditional recursion
MrAlias May 1, 2022
b61fd42
Check unexported return
MrAlias May 1, 2022
4d1741a
Check unhandled errors
MrAlias May 1, 2022
8113404
Check unnecessary stmt
MrAlias May 1, 2022
e61abaa
Check unnecessary break
MrAlias May 1, 2022
1c8ab92
Check waitgroup by value
MrAlias May 1, 2022
b95975f
Merge branch 'main' into revive-conf
MrAlias May 1, 2022
9253464
Merge branch 'main' into revive-conf
MrAlias May 2, 2022
77746a8
Update bridge/opentracing/util.go
MrAlias May 2, 2022
75ed3c5
Update sdk/metric/aggregator/aggregatortest/test.go
MrAlias May 2, 2022
6f247e1
Update sdk/metric/aggregator/aggregatortest/test.go
MrAlias May 2, 2022
e58cfc2
Update sdk/metric/aggregator/aggregatortest/test.go
MrAlias May 2, 2022
a6c7393
Update sdk/metric/controller/basic/controller.go
MrAlias May 2, 2022
8f38630
Update sdk/metric/controller/time/time.go
MrAlias May 2, 2022
714131f
Update sdk/metric/sdk.go
MrAlias May 2, 2022
b4a5aa4
Merge branch 'main' into revive-conf
MrAlias May 10, 2022
d04ab87
Update otel-collector example
MrAlias May 10, 2022
e1542da
Update zipkin example
MrAlias May 10, 2022
72433f6
Exclude deep-exit check in example*_test.go files
MrAlias May 10, 2022
0a0d487
Update example_test export pipeline install funcs
MrAlias May 10, 2022
47dd7c8
Merge branch 'main' into revive-conf
MrAlias May 18, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
216 changes: 204 additions & 12 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@ linters:
# Specifically enable linters we want to use.
enable:
- deadcode
- depguard
- errcheck
- godot
- gofmt
- goimports
- gosimple
- govet
- godot
- ineffassign
- misspell
- revive
Expand All @@ -25,30 +26,221 @@ linters:
- unused
- varcheck


issues:
# Maximum issues count per one linter.
# Set to 0 to disable.
# Default: 50
# Setting to unlimited so the linter only is run once to debug all issues.
max-issues-per-linter: 0
# Maximum count of issues with the same text.
# Set to 0 to disable.
# Default: 3
# Setting to unlimited so the linter only is run once to debug all issues.
max-same-issues: 0
# Excluding configuration per-path, per-linter, per-text and per-source.
exclude-rules:
# helpers in tests often (rightfully) pass a *testing.T as their first argument
- path: _test\.go
text: "context.Context should be the first parameter of a function"
# TODO: Having appropriate comments for exported objects helps development,
# even for objects in internal packages. Appropriate comments for all
# exported objects should be added and this exclusion removed.
- path: '.*internal/.*'
text: "exported (method|function|type|const) (.+) should have comment or be unexported"
linters:
- revive
# Yes, they are, but it's okay in a test
# Yes, they are, but it's okay in a test.
- path: _test\.go
text: "exported func.*returns unexported type.*which can be annoying to use"
linters:
- revive
# Example test functions should be treated like main.
- path: example.*_test\.go
text: "calls to (.+) only in main[(][)] or init[(][)] functions"
linters:
- revive
include:
# revive exported should have comment or be unexported.
- EXC0012
# revive package comment should be of the form ...
- EXC0013

linters-settings:
misspell:
locale: US
ignore-words:
- cancelled
goimports:
local-prefixes: go.opentelemetry.io
depguard:
# Check the list against standard lib.
# Default: false
include-go-root: true
# A list of packages for the list type specified.
# Default: []
packages:
- "crypto/md5"
- "crypto/sha1"
- "crypto/**/pkix"
ignore-file-rules:
- "**/*_test.go"
additional-guards:
# Do not allow testing packages in non-test files.
- list-type: denylist
include-go-root: true
packages:
- testing
- github.com/stretchr/testify
ignore-file-rules:
- "**/*_test.go"
- "**/*test/*.go"
- "**/internal/matchers/*.go"
godot:
exclude:
# Exclude sentence fragments for lists.
- '^[ ]*[-•]'
# Exclude sentences prefixing a list.
- ':$'
goimports:
local-prefixes: go.opentelemetry.io
misspell:
locale: US
ignore-words:
- cancelled
revive:
# Sets the default failure confidence.
# This means that linting errors with less than 0.8 confidence will be ignored.
# Default: 0.8
confidence: 0.01
rules:
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#blank-imports
- name: blank-imports
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#bool-literal-in-expr
- name: bool-literal-in-expr
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#constant-logical-expr
- name: constant-logical-expr
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-as-argument
- name: context-as-argument
disabled: false
arguments:
allowTypesBefore: "*testing.T"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-keys-type
- name: context-keys-type
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#deep-exit
- name: deep-exit
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#defer
- name: defer
disabled: false
arguments:
- ["call-chain", "loop"]
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#dot-imports
- name: dot-imports
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#duplicated-imports
- name: duplicated-imports
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#early-return
- name: early-return
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-block
- name: empty-block
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-lines
- name: empty-lines
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-naming
- name: error-naming
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-return
- name: error-return
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-strings
- name: error-strings
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#errorf
- name: errorf
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#exported
- name: exported
disabled: false
arguments:
- "sayRepetitiveInsteadOfStutters"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#flag-parameter
- name: flag-parameter
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#identical-branches
- name: identical-branches
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#if-return
- name: if-return
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#increment-decrement
- name: increment-decrement
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#indent-error-flow
- name: indent-error-flow
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#import-shadowing
- name: import-shadowing
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#package-comments
- name: package-comments
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range
- name: range
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range-val-in-closure
- name: range-val-in-closure
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range-val-address
- name: range-val-address
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#redefines-builtin-id
- name: redefines-builtin-id
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#string-format
- name: string-format
disabled: false
arguments:
- - panic
- '/^[^\n]*$/'
- must not contain line breaks
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#struct-tag
- name: struct-tag
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#superfluous-else
- name: superfluous-else
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#time-equal
- name: time-equal
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#var-naming
- name: var-naming
disabled: false
arguments:
- ["ID"] # AllowList
- ["Otel", "Aws", "Gcp"] # DenyList
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#var-declaration
- name: var-declaration
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unconditional-recursion
- name: unconditional-recursion
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unexported-return
- name: unexported-return
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unhandled-error
- name: unhandled-error
disabled: false
arguments:
- "fmt.Fprint"
- "fmt.Fprintf"
- "fmt.Fprintln"
- "fmt.Print"
- "fmt.Printf"
- "fmt.Println"
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unnecessary-stmt
- name: unnecessary-stmt
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#useless-break
- name: useless-break
disabled: false
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#waitgroup-by-value
- name: waitgroup-by-value
disabled: false
4 changes: 2 additions & 2 deletions attribute/encoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,9 @@ func copyAndEscape(buf *bytes.Buffer, val string) {
for _, ch := range val {
switch ch {
case '=', ',', escapeChar:
buf.WriteRune(escapeChar)
_, _ = buf.WriteRune(escapeChar)
}
buf.WriteRune(ch)
_, _ = buf.WriteRune(ch)
}
}

Expand Down
1 change: 0 additions & 1 deletion attribute/iterator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ func TestEmptyIterator(t *testing.T) {
}

func TestMergedIterator(t *testing.T) {

type inputs struct {
name string
keys1 []string
Expand Down
10 changes: 5 additions & 5 deletions attribute/set.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ func EmptySet() *Set {
return emptySet
}

// reflect abbreviates reflect.ValueOf.
func (d Distinct) reflect() reflect.Value {
// reflectValue abbreviates reflect.ValueOf(d).
func (d Distinct) reflectValue() reflect.Value {
return reflect.ValueOf(d.iface)
}

Expand All @@ -86,15 +86,15 @@ func (l *Set) Len() int {
if l == nil || !l.equivalent.Valid() {
return 0
}
return l.equivalent.reflect().Len()
return l.equivalent.reflectValue().Len()
}

// Get returns the KeyValue at ordered position idx in this set.
func (l *Set) Get(idx int) (KeyValue, bool) {
if l == nil {
return KeyValue{}, false
}
value := l.equivalent.reflect()
value := l.equivalent.reflectValue()

if idx >= 0 && idx < value.Len() {
// Note: The Go compiler successfully avoids an allocation for
Expand All @@ -110,7 +110,7 @@ func (l *Set) Value(k Key) (Value, bool) {
if l == nil {
return Value{}, false
}
rValue := l.equivalent.reflect()
rValue := l.equivalent.reflectValue()
vlen := rValue.Len()

idx := sort.Search(vlen, func(idx int) bool {
Expand Down
2 changes: 1 addition & 1 deletion attribute/value.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
//go:generate stringer -type=Type

// Type describes the type of the data Value holds.
type Type int
type Type int // nolint: revive // redefines builtin Type.

// Value represents the value part in key-value pairs.
type Value struct {
Expand Down
6 changes: 6 additions & 0 deletions baggage/baggage.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ type Property struct {
hasData bool
}

// NewKeyProperty returns a new Property for key.
//
// If key is invalid, an error will be returned.
func NewKeyProperty(key string) (Property, error) {
if !keyRe.MatchString(key) {
return newInvalidProperty(), fmt.Errorf("%w: %q", errInvalidKey, key)
Expand All @@ -77,6 +80,9 @@ func NewKeyProperty(key string) (Property, error) {
return p, nil
}

// NewKeyValueProperty returns a new Property for key with value.
//
// If key or value are invalid, an error will be returned.
func NewKeyValueProperty(key, value string) (Property, error) {
if !keyRe.MatchString(key) {
return newInvalidProperty(), fmt.Errorf("%w: %q", errInvalidKey, key)
Expand Down
10 changes: 5 additions & 5 deletions baggage/baggage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,7 @@ func TestBaggageMembers(t *testing.T) {
},
}

baggage := Baggage{list: baggage.List{
bag := Baggage{list: baggage.List{
"foo": {
Value: "1",
Properties: []baggage.Property{
Expand All @@ -626,13 +626,13 @@ func TestBaggageMembers(t *testing.T) {
},
}}

assert.ElementsMatch(t, members, baggage.Members())
assert.ElementsMatch(t, members, bag.Members())
}

func TestBaggageMember(t *testing.T) {
baggage := Baggage{list: baggage.List{"foo": {Value: "1"}}}
assert.Equal(t, Member{key: "foo", value: "1"}, baggage.Member("foo"))
assert.Equal(t, Member{}, baggage.Member("bar"))
bag := Baggage{list: baggage.List{"foo": {Value: "1"}}}
assert.Equal(t, Member{key: "foo", value: "1"}, bag.Member("foo"))
assert.Equal(t, Member{}, bag.Member("bar"))
}

func TestMemberKey(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion bridge/opencensus/aggregation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ func TestHistogramAggregation(t *testing.T) {
if output.Kind() != aggregation.HistogramKind {
t.Errorf("recordAggregationsFromPoints(%v) = %v, want %v", input, output.Kind(), aggregation.HistogramKind)
}
if end != now {
if !end.Equal(now) {
t.Errorf("recordAggregationsFromPoints(%v).end() = %v, want %v", input, end, now)
}
distAgg, ok := output.(aggregation.Histogram)
Expand Down
2 changes: 1 addition & 1 deletion bridge/opencensus/exporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import (
"go.opentelemetry.io/otel/sdk/resource"
)

var errConversion = errors.New("Unable to convert from OpenCensus to OpenTelemetry")
var errConversion = errors.New("unable to convert from OpenCensus to OpenTelemetry")

// NewMetricExporter returns an OpenCensus exporter that exports to an
// OpenTelemetry exporter.
Expand Down
1 change: 0 additions & 1 deletion bridge/opencensus/test/bridge_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,6 @@ func TestToFromContext(t *testing.T) {
// Get the opentelemetry span using the OpenCensus FromContext, and end it
otSpan2 := octrace.FromContext(ctx)
defer otSpan2.End()

}()

spans := sr.Ended()
Expand Down
Loading