레이블이 nvim인 게시물을 표시합니다. 모든 게시물 표시
레이블이 nvim인 게시물을 표시합니다. 모든 게시물 표시

golang staticcheck

# nvim+golang 개발환경에서 다음 2개의 툴을 사용하고 있었는데,
# golangc-lint : lint
# gopls : hint, staticcheck, hints...
# diagnostics 로 나오는 staticcheck 를 모두 모아 보고 싶어 staticcheck 커맨드를 별도 설치해서 돌려봤다.
# 설치
go install honnef.co/go/tools/cmd/staticcheck@latest
staticcheck -checks inherit,-ST1005 ./...

# QF(QuickFix)xxx 결과는 보이지 않고, 실제 체크리스트에서 QF 는 없다.
staticcheck -list-checks

# 알고보니 QF 는 nvim,vscode 등의 IDE 환경에서 gopls 로 staticcheck 를 사용시에만 IDE 로 보인다고 한다.
# 참고로 nvim(lazyvim) 에 gopls 설정

# 테스트
# staticcheck 커맨드에선 QF 결과가 없다.
staticcheck ./...
ysoftman.go:7:5: don't use Yoda conditions (ST1017)

# nvim(lazyvim) 에서 <leader> -> x(diagnostics/quickfix) -> x(diagnostics) 보면 QF도 같이 보인다.

# 문제가 있는 라인으로 커서 이동후 <leader> -> c(code) -> a(code action) 으로 수정할 수 있다.
# yoda conditions 수정하기 (https://staticcheck.dev/docs/checks#ST1017)
# golang 에서는 if 내에서 = 로 할당이 안되기 때문에 c++ 처럼 값을 왼쪽에 명시해 할당 실수를 방지하는 스타일로 짜지 않아도 된다. golang 에서도 빌드는 문제 없지만 이런식은 자연스럽지 않다고 요렇게 st 로 정해두고 있다.
# 참고로 스타워즈 yoda 가 어순을 바꿔 말하는데서 유래됐다고 한다.

# 공통 변수에 대해 if / else if 문을 switch 로 수정하기  (https://staticcheck.dev/docs/checks#QF1003)
# switch 로 바꾸면 가독성이 더 좋아 보인다.