[Go] lint: golangci-lint
golangci-lint๋ ์๋ง go ํ๊ฒฝ์์ ๊ทธ๋๋ง ์ธ๋งํ ์์ค์ lint์ธ ๊ฒ ๊ฐ๋ค.
golint๋ผ๊ณ go ๊ทธ๋ฃน์์ ๊ด๋ฆฌํ๊ฒ ์์๋๋ฐ, ์ ๊ธฐ๋นํ๋๋ผ
์ค์น
๋จผ์ cli๋ฅผ ์ค์นํด์ผ ํ๋ค.
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.2

์ด๋ ๊ฒ ์คํ์ด ๋๋ฉด ์ ๊น๋ฆฐ ๊ฒ์ด๋ค.

๋ฆฐํฐ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
linters ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฐํฐ ์์ฑ์ ์กฐํํ ์ ์๋๋ฐ

์๋ ๋งํฌ์ ๋ค์ด๊ฐ๋ฉด ๋ ์์ธํ ์ต์
๊ณผ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ค.
https://golangci-lint.run/usage/linters/
์๋ฌดํผ, run์ ์ฌ์ฉํ๋ฉด ๋ฐ๋ก ๋ฆฐํฐ๋ฅผ ๋๋ ค๋ณผ ์ ์๋ค.
์๊ธฐ๋ค๋ง์ ๊ธฐ์ค์ผ๋ก ์ค๋ฅ๋ ์๋์ง๋ง ๋ญ๊ฐ ์ด์ํ ์ฝ๋๋ฅผ ์ฐพ์์ค๋ค.

๋ฆฐํฐ ์ปค์คํ ํ๊ธฐ
์ด๋ฐ๊ฑธ ์ฐ๋ฉด ๋ณดํต ๊ธฐ๋ณธ๊ฐ์ ์ฐ์ง๋ ์๊ณ , ๋ฆฐํธ ์ต์
๋ค์ ์ค์ ํด์ ์ฐ๋๊ฒ ๋ณดํต์ด๋ค.
ํ๋ก์ ํธ ๋ฃจํธ ๊ฒฝ๋ก์ .golangci.yml ๋ผ๋ ํ์ผ์ ๋ง๋ค์ด์ ์ต์
์ ์ ๋นํ ์ ์ํด์ค๋ค.
์๋ ์ค์ ์ ๋ค๋ฅธ๊ฑธ ๋ค ๋๊ณ ์ง๋์น๊ฒ ๊ธด ์ฝ๋๋ฅผ ๊ฒฝ๊ณ ํ๋ lll ์ต์ ์ ์ผ ๋ค.
linters:
disable-all: true
enable:
- lll
linters-settings:
lll:
line-length: 120
tab-width: 1
์ ๊ฑธ ํด๋์ํ์์ ๋๋ฆฌ๋ฉด
ํ์ค์ 120์๊ฐ ๋๋ ๊ธฐ๋ค๋ ์ฝ๋๋ฅผ ๋ค ์ฐพ์์ค ๊ฒ์ด๋ค.
๋์ถฉ ์ด๋ฐ ๋๋์ผ๋ก ์ฐ๋ ๊ฒ์ด๋ค.
Visual Studio Code๊ณผ ํตํฉ
vscode์์๋ ๊ฐ๋จํ๊ฒ lint์ ๋ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
setting.json์ ์๋ ์ต์
์ ์ถ๊ฐํ๊ณ , ํ๋ก์ ํธ ๋ฃจํธ๊ฒฝ๋ก์ .golangci.yml๋ฅผ ์ ๋นํ ๊น์์ฃผ๋ฉด ๋๋ค.
"go.lintTool": "golangci-lint",
"go.lintFlags": [
"--fast"
]

๊ทธ๋ผ run ๋ช ๋ น์ ์ฌ์ฉํ ๊ฒ๋ ์์ด ํธ์ง๊ธฐ์์ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ๋ก ํ์ํด์ค๋ค.

Jetbrain Goland์ ํตํฉ
๋จผ์ Go Linter ํ๋ฌ๊ทธ์ธ์ ์ค์นํด์ค๋ค.

๊ทธ๋ฆฌ๊ณ Setting > Tools > File Watcher ๋ก ์ด๋ํด์

golangci-lint๋ฅผ ์ถ๊ฐํด์ ์ ์ฉํด์ค๋ค.


๊ทธ๋ผ ์ด๋ ๊ฒ ๋ด๊ฐ ๊ตฌ์ฑํ ๋ฆฐํธ๊ฐ ํ์ฑํ๋ ๊ฒ์ด๋ค.

๊ทผ๋ฐ Goland๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋ฆฌ๊ฐ ์ข ๋ง๋ค.
๊ธฐ๋ณธ ์์๋ฆฌ๋ฅผ ๋๊ณ ๋ด๊ฐ ์ปค์คํ
ํ lint๋ง ๋ณด๊ณ ์ถ๋ค๋ฉด,

์ฌ๊ธฐ ๋ค์ด๊ฐ์

golangci๋ง ๋นผ๊ณ ๋ค ๊บผ์ฃผ๋ฉด ๋๋ค.