Um linhador GO que aplica tags de campo nas estruturas (não) marechadas.
Os verificações musttag que os campos exportados de uma estrutura passada para uma função semelhante a um Marshal são anotados com a tag relevante:
// BAD:
var user struct {
Name string
}
data , err := json . Marshal ( user )
// GOOD:
var user struct {
Name string `json:"name"`
}
data , err := json . Marshal ( user )O Guia Racional do Estilo Uber:
A forma serializada da estrutura é um contrato entre diferentes sistemas. Alterações na estrutura da forma serializada, incluindo nomes de campo, quebrar este contrato. A especificação de nomes de campos interna tags explícita o contrato e protege contra a quebra acidentalmente do contrato, refatorando ou renomeando os campos.
Os pacotes a seguir são suportados para fora da caixa:
Além disso, qualquer pacote personalizado pode ser adicionado à lista.
musttag é integrado ao golangci-lint , e esta é a maneira recomendada de usá-lo.
Para ativar o linhador, adicione as seguintes linhas a .golangci.yml :
linters :
enable :
- musttag Como alternativa, você pode fazer o download de um binário pré -construído na página de lançamentos para usar musttag Standalone.
Execute golangci-lint com musttag ativado. Consulte a lista de opções disponíveis para configurar o Linter.
Ao usar musttag Standalone, passe as opções como sinalizadores.
Para relatar uma função personalizada, você precisa adicionar sua descrição ao .golangci.yml . A seguir, é apresentado um exemplo de adição de suporte ao 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 O mesmo pode ser feito através da bandeira -fn=<name:tag:arg-pos> sinalizador ao usar musttag Standalone:
musttag -fn= " github.com/hashicorp/hcl/v2/hclsimple.DecodeFile:hcl:2 " ./...