피드로 돌아가기
Dev.toBackend
원문 읽기
Go AST 분석 기반의 맞춤형 Linter 설계 및 golangci-lint 플러그인 통합
Create Your First Linter in Go
AI 요약
Context
범용 Linter로는 팀 고유의 컨벤션과 아키텍처 규칙 강제가 불가능한 한계 존재. 개발자의 인지 부하를 줄이고 코드 일관성을 확보하기 위한 맞춤형 정적 분석 도구 필요성 대두.
Technical Solution
- Go 표준 라이브러리가 제공하는 AST(Abstract Syntax Tree)를 활용한 소스 코드 구조 분석
- analysis 패키지의 Analyzer 구조체를 통한 비즈니스 로직 캡슐화 및 Run 함수 기반의 노드 탐색
- ValueSpec 노드를 추적하여 Unexported 상수가 '_' 접두사로 시작하는지 검증하는 규칙 구현
- Pass 인터페이스를 통한 파일 단위 AST 순회 및 Diagnosis 객체를 이용한 위반 사항 플래깅
- golangci-lint의 Plugin-module-register 라이브러리를 통한 외부 모듈 형태의 플러그인 통합
- Custom binary 생성을 통한 프로젝트 전체 범위의 자동 검사 및 Fix 기능 적용
실천 포인트
1. 팀 내 반복되는 PR 리뷰 피드백을 AST 기반의 Custom Linter 규칙으로 변환하여 자동화할 것
2. 분석 로직 설계 시 `testdata` 폴더 내 `// want` 주석을 활용해 기대 결과(Expectation)를 명시하고 테스트 케이스를 구축할 것
3. 단순 Linter 실행을 넘어 golangci-lint 플러그인으로 통합하여 CI/CD 파이프라인에 편입시킬 것