diff --git a/.golangci.yml b/.golangci.yml index a187ba4a7f59..b2df42e5d8c1 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -157,11 +157,11 @@ linters-settings: ignore-words: - cancelled perfsprint: - err-error: false - errorf: false + err-error: true + errorf: true int-conversion: true - sprintf1: false - strconcat: false + sprintf1: true + strconcat: true revive: # Sets the default failure confidence. # This means that linting errors with less than 0.8 confidence will be ignored. diff --git a/bridge/opencensus/internal/span.go b/bridge/opencensus/internal/span.go index e3311ee98f32..3ddef4d037e1 100644 --- a/bridge/opencensus/internal/span.go +++ b/bridge/opencensus/internal/span.go @@ -128,5 +128,5 @@ func (s *Span) AddLink(l octrace.Link) { // String prints a string representation of this span. func (s *Span) String() string { - return fmt.Sprintf("span %s", s.otelSpan.SpanContext().SpanID().String()) + return "span " + s.otelSpan.SpanContext().SpanID().String() } diff --git a/codes/codes.go b/codes/codes.go index 2acbac354665..49a35b12255d 100644 --- a/codes/codes.go +++ b/codes/codes.go @@ -5,6 +5,7 @@ package codes // import "go.opentelemetry.io/otel/codes" import ( "encoding/json" + "errors" "fmt" "strconv" ) @@ -63,7 +64,7 @@ func (c *Code) UnmarshalJSON(b []byte) error { return nil } if c == nil { - return fmt.Errorf("nil receiver passed to UnmarshalJSON") + return errors.New("nil receiver passed to UnmarshalJSON") } var x interface{} diff --git a/exporters/otlp/otlpmetric/otlpmetricgrpc/exporter.go b/exporters/otlp/otlpmetric/otlpmetricgrpc/exporter.go index 98afc0b1e9d3..3977c1f8a6c2 100644 --- a/exporters/otlp/otlpmetric/otlpmetricgrpc/exporter.go +++ b/exporters/otlp/otlpmetric/otlpmetricgrpc/exporter.go @@ -5,6 +5,7 @@ package otlpmetricgrpc // import "go.opentelemetry.io/otel/exporters/otlp/otlpme import ( "context" + "errors" "fmt" "sync" @@ -114,7 +115,7 @@ func (e *Exporter) Shutdown(ctx context.Context) error { return err } -var errShutdown = fmt.Errorf("gRPC exporter is shutdown") +var errShutdown = errors.New("gRPC exporter is shutdown") type shutdownClient struct{} diff --git a/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/options.go b/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/options.go index c016b4dbe97c..2ac8db5a887e 100644 --- a/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/options.go +++ b/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/options.go @@ -111,7 +111,7 @@ func cleanPath(urlPath string, defaultPath string) string { return defaultPath } if !path.IsAbs(tmp) { - tmp = fmt.Sprintf("/%s", tmp) + tmp = "/" + tmp } return tmp } diff --git a/exporters/otlp/otlpmetric/otlpmetrichttp/client.go b/exporters/otlp/otlpmetric/otlpmetrichttp/client.go index f36388f45af7..7d1315dad86d 100644 --- a/exporters/otlp/otlpmetric/otlpmetrichttp/client.go +++ b/exporters/otlp/otlpmetric/otlpmetrichttp/client.go @@ -305,7 +305,7 @@ func newResponseError(header http.Header, wrapped error) error { func (e retryableError) Error() string { if e.err != nil { - return fmt.Sprintf("retry-able request failure: %s", e.err.Error()) + return "retry-able request failure: " + e.err.Error() } return "retry-able request failure" diff --git a/exporters/otlp/otlpmetric/otlpmetrichttp/exporter.go b/exporters/otlp/otlpmetric/otlpmetrichttp/exporter.go index 701deb6d3901..50ac8f86ea31 100644 --- a/exporters/otlp/otlpmetric/otlpmetrichttp/exporter.go +++ b/exporters/otlp/otlpmetric/otlpmetrichttp/exporter.go @@ -5,6 +5,7 @@ package otlpmetrichttp // import "go.opentelemetry.io/otel/exporters/otlp/otlpme import ( "context" + "errors" "fmt" "sync" @@ -114,7 +115,7 @@ func (e *Exporter) Shutdown(ctx context.Context) error { return err } -var errShutdown = fmt.Errorf("HTTP exporter is shutdown") +var errShutdown = errors.New("HTTP exporter is shutdown") type shutdownClient struct{} diff --git a/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/options.go b/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/options.go index 33363193de59..db595e49ec27 100644 --- a/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/options.go +++ b/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/options.go @@ -111,7 +111,7 @@ func cleanPath(urlPath string, defaultPath string) string { return defaultPath } if !path.IsAbs(tmp) { - tmp = fmt.Sprintf("/%s", tmp) + tmp = "/" + tmp } return tmp } diff --git a/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/options.go b/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/options.go index 3ee452ef72b2..0a317d92637d 100644 --- a/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/options.go +++ b/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/options.go @@ -98,7 +98,7 @@ func cleanPath(urlPath string, defaultPath string) string { return defaultPath } if !path.IsAbs(tmp) { - tmp = fmt.Sprintf("/%s", tmp) + tmp = "/" + tmp } return tmp } diff --git a/exporters/otlp/otlptrace/otlptracehttp/client.go b/exporters/otlp/otlptrace/otlptracehttp/client.go index 38fabf1b6600..00adf00847b5 100644 --- a/exporters/otlp/otlptrace/otlptracehttp/client.go +++ b/exporters/otlp/otlptrace/otlptracehttp/client.go @@ -327,7 +327,7 @@ func newResponseError(header http.Header, wrapped error) error { func (e retryableError) Error() string { if e.err != nil { - return fmt.Sprintf("retry-able request failure: %s", e.err.Error()) + return "retry-able request failure: " + e.err.Error() } return "retry-able request failure" diff --git a/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.go b/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.go index 131906b1ff34..6a9c4d3a6521 100644 --- a/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.go +++ b/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.go @@ -98,7 +98,7 @@ func cleanPath(urlPath string, defaultPath string) string { return defaultPath } if !path.IsAbs(tmp) { - tmp = fmt.Sprintf("/%s", tmp) + tmp = "/" + tmp } return tmp } diff --git a/sdk/metric/exporter.go b/sdk/metric/exporter.go index 1a3cccb67755..6ae0d0689434 100644 --- a/sdk/metric/exporter.go +++ b/sdk/metric/exporter.go @@ -5,14 +5,15 @@ package metric // import "go.opentelemetry.io/otel/sdk/metric" import ( "context" - "fmt" + + "errors" "go.opentelemetry.io/otel/sdk/metric/metricdata" ) // ErrExporterShutdown is returned if Export or Shutdown are called after an // Exporter has been Shutdown. -var ErrExporterShutdown = fmt.Errorf("exporter is shutdown") +var ErrExporterShutdown = errors.New("exporter is shutdown") // Exporter handles the delivery of metric data to external receivers. This is // the final component in the metric push pipeline. diff --git a/sdk/metric/meter.go b/sdk/metric/meter.go index 823cdf2c62f3..a6ccd117b80d 100644 --- a/sdk/metric/meter.go +++ b/sdk/metric/meter.go @@ -475,7 +475,7 @@ func (m *meter) RegisterCallback(f metric.Callback, insts ...metric.Observable) validInstruments = append(validInstruments, inst) default: // Instrument external to the SDK. - return nil, fmt.Errorf("invalid observable: from different implementation") + return nil, errors.New("invalid observable: from different implementation") } } diff --git a/sdk/metric/metricdata/metricdatatest/comparisons.go b/sdk/metric/metricdata/metricdatatest/comparisons.go index 75daa8171de1..68f9649f6b1e 100644 --- a/sdk/metric/metricdata/metricdatatest/comparisons.go +++ b/sdk/metric/metricdata/metricdatatest/comparisons.go @@ -32,7 +32,7 @@ func equalResourceMetrics(a, b metricdata.ResourceMetrics, cfg config) (reasons }, )) if r != "" { - reasons = append(reasons, fmt.Sprintf("ResourceMetrics ScopeMetrics not equal:\n%s", r)) + reasons = append(reasons, "ResourceMetrics ScopeMetrics not equal:\n"+r) } return reasons } @@ -56,7 +56,7 @@ func equalScopeMetrics(a, b metricdata.ScopeMetrics, cfg config) (reasons []stri }, )) if r != "" { - reasons = append(reasons, fmt.Sprintf("ScopeMetrics Metrics not equal:\n%s", r)) + reasons = append(reasons, "ScopeMetrics Metrics not equal:\n"+r) } return reasons } @@ -172,7 +172,7 @@ func equalGauges[N int64 | float64](a, b metricdata.Gauge[N], cfg config) (reaso }, )) if r != "" { - reasons = append(reasons, fmt.Sprintf("Gauge DataPoints not equal:\n%s", r)) + reasons = append(reasons, "Gauge DataPoints not equal:\n"+r) } return reasons } @@ -199,7 +199,7 @@ func equalSums[N int64 | float64](a, b metricdata.Sum[N], cfg config) (reasons [ }, )) if r != "" { - reasons = append(reasons, fmt.Sprintf("Sum DataPoints not equal:\n%s", r)) + reasons = append(reasons, "Sum DataPoints not equal:\n"+r) } return reasons } @@ -223,7 +223,7 @@ func equalHistograms[N int64 | float64](a, b metricdata.Histogram[N], cfg config }, )) if r != "" { - reasons = append(reasons, fmt.Sprintf("Histogram DataPoints not equal:\n%s", r)) + reasons = append(reasons, "Histogram DataPoints not equal:\n"+r) } return reasons } @@ -264,7 +264,7 @@ func equalDataPoints[N int64 | float64](a, b metricdata.DataPoint[N], cfg config }, )) if r != "" { - reasons = append(reasons, fmt.Sprintf("Exemplars not equal:\n%s", r)) + reasons = append(reasons, "Exemplars not equal:\n"+r) } } return reasons @@ -318,7 +318,7 @@ func equalHistogramDataPoints[N int64 | float64](a, b metricdata.HistogramDataPo }, )) if r != "" { - reasons = append(reasons, fmt.Sprintf("Exemplars not equal:\n%s", r)) + reasons = append(reasons, "Exemplars not equal:\n"+r) } } return reasons @@ -343,7 +343,7 @@ func equalExponentialHistograms[N int64 | float64](a, b metricdata.ExponentialHi }, )) if r != "" { - reasons = append(reasons, fmt.Sprintf("Histogram DataPoints not equal:\n%s", r)) + reasons = append(reasons, "Histogram DataPoints not equal:\n"+r) } return reasons } @@ -406,7 +406,7 @@ func equalExponentialHistogramDataPoints[N int64 | float64](a, b metricdata.Expo }, )) if r != "" { - reasons = append(reasons, fmt.Sprintf("Exemplars not equal:\n%s", r)) + reasons = append(reasons, "Exemplars not equal:\n"+r) } } return reasons @@ -432,7 +432,7 @@ func equalSummary(a, b metricdata.Summary, cfg config) (reasons []string) { }, )) if r != "" { - reasons = append(reasons, fmt.Sprintf("Summary DataPoints not equal:\n%s", r)) + reasons = append(reasons, "Summary DataPoints not equal:\n"+r) } return reasons } @@ -634,7 +634,7 @@ func compareDiff[T any](extraExpected, extraActual []T) string { } func missingAttrStr(name string) string { - return fmt.Sprintf("missing attribute %s", name) + return "missing attribute " + name } func hasAttributesExemplars[T int64 | float64](exemplar metricdata.Exemplar[T], attrs ...attribute.KeyValue) (reasons []string) { diff --git a/sdk/metric/reader.go b/sdk/metric/reader.go index d94bdee75b73..81359f88cac2 100644 --- a/sdk/metric/reader.go +++ b/sdk/metric/reader.go @@ -5,26 +5,27 @@ package metric // import "go.opentelemetry.io/otel/sdk/metric" import ( "context" - "fmt" + + "errors" "go.opentelemetry.io/otel/sdk/metric/metricdata" ) // errDuplicateRegister is logged by a Reader when an attempt to registered it // more than once occurs. -var errDuplicateRegister = fmt.Errorf("duplicate reader registration") +var errDuplicateRegister = errors.New("duplicate reader registration") // ErrReaderNotRegistered is returned if Collect or Shutdown are called before // the reader is registered with a MeterProvider. -var ErrReaderNotRegistered = fmt.Errorf("reader is not registered") +var ErrReaderNotRegistered = errors.New("reader is not registered") // ErrReaderShutdown is returned if Collect or Shutdown are called after a // reader has been Shutdown once. -var ErrReaderShutdown = fmt.Errorf("reader is shutdown") +var ErrReaderShutdown = errors.New("reader is shutdown") // errNonPositiveDuration is logged when an environmental variable // has non-positive value. -var errNonPositiveDuration = fmt.Errorf("non-positive duration") +var errNonPositiveDuration = errors.New("non-positive duration") // Reader is the interface used between the SDK and an // exporter. Control flow is bi-directional through the diff --git a/sdk/resource/auto_test.go b/sdk/resource/auto_test.go index d1962ed67b9a..9b100e1d650d 100644 --- a/sdk/resource/auto_test.go +++ b/sdk/resource/auto_test.go @@ -6,7 +6,7 @@ package resource_test import ( "context" "errors" - "fmt" + "testing" "github.com/stretchr/testify/assert" @@ -76,7 +76,7 @@ func TestDetect(t *testing.T) { } for _, c := range cases { - t.Run(fmt.Sprintf("case-%s", c.name), func(t *testing.T) { + t.Run("case-"+c.name, func(t *testing.T) { r, err := resource.Detect(context.Background(), c.detectors...) if c.wantErr != nil { assert.ErrorIs(t, err, c.wantErr) diff --git a/sdk/resource/builtin_test.go b/sdk/resource/builtin_test.go index ce3c072845fd..4010b05bdf79 100644 --- a/sdk/resource/builtin_test.go +++ b/sdk/resource/builtin_test.go @@ -5,7 +5,8 @@ package resource_test import ( "context" - "fmt" + + "errors" "testing" "github.com/stretchr/testify/require" @@ -15,7 +16,7 @@ import ( ) func TestBuiltinStringDetector(t *testing.T) { - E := fmt.Errorf("no K") + E := errors.New("no K") res, err := resource.StringDetector("", attribute.Key("K"), func() (string, error) { return "", E }).Detect(context.Background()) @@ -33,7 +34,7 @@ func TestStringDetectorErrors(t *testing.T) { { desc: "explicit error from func should be returned", s: resource.StringDetector("", attribute.Key("K"), func() (string, error) { - return "", fmt.Errorf("k-is-missing") + return "", errors.New("k-is-missing") }), errContains: "k-is-missing", }, diff --git a/sdk/resource/resource_test.go b/sdk/resource/resource_test.go index b2e6d2ccee9e..d56bd0acfa90 100644 --- a/sdk/resource/resource_test.go +++ b/sdk/resource/resource_test.go @@ -9,6 +9,7 @@ import ( "errors" "fmt" "os" + "strconv" "strings" "sync" "testing" @@ -56,7 +57,7 @@ func TestNewWithAttributes(t *testing.T) { }, } for _, c := range cases { - t.Run(fmt.Sprintf("case-%s", c.name), func(t *testing.T) { + t.Run("case-"+c.name, func(t *testing.T) { res := resource.NewSchemaless(c.in...) if diff := cmp.Diff( res.Attributes(), @@ -177,7 +178,7 @@ func TestMerge(t *testing.T) { }, } for _, c := range cases { - t.Run(fmt.Sprintf("case-%s", c.name), func(t *testing.T) { + t.Run("case-"+c.name, func(t *testing.T) { res, err := resource.Merge(c.a, c.b) if c.isErr { assert.Error(t, err) @@ -560,7 +561,7 @@ func TestWithProcessPID(t *testing.T) { require.NoError(t, err) require.EqualValues(t, map[string]string{ - "process.pid": fmt.Sprint(fakePID), + "process.pid": strconv.Itoa(fakePID), }, toMap(res)) } @@ -674,7 +675,7 @@ func TestWithProcess(t *testing.T) { require.NoError(t, err) jsonCommandArgs, _ := json.Marshal(fakeCommandArgs) require.EqualValues(t, map[string]string{ - "process.pid": fmt.Sprint(fakePID), + "process.pid": strconv.Itoa(fakePID), "process.executable.name": fakeExecutableName, "process.executable.path": fakeExecutablePath, "process.command_args": string(jsonCommandArgs), @@ -731,7 +732,7 @@ func TestWithContainerID(t *testing.T) { { name: "error", containerIDProvider: func() (string, error) { - return "", fmt.Errorf("unable to get container id") + return "", errors.New("unable to get container id") }, expectedResource: map[string]string{}, expectedErr: true, diff --git a/sdk/trace/sampler_env.go b/sdk/trace/sampler_env.go index d2d1f72466be..065bf5bdadb2 100644 --- a/sdk/trace/sampler_env.go +++ b/sdk/trace/sampler_env.go @@ -5,7 +5,7 @@ package trace // import "go.opentelemetry.io/otel/sdk/trace" import ( "errors" - "fmt" + "os" "strconv" "strings" @@ -26,7 +26,7 @@ const ( type errUnsupportedSampler string func (e errUnsupportedSampler) Error() string { - return fmt.Sprintf("unsupported sampler: %s", string(e)) + return "unsupported sampler: " + string(e) } var ( @@ -39,7 +39,7 @@ type samplerArgParseError struct { } func (e samplerArgParseError) Error() string { - return fmt.Sprintf("parsing sampler argument: %s", e.parseErr.Error()) + return "parsing sampler argument: " + e.parseErr.Error() } func (e samplerArgParseError) Unwrap() error {