يحدد gqlanalysis الواجهة بين تحليل ثابت معياري لـ GRAPHQL في GO. gqlanalysis مستوحى من GO/التحليل.
يجعل gqlanalysis سهلاً لتطوير أدوات تحليل ثابت لـ GraphQL في GO.
النوع الأساسي في API هو محلل. يصف المحلل بشكل ثابت وظيفة التحليل: اسمه ، وثائقه ، وعلاقات ، وعلاقة بالمحللين الآخرين ، وبالطبع منطقه.
package lackid
var Analyzer = & gqlanalysis. Analyzer {
Name : "lackid" ,
Doc : "lackid finds a selection for a type which has id field but the selection does not have id" ,
Run : run ,
...
}
func run ( pass * gqlanalysis. Pass ) ( interface {}, error ) {
...
}برنامج تشغيل التحليل هو برنامج يدير مجموعة من التحليلات وطبع التشخيصات التي يبلغون عنها. يجب على برنامج السائق استيراد قائمة المحللين التي يحتاجها.
يمكن إنشاء برنامج تشغيل نموذجي مع حزمة MulticHecker.
package main
import (
"github.com/gqlgo/gqlanalysis/multichecker"
"github.com/gqlgo/lackid"
"github.com/gqlgo/myanalyzer"
)
func main () {
multichecker . Main (
lackid . Analyzer ,
myanalyzer . Analyzer ,
)
}يصف التمريرة وحدة عمل واحدة: تطبيق محلل معين على مخطط GraphQL وملفات الاستعلام. يوفر PASS معلومات إلى وظيفة تشغيل المحلل حول المخططات والاستعلامات التي يتم تحليلها ، ويوفر عمليات لوظيفة التشغيل للإبلاغ عن التشخيصات وغيرها من المعلومات إلى السائق.
type Pass struct {
Analyzer * Analyzer
Schema * ast. Schema
Queries [] * ast. QueryDocument
Comments [] * Comment
Report func ( * Diagnostic )
ResultOf map [ * Analyzer ] interface {}
}التشخيص هو رسالة مرتبطة بموقع مصدر. يمكن لـ PASS الإبلاغ عن التشخيص عبر حقل التقرير أو طريقة التقرير.
type Diagnostic struct {
Pos * ast. Position
Message string
}