musttag
v0.13.0
(un)マーシャリングされた構造体でフィールドタグを実施するゴーリナー。
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に統合されており、これが推奨される方法です。
リナーを有効にするには、次の行を.golangci.ymlに追加します。
linters :
enable :
- musttagまたは、リリースページから事前に構築されたバイナリをダウンロードして、 musttagスタンドアロンを使用することもできます。
musttagを有効にしてgolangci-lintを実行します。リナーを構成するための利用可能なオプションのリストを参照してください。
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同じことが-fn=<name:tag:arg-pos> flagを使用してmusttag Standaloneを使用する場合に行うことができます。
musttag -fn= " github.com/hashicorp/hcl/v2/hclsimple.DecodeFile:hcl:2 " ./...