SOLID GDScript - SOLID 원칙 분석기 for Godot 4
GDScript(Godot 4) 코드에서 SOLID 원칙 위반을 자동으로 감지하고, 개선 방법을 안내하는 VS Code 익스텐션입니다.
기능
| 기능 |
설명 |
| 🔍 실시간 분석 |
.gd 파일 편집 중 자동으로 SOLID 위반 감지 |
| ⚠️ Problems 패널 |
VS Code 기본 Problems 패널에 위반 표시 |
| 💡 Hover 가이드 |
위반 코드에 마우스 올리면 설명 + GDScript 예시 |
| 📊 대시보드 |
원칙별 점수 (0~100) 와 위반 목록 시각화 |
| 🏢 워크스페이스 분석 |
프로젝트 전체 .gd 파일 일괄 분석 |
SOLID 원칙별 체크 항목
S — Single Responsibility Principle (단일 책임 원칙)
- 파일/클래스가 너무 큰 경우 (설정 가능한 최대 줄 수)
- 클래스에 너무 많은 메서드가 있는 경우
_process() / _physics_process() 함수가 너무 많은 일을 직접 처리할 때
- 함수가 UI, 입력, 물리, 저장 등 여러 책임을 혼재할 때
O — Open/Closed Principle (개방-폐쇄 원칙)
if/elif 또는 match 분기가 너무 많은 경우 (새 케이스 추가마다 수정 필요)
is 키워드로 타입을 확인해 분기하는 경우 (다형성 미사용)
L — Liskov Substitution Principle (리스코프 치환 원칙)
is 키워드를 사용한 타입 다운캐스팅
- 오버라이드한 메서드가 비어(pass) 있는 경우 (부모 계약 파기)
super() 없이 Godot 가상 함수 오버라이드
push_error() / assert(false)로 기능 거부
I — Interface Segregation Principle (인터페이스 분리 원칙)
- 너무 많은 public 메서드 (뚱뚱한 인터페이스)
pass만 있는 메서드가 많은 기반 클래스
- 필요 없는 메서드를 구현하도록 강제하는 설계
D — Dependency Inversion Principle (의존성 역전 원칙)
$Node/Path 하드코딩된 노드 참조
get_node("HardcodedPath") 사용
ClassName.new() 직접 인스턴스화 (PackedScene 미사용)
- 함수 내부에서
load("res://...") 직접 사용
사용법
자동 분석
.gd 파일을 열면 자동으로 분석이 시작됩니다.
커맨드 팔레트 (Ctrl+Shift+P)
SOLID GD: 현재 파일 분석
SOLID GD: SOLID 대시보드 열기
SOLID GD: 워크스페이스 전체 분석
상태 바
우하단 SOLID: 85/100 클릭 → 대시보드 열기
설정
settings.json에서 조정 가능:
{
"solidGd.enableRealTimeAnalysis": true,
"solidGd.srp.maxMethodsPerClass": 10,
"solidGd.srp.maxLinesPerFunction": 30,
"solidGd.srp.maxLinesPerFile": 300,
"solidGd.ocp.maxBranchCount": 5,
"solidGd.isp.maxPublicFunctions": 12,
"solidGd.severity": "warning",
"solidGd.enabledPrinciples": {
"srp": true,
"ocp": true,
"lsp": true,
"isp": true,
"dip": true
}
}
개발 및 빌드
npm install
npm run compile # 단일 컴파일
npm run watch # watch 모드
F5 키로 Extension Development Host 실행.