(un) 마샬링 스트러크에서 필드 태그를 시행하는 Go Linter.
구조물의 내보내기 필드가 Marshal 같은 함수로 전달 된 musttag 점검은 관련 태그로 주석이 달린다.
// BAD:
var user struct {
Name string
}
data , err := json . Marshal ( user )
// GOOD:
var user struct {
Name string `json:"name"`
}
data , err := json . Marshal ( user )Uber 스타일 가이드의 합리 :
구조의 직렬화 된 형태는 다른 시스템 간의 계약입니다. 필드 이름을 포함하여 직렬화 된 양식의 구조를 변경하면이 계약이 중단됩니다. 태그 내부의 필드 이름을 지정하면 계약을 명시 적으로 설명하며, 리팩토링 또는 필드 이름을 바꾸어 계약을 실수로 중단하지 않도록 보호합니다.
다음 패키지는 상자 밖으로 지원됩니다.
또한 모든 사용자 정의 패키지를 목록에 추가 할 수 있습니다.
musttag golangci-lint 에 통합되어 있으며이를 사용하는 권장 방법입니다.
Linter를 활성화하려면 다음 줄을 .golangci.yml 에 추가하십시오.
linters :
enable :
- musttag 또는 릴리스 페이지에서 사전 제작 된 바이너리를 다운로드하여 musttag 독립형을 사용할 수 있습니다.
musttag 활성화 된 golangci-lint 실행하십시오. Linter를 구성하는 데 사용 가능한 옵션 목록을 참조하십시오.
musttag StandalOne을 사용할 때는 옵션을 플래그로 전달하십시오.
사용자 정의 기능을보고하려면 .golangci.yml 에 설명을 추가해야합니다. 다음은 hclsimple.Decode 에 대한 지원을 추가하는 예입니다.
linters-settings :
musttag :
functions :
# The full name of the function, including the package.
- name : github.com/hashicorp/hcl/v2/hclsimple.Decode
# The struct tag whose presence should be ensured.
tag : hcl
# The position of the argument to check.
arg-pos : 2 musttag standalone을 사용할 때 -fn=<name:tag:arg-pos> 플래그를 통해서도 마찬가지입니다.
musttag -fn= " github.com/hashicorp/hcl/v2/hclsimple.DecodeFile:hcl:2 " ./...