Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
505f1ae
docs: add detailed README files for internal packages
ikjeong Nov 16, 2025
3110b24
feat: add adapter capabilities interface
ikjeong Nov 16, 2025
9b836a7
feat: implement adapter registry
ikjeong Nov 16, 2025
3aca883
feat: add capabilities to existing adapters
ikjeong Nov 16, 2025
85bdff0
feat: implement checkstyle adapter
ikjeong Nov 16, 2025
324de06
feat: implement pmd adapter
ikjeong Nov 16, 2025
048770d
feat: register java adapters in registry
ikjeong Nov 16, 2025
30b826d
refactor: use adapter registry in ast engine
ikjeong Nov 16, 2025
5471211
refactor: use adapter registry in other engines
ikjeong Nov 16, 2025
85ddee2
chore: remove orphaned testdata files
ikjeong Nov 16, 2025
b870dde
refactor: restructure testdata by engine type
ikjeong Nov 16, 2025
dd2b6b9
feat: add Java pattern engine test data
ikjeong Nov 16, 2025
759b1b6
feat: add Java length engine test data
ikjeong Nov 16, 2025
5c60743
feat: add Java style engine test data
ikjeong Nov 16, 2025
8a50b9b
feat: add Java ast engine test data
ikjeong Nov 16, 2025
456924b
docs: add comprehensive testdata README
ikjeong Nov 16, 2025
4a7473e
fix: update integration test paths for restructured testdata
ikjeong Nov 16, 2025
44f3eed
fix: remove duplicate GenerateConfig method in tsc adapter
ikjeong Nov 16, 2025
e255b45
fix: resolve interface compatibility issues
ikjeong Nov 16, 2025
ad3a097
docs: update documentation for testdata structure
ikjeong Nov 16, 2025
78a077f
docs: add testing section to linter validation guide
ikjeong Nov 16, 2025
9d5b0a4
test: add code-policy files for validator integration tests
ikjeong Nov 16, 2025
38acbe0
test: add validator integration tests with code-policy files
ikjeong Nov 16, 2025
cc1a4b6
fix: resolve Java validator integration issues and improve config gen…
ikjeong Nov 16, 2025
91fbb2c
fix: resolve TypeScript TypeChecker integration test failure
ikjeong Nov 16, 2025
8383719
fix: resolve linter issues and update tests for CI compatibility
ikjeong Nov 16, 2025
5856a4d
docs: update package dependencies and architecture documentation
ikjeong Nov 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
232 changes: 231 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,19 @@ sym-cli/
├── scripts/ # 빌드 스크립트
├── examples/ # 예제 파일
├── tests/ # 테스트
├── testdata/ # 통합 테스트 데이터
│ ├── javascript/ # JavaScript 테스트 파일
│ │ ├── pattern/ # 패턴 매칭 테스트
│ │ ├── length/ # 길이 제한 테스트
│ │ ├── style/ # 코드 스타일 테스트
│ │ └── ast/ # AST 구조 테스트
│ ├── typescript/ # TypeScript 테스트 파일
│ │ └── typechecker/ # 타입 체킹 테스트
│ └── java/ # Java 테스트 파일
│ ├── pattern/ # 패턴 매칭 테스트
│ ├── length/ # 길이 제한 테스트
│ ├── style/ # 코드 스타일 테스트
│ └── ast/ # AST 구조 테스트
├── .sym/ # 정책 및 역할 파일 (gitignore)
├── Makefile
└── README.md
Expand Down Expand Up @@ -331,10 +344,18 @@ make test
# 특정 패키지 테스트
go test ./internal/engine/pattern/... -v

# 통합 테스트
# 통합 테스트 (JavaScript, TypeScript, Java)
go test ./tests/integration/... -v
```

**통합 테스트 데이터**:
- `testdata/javascript/`: JavaScript 엔진 테스트 (pattern, length, style, ast)
- `testdata/typescript/`: TypeScript 타입체커 테스트
- `testdata/java/`: Java 엔진 테스트 (Checkstyle, PMD 검증)

각 디렉토리는 위반 케이스와 정상 케이스를 포함하여 검증 엔진의 정확성을 보장합니다.
자세한 내용은 [testdata/README.md](testdata/README.md)를 참고하세요.

테스트 커버리지 리포트는 [여기](https://devsymphony.github.io/sym-cli/coverage.html)에서 확인할 수 있습니다.

### 코드 품질
Expand Down Expand Up @@ -453,3 +474,212 @@ Contributions are welcome! Please feel free to submit a Pull Request.
---

**Note:** 코드 검증 기능 (`convert`, `validate`, `export`)은 현재 개발 중입니다.

## 📊 패키지 구조 및 의존성

```mermaid
graph TB
subgraph "메인 진입점"
main[cmd/sym<br/>main]
end

subgraph "CLI 계층"
cmd[internal/cmd<br/>Cobra Commands]
end

subgraph "중앙 데이터 구조"
schema[pkg/schema<br/>Types]
end

subgraph "기본 유틸리티"
config[internal/config]
git[internal/git]
github[internal/github]
llm[internal/llm]
end

subgraph "도메인 계층"
auth[internal/auth]

subgraph converter_group["internal/converter"]
converter[converter]
conv_linters[linters]
end

policy[internal/policy]
end

subgraph "비즈니스 로직"
roles[internal/roles]

subgraph adapter_group["internal/adapter"]
adapter[adapter]
adapter_eslint[eslint]
adapter_prettier[prettier]
adapter_tsc[tsc]
adapter_checkstyle[checkstyle]
adapter_pmd[pmd]
adapter_registry[registry]
end

subgraph engine_group["internal/engine"]
engine[engine]
engine_core[core]
engine_registry[registry]
engine_pattern[pattern]
engine_length[length]
engine_style[style]
engine_ast[ast]
engine_llm[llm engine]
engine_typechecker[typechecker]
end

validator[internal/validator]
end

subgraph "통합 계층"
mcp[internal/mcp]
server[internal/server]
end

%% main 의존성
main --> cmd

%% cmd 의존성
cmd --> auth
cmd --> config
cmd --> converter
cmd --> git
cmd --> github
cmd --> llm
cmd --> mcp
cmd --> policy
cmd --> roles
cmd --> server
cmd --> validator
cmd --> schema

%% auth 의존성
auth --> config
auth --> github

%% converter 의존성
converter --> llm
converter --> schema
conv_linters --> converter

%% policy 의존성
policy --> git
policy --> schema

%% roles 의존성
roles --> git
roles --> policy
roles --> schema

%% adapter 서브패키지
adapter_eslint --> adapter
adapter_prettier --> adapter
adapter_tsc --> adapter
adapter_checkstyle --> adapter
adapter_pmd --> adapter
adapter_registry --> adapter
adapter --> engine_core

%% engine 서브패키지
engine_pattern --> engine_core
engine_pattern --> adapter_eslint
engine_length --> engine_core
engine_length --> adapter_eslint
engine_style --> engine_core
engine_style --> adapter_eslint
engine_style --> adapter_prettier
engine_ast --> engine_core
engine_ast --> adapter_eslint
engine_ast --> adapter_checkstyle
engine_ast --> adapter_pmd
engine_llm --> engine_core
engine_llm --> llm
engine_typechecker --> engine_core
engine_typechecker --> adapter_tsc
engine_registry --> engine_core
engine --> engine_registry

%% validator 의존성
validator --> engine
validator --> llm
validator --> roles
validator --> git
validator --> schema

%% mcp 의존성
mcp --> converter
mcp --> git
mcp --> llm
mcp --> policy
mcp --> validator
mcp --> schema

%% server 의존성
server --> config
server --> git
server --> github
server --> policy
server --> roles
server --> schema

%% llm의 schema 의존성
llm --> schema

classDef mainEntry fill:#e03131,stroke:#a61e4d,color:#fff,stroke-width:3px
classDef cliLayer fill:#ff6b6b,stroke:#c92a2a,color:#fff
classDef core fill:#20c997,stroke:#087f5b,color:#fff
classDef leaf fill:#51cf66,stroke:#2f9e44,color:#fff
classDef domain fill:#74c0fc,stroke:#1971c2,color:#fff
classDef business fill:#ffd43b,stroke:#f08c00,color:#000
classDef integration fill:#da77f2,stroke:#9c36b5,color:#fff
classDef subpkg fill:#f8f9fa,stroke:#868e96,color:#000

class main mainEntry
class cmd cliLayer
class schema core
class config,git,github,llm leaf
class auth,converter,policy domain
class roles,adapter,engine,validator business
class mcp,server integration
class adapter_eslint,adapter_prettier,adapter_tsc,adapter_checkstyle,adapter_pmd,adapter_registry,conv_linters subpkg
class engine_core,engine_registry,engine_pattern,engine_length,engine_style,engine_ast,engine_llm,engine_typechecker subpkg
```

### 패키지 계층 구조

**메인 진입점**
- `cmd/sym`: main 패키지 (→ internal/cmd)

**CLI 계층**
- `internal/cmd`: Cobra 기반 CLI 커맨드 구현 (→ 모든 internal 패키지)

**중앙 데이터 구조**
- `pkg/schema`: UserPolicy(A Schema) 및 CodePolicy(B Schema) 타입 정의

**Tier 0: 기본 유틸리티** (의존성 없음)
- `internal/config`: 전역 설정 및 토큰 관리
- `internal/git`: Git 저장소 작업
- `internal/github`: GitHub API 클라이언트
- `internal/llm`: OpenAI API 클라이언트 (→ schema)

**Tier 1: 도메인 계층**
- `internal/auth`: GitHub OAuth 인증 (→ config, github)
- `internal/converter`: 정책 변환 (→ llm, schema)
- `internal/policy`: 정책 파일 관리 (→ git, schema)

**Tier 2: 비즈니스 로직**
- `internal/roles`: RBAC 구현 (→ git, policy, schema)
- `internal/adapter` ↔ `internal/engine`: 검증 도구 어댑터 및 엔진 (순환 의존성)
- Adapters: ESLint, Prettier, TSC, Checkstyle, PMD
- Engines: Pattern, Length, Style, AST, LLM, TypeChecker
- `internal/validator`: 검증 오케스트레이터 (→ engine, llm, roles, git, schema)

**Tier 3: 통합 계층**
- `internal/mcp`: MCP 서버 (→ converter, git, llm, policy, validator, schema)
- `internal/server`: 웹 대시보드 (→ config, git, github, policy, roles, schema)
Loading