linter go ที่บังคับใช้แท็กฟิลด์ใน (un) structs marshaled
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 )เหตุผลจากคู่มือสไตล์ Uber:
รูปแบบที่เป็นอนุกรมของโครงสร้างเป็นสัญญาระหว่างระบบที่แตกต่างกัน การเปลี่ยนแปลงโครงสร้างของแบบฟอร์มอนุกรมรวมถึงชื่อฟิลด์ทำลายสัญญานี้ การระบุชื่อฟิลด์ภายในแท็กทำให้สัญญาชัดเจนและมันก็ป้องกันไม่ให้ทำสัญญาโดยไม่ตั้งใจโดยการปรับเปลี่ยนหรือเปลี่ยนชื่อเขตข้อมูล
แพ็คเกจต่อไปนี้ได้รับการสนับสนุนนอกกรอบ:
นอกจากนี้แพ็คเกจที่กำหนดเองใด ๆ สามารถเพิ่มลงในรายการ
musttag ถูกรวมเข้ากับ golangci-lint และนี่เป็นวิธีที่แนะนำในการใช้งาน
ในการเปิดใช้งาน linter ให้เพิ่มบรรทัดต่อไปนี้ลงใน .golangci.yml :
linters :
enable :
- musttag หรือคุณสามารถดาวน์โหลดไบนารี prebuilt จากหน้ารีลีสเพื่อใช้สแตนด์ 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> ธงเมื่อใช้ musttag standalone:
musttag -fn= " github.com/hashicorp/hcl/v2/hclsimple.DecodeFile:hcl:2 " ./...