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

gofumpt

neovim(nvim) gopls 설정을 업데이트한 후 .go 파일을 저장하면
var 로 선언된 변수가 := 로 간단하게 변경된다.

찾아보니 gopls 설정에 gofumpt(https://github.com/mvdan/gofumpt) 활성화되어 있었다.

gofumpt 는 gofmt, goimports 기능을 포함하면서 더 엄격한 포맷팅 규칙을 적용하는 확장된 포맷팅 방식이다.
그래서 gofumpt 포맷팅된 코드는 gofmt, goimports 검사를 통과한다고 한다.
요런 규칙들이 있다.
- 복합 리터럴에서 선행 또는 후행 빈 줄 제거
- 할당 연산자 다음의 불필요한 빈 줄 제거
- 인터페이스에서 불필요한 빈 줄 제거
- 가독성을 위해 함수에서 빈 줄 대신 ) { 라인 사용

# 바이너리 설치
go install mvdan.cc/gofumpt@latest

# 이전의 .go 파일들에 대해 포맷팅을 해봤는데 개인적으로 깔끔해져서 가독성에 더 좋은것 같다.
gofumpt -w -l $(fd --type file .go)

# 참고, gopls 체크사항 확인
gopls check $(fd --type file .go)

keep swag fmt

# .go 파일에서 swag comment 작성 후 swag fmt 하면 다음과 같이 주석을 보기 좋게 간격을 띄워 준다.

# 그런데 vim, vscode 등에서 저장하면 gofmt 이 동작하며 다음과 같이 주석 앞쪽을 공백으로 바꾸면서 간격이 흐트러진다.
# 이상태에선 swag fmt 해도 포맷팅이 되지 않는다.
# 이상태에서 탭 부분을 수정 후 swag fmt 하면 포맷팅돼 위 화면처럼 된다.

# vim 등에서 저장(gofmt 으로 주석이 포맷팅)시 swag fmt 부분을 유지하려면
# 다음과 같이 맨위 주석과 공백 주석을 추가하면 gofmt 해도 이 swag 주석 부분이 변경되지 않는다.

#####

# default, enum 등의 속성 사용 예시
// @Param   enumstring  query     string     false  "string enums"       Enums(A, B, C)
// @Param   enumint     query     int        false  "int enums"          Enums(1, 2, 3)
// @Param   enumnumber  query     number     false  "int enums"          Enums(1.1, 1.2, 1.3)
// @Param   string      query     string     false  "string valid"       minlength(5)  maxlength(10)
// @Param   int         query     int        false  "int valid"          minimum(1)    maximum(10)
// @Param   default     query     string     false  "string default"     default(A)
// @Param   example     query     string     false  "string example"     example(string)
// @Param   collection  query     []string   false  "string collection"  collectionFormat(multi)
// @Param   extensions  query     []string   false  "string collection"  extensions(x-example=test,x-nullable)