Context: Ubuntu 18.04, GoLand 2020.1.4,
go version go1.14.6 linux/amd64
I decided to enable
golint for GoLand. It was a little difficult.
- There is no pre-configured file watcher for
golint(though it is possible to configure it manually).
- The pre-configured
golangci-linttool did not “just work” for me. When I enabled it GoLand downloaded
golangci-lintautomatically (which took a while) but then gave me runtime errors.
- When I finally got
golangci-lintto work it didn’t actually run
golint(disabled by default).
- Having the tool run on auto-save is annoying.
- Having the tool only show errors filters a lot of stuff.
golangci-lint tool site it recommends downloading the binary instead of using
go get. When I did that it started to work. My guess is that GoLand downloads using
go get -u.
Then I found out that
golint is not enabled by default in
golangci-lint. I enabled it but still didn’t get some of the messages I expected.
Turns out there’s a “magic” flag in
golangci-lint that enables all of
golint's messaging. Seems like there’s a filter that excludes some messages and a flag to turn off that filter.
My file watcher setting arguments for
golangci-lint are now:
run --disable=typecheck --enable=golint --exclude-use-default=false $FileDir$
--disable=typecheckis configured by default by GoLand (IIRC, I deleted and re-created it some minutes apart and I think I got it right
--exclude-use-default=falseturns off the filter that blocks messaging I was expecting
I also turned off Auto-save edited files to trigger the watcher and set Show console to
Always. These are personal preferences, YMMV.
So my file watcher for
golangci-lint now looks like this:
Hopefully this will save others a little time.
As a side note, I did this after an abortive attempt to use vscode for Go. It has
golint built in and I saw a bunch of irritating messages pointing out things I was too lazy to do. The notes above were my attempt to get the same lint behavior from GoLand after I came back to the fold.
I’ve been using Goland for several years (got that full continuity discount, thanks!) but people kept talking about how great vscode is (and how it’s, y’know, free). So I tried it. It’s OK but in the end it didn’t seem to do all of the things Goland did (e.g. refactoring package directory didn’t work so well for me) so I’m back with the IDE that really seems to understand the language.
If you Google “vscode vs GoLand” it seems like I’m in good company. As with so many things, you get what you pay for!