Go팀, 모듈형 정적 분석 프레임워크 공개

원제: Go Analysis Framework: modular static analysis by go team

왜 중요한가

Go 생태계 전반의 정적 분석 도구 표준 인터페이스로서, 6,500개 이상 패키지가 채택해 코드 품질 자동화 기반으로 광범위하게 활용된다.

Go 공식 팀이 golang.org/x/tools/go/analysis 패키지 v0.48.0을 2026년 7월 9일에 공개했다. 이 패키지는 Go 코드의 정적 분석을 모듈 단위로 수행하는 공통 인터페이스를 정의하며, 현재 6,564개 이상의 패키지에서 사용 중이다. BSD-3-Clause 라이선스로 제공된다.

golang.org/x/tools/go/analysis 패키지는 Go 팀이 개발한 모듈형 정적 분석 프레임워크로, 정적 분석 도구(Analyzer)와 분석 드라이버 프로그램 간의 공통 인터페이스를 정의한다.

주요 특징은 '모듈형 분석' 방식이다. 하나의 패키지를 독립적으로 검사하면서도, 하위 패키지에서 수집한 정보(Fact)를 상위 패키지 분석 시 재활용할 수 있다. 예를 들어 printf 체커는 log.Fatalf가 fmt.Printf에 위임한다는 사실을 기록해두고, 다른 패키지에서 해당 함수를 호출할 때도 포맷 문자열 오류를 검출한다.

이 프레임워크는 go vet과 같은 커맨드라인 도구, VS Code 등 텍스트 에디터 및 IDE, go build·Bazel·Buck 같은 빌드 시스템, 코드 리뷰 도구, SourceGraph 같은 코드베이스 인덱서 등 다양한 드라이버 프로그램에서 활용 가능하도록 설계됐다.

패키지가 제공하는 핵심 타입으로는 Analyzer(분석기 정의), Pass(분석 실행 컨텍스트), Diagnostic(진단 결과), Fact(패키지 간 공유 정보), SuggestedFix(수정 제안), TextEdit 등이 있다. Go 1.11에서 도입된 Go 모듈 시스템을 완전히 지원하며, 안정적인 태그 버전을 제공한다. 현재 6,564개 패키지가 이 프레임워크를 임포트해 사용 중이다.

출처

pkg.go.dev — 원문 읽기 →