Skip to content

Commit

Permalink
[skip-changelog] Added more lint checks and fixed some warnings. (#2610)
Browse files Browse the repository at this point in the history
* Enabled more checks in golangci-lint

* Removed unreachable code (impossible condition detected by linter)

internal/arduino/sketch/sketch.go:108:14: nilness: impossible condition: non-nil == nil (govet)
        if mainFile == nil {
                    ^

* Removed function alias for i18n.Tr

This allows a deeper lint-check of printf style functions, like:

  commands/instances.go:344:46: printf: github.com/arduino/arduino-cli/internal/i18n.Tr format %v reads arg #1, but call has 0 args (govet)
		s := status.Newf(codes.FailedPrecondition, i18n.Tr("Loading index file: %v"), err)

* Fixed a lot of i18n.Tr formatting errors

This commit fixes invalid calls to i18n.Tr.

1. Missing positional arguments, for example:

  return fmt.Errorf(i18n.Tr("installing %[1]s tool: %[2]s"), tool, err)

in the above case the positional arguments must be part of the Tr call:

-    return fmt.Errorf(i18n.Tr("installing %[1]s tool: %[2]s"), tool, err)
+    return fmt.Errorf(i18n.Tr("installing %[1]s tool: %[2]s", tool, err))

2. This also makes the fmt.Errorf call useless and it could be replaced by
the less expensive errors.New:

-    return fmt.Errorf(i18n.Tr("installing %[1]s tool: %[2]s", tool, err))
+    return errors.New(i18n.Tr("installing %[1]s tool: %[2]s", tool, err))

but we have cases of useless calls even when the string is a constant,
for example:

-    err := fmt.Errorf(i18n.Tr("no instance specified"))
+    err := errors.New(i18n.Tr("no instance specified"))

Unfortunately, this imperfection is not detected by the linter.

3. The "%w" directive is not supported directly in i18n.Tr, so we have
   to wrap it around another fmt.Errorf:

-    return nil, fmt.Errorf(i18n.Tr("reading library headers: %w"), err)
+    return nil, fmt.Errorf("%s: %w", i18n.Tr("reading library headers"), err)

* Removed useless call to i18n.Tr
  • Loading branch information
cmaglie committed May 22, 2024
1 parent 914e11b commit dc13ef6
Show file tree
Hide file tree
Showing 141 changed files with 1,168 additions and 1,104 deletions.
45 changes: 45 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,51 @@ linters:
#- protogetter

linters-settings:
govet:
# Enable analyzers by name.
# Run `GL_DEBUG=govet golangci-lint run --enable=govet` to see default, all available analyzers, and enabled analyzers.
enable:
- appends
- asmdecl
- assign
- atomic
- atomicalign
- bools
- buildtag
- cgocall
- composites
- copylocks
- deepequalerrors
- defers
- directive
- errorsas
#- fieldalignment
- findcall
- framepointer
- httpresponse
- ifaceassert
- loopclosure
- lostcancel
- nilfunc
- nilness
- printf
- reflectvaluecompare
#- shadow
- shift
- sigchanyzer
- slog
- sortslice
- stdmethods
- stringintconv
- structtag
- testinggoroutine
- tests
- unmarshal
- unreachable
- unsafeptr
- unusedresult
- unusedwrite

forbidigo:
forbid:
- p: ^(fmt\.Print(|f|ln)|print|println)$
Expand Down
Loading

0 comments on commit dc13ef6

Please sign in to comment.