GO GO LINTER الذي يفرض علامات الحقل في الهياكل (UN).
يتحقق musttag من أن الحقول التي تم تصديرها من البنية التي تم تمريرها إلى وظيفة مثل Marshal تشرح مع العلامة ذات الصلة:
// BAD:
var user struct {
Name string
}
data , err := json . Marshal ( user )
// GOOD:
var user struct {
Name string `json:"name"`
}
data , err := json . Marshal ( user )دليل النمط العقلاني من أوبر:
الشكل التسلسلي للهيكل هو عقد بين الأنظمة المختلفة. التغييرات في بنية النموذج التسلسلي ، بما في ذلك أسماء الحقول ، كسر هذا العقد. إن تحديد أسماء الحقول داخل العلامات يجعل العقد واضحًا ، ويحرسه من خلال كسر العقد عن طريق الخطأ عن طريق إعادة إنشاء حقول إعادة تسمية أو إعادة تسمية.
يتم دعم الحزم التالية خارج الصندوق:
بالإضافة إلى ذلك ، يمكن إضافة أي حزمة مخصصة إلى القائمة.
تم دمج musttag في golangci-lint ، وهذه هي الطريقة الموصى بها لاستخدامها.
لتمكين linter ، أضف الأسطر التالية إلى .golangci.yml :
linters :
enable :
- musttag بدلاً من ذلك ، يمكنك تنزيل ثنائي مصنوع من صفحة الإصدارات لاستخدام musttag المستقلة.
قم بتشغيل golangci-lint مع تمكين musttag . راجع قائمة الخيارات المتاحة لتكوين Linter.
عند استخدام musttag المستقلة ، مرر الخيارات كعلامات.
للإبلاغ عن وظيفة مخصصة ، تحتاج إلى إضافة وصفها إلى .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> at string musttag standalone:
musttag -fn= " github.com/hashicorp/hcl/v2/hclsimple.DecodeFile:hcl:2 " ./...