gqlanalysis
v0.3.6
gqlanalysis GO에서 GraphQL에 대한 모듈 식 정적 분석 사이의 인터페이스를 정의합니다. gqlanalysis GO/분석에서 영감을 얻었습니다.
gqlanalysis 사용하면 GRAY에서 GraphQL을위한 정적 분석 도구를 쉽게 개발할 수 있습니다.
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 ) {
...
}분석 드라이버는 분석 세트를 실행하고보고하는 진단을 인쇄하는 프로그램입니다. 드라이버 프로그램은 필요한 분석기 목록을 가져와야합니다.
멀티 치커 패키지로 일반적인 드라이버를 만들 수 있습니다.
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의 스키마 및 쿼리 파일에 특정 분석기를 적용합니다. 이 패스는 분석중인 Schemas 및 쿼리에 대한 분석기의 실행 기능에 대한 정보를 제공하며 진단 및 기타 정보를 운전자에게보고하기위한 실행 기능에 대한 작업을 제공합니다.
type Pass struct {
Analyzer * Analyzer
Schema * ast. Schema
Queries [] * ast. QueryDocument
Comments [] * Comment
Report func ( * Diagnostic )
ResultOf map [ * Analyzer ] interface {}
}진단은 소스 위치와 관련된 메시지입니다. Pass는 보고서 필드 또는 ReportF 방법을 통해 진단을보고 할 수 있습니다.
type Diagnostic struct {
Pos * ast. Position
Message string
}