[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๋งŒ ๋นผ๊ณ  ๋‹ค ๊บผ์ฃผ๋ฉด ๋œ๋‹ค.