AI 기반 서비스

Today
-
Total
-
← 목록으로

코딩 컨벤션 자동 추출 - 레거시 코드에서 개발 표준을 역추출하다

이창연•2026년 2월 7일

코딩 컨벤션 자동 추출 - 레거시 코드에서 개발 표준을 역추출하다

문제: 문서화되지 않은 개발 표준

개발팀에게 물어보면 이런 대답이 돌아온다.

"코딩 컨벤션? 있긴 한데... 문서는 오래됐고, 실제론 좀 달라요."

현실은 이렇다:

  • 문서는 있지만 outdated - 3년 전에 작성하고 업데이트 안 함
  • 암묵적 규칙 - "그냥 다들 이렇게 해요"
  • 사람마다 다름 - 선임 개발자 스타일을 따라함
  • 코드로만 존재 - 문서화할 시간이 없었음

AI Code Agent를 도입하려 하면 문제가 생긴다.

AI는 우리 팀의 규칙을 모른다.

AI가 따를 수 있는 규칙이 필요하다

Cursor, Continue, Claude Code 같은 도구들은 시스템 프롬프트에 규칙을 넣으면 따른다.

## 코딩 규칙
- 함수명은 camelCase
- 클래스명은 PascalCase
- 상수는 UPPER_SNAKE_CASE
- 들여쓰기는 스페이스 2칸
- 한 함수는 30줄 이내
...

그런데 이걸 누가 작성하나?

  • 시니어 개발자가 직접? → 시간이 없다
  • 기존 문서에서? → outdated라 못 믿는다
  • 처음부터 새로? → 너무 오래 걸린다

해결책: 코드에서 역추출

핵심 아이디어는 간단하다.

이미 작성된 코드가 개발 표준이다.

10년간 축적된 레거시 코드에는 팀의 암묵적 규칙이 녹아있다. 이걸 분석해서 명시적 규칙으로 추출하면 된다.

추출 가능한 컨벤션

분류추출 항목
네이밍변수, 함수, 클래스, 상수 명명 규칙
구조디렉토리 구조, 파일명 패턴, 모듈 구성
패턴사용 중인 디자인 패턴, 아키텍처 패턴
포맷들여쓰기, 줄바꿈, 공백 규칙
주석주석 스타일, JSDoc/JavaDoc 포맷
에러 처리try-catch 패턴, 에러 타입 정의
APIREST 엔드포인트 규칙, 요청/응답 포맷
DB테이블/컬럼 명명, 쿼리 패턴

동작 방식

[기존 소스코드]
      │
      ▼
[AST 파싱 + 통계 분석]
      │
      ├── 네이밍 패턴 분석 (변수 1,234개 분석 → camelCase 98%)
      ├── 함수 길이 분석 (평균 25줄, 최대 100줄)
      ├── import 패턴 분석 (alias 규칙, 그룹핑)
      ├── 디렉토리 구조 분석 (components/, utils/, hooks/)
      └── 주석 패턴 분석 (JSDoc 사용률 73%)
      │
      ▼
[LLM 기반 규칙 추론]
      │
      ├── 통계 → 자연어 규칙 변환
      ├── 예외 케이스 식별
      └── 우선순위 결정
      │
      ▼
[AI용 프롬프트 생성]

생성되는 프롬프트 예시

## 이 프로젝트의 코딩 컨벤션

### 네이밍 규칙
- 변수/함수: camelCase (예: getUserData, isLoading)
- 클래스/컴포넌트: PascalCase (예: UserService, LoginForm)  
- 상수: UPPER_SNAKE_CASE (예: MAX_RETRY_COUNT)
- private 메서드: _prefix (예: _validateInput)
- boolean 변수: is/has/can prefix (예: isValid, hasPermission)

### 함수 작성 규칙
- 한 함수는 30줄 이내 (현재 평균: 25줄)
- 파라미터는 3개 이하 (초과 시 객체로 묶기)
- early return 패턴 사용
- async 함수에는 try-catch 필수

### 파일/폴더 구조
- components/: React 컴포넌트
- hooks/: 커스텀 훅 (use- prefix)
- utils/: 유틸리티 함수
- services/: API 호출 로직
- types/: TypeScript 타입 정의

### 주석 규칙
- 함수에는 JSDoc 스타일 주석 작성
- 복잡한 로직에는 인라인 주석
- TODO 형식: `// TODO(담당자): 내용`

이 규칙을 따라 코드를 작성하세요.

추가 기능 구상

1. 팀별 프로필

프로젝트/팀마다 다른 컨벤션을 프로필로 관리.

profiles:
  frontend-team:
    source: ./frontend/src
    rules: ./profiles/frontend.md
    
  backend-team:
    source: ./backend/src
    rules: ./profiles/backend.md

2. 컨벤션 위반 탐지

추출된 규칙으로 기존 코드의 위반 사례 탐지.

⚠️ 컨벤션 위반 발견: 152건

위반 유형별:
- 네이밍 규칙 위반: 89건 (snake_case 사용)
- 함수 길이 초과: 34건 (30줄 이상)
- 주석 누락: 29건 (public 함수)

3. 점진적 업데이트

코드가 변경될 때마다 컨벤션 프롬프트도 자동 업데이트.

  • Git hook으로 변경 감지
  • 새로운 패턴 발견 시 규칙 추가
  • 사용되지 않는 패턴 제거

4. 팀 승인 워크플로우

자동 추출 → 팀 리뷰 → 승인 후 적용.

AI가 추출한 규칙을 팀이 검토하고, 수정하고, 최종 승인하면 공식 컨벤션으로 등록.

현실적 과제

1. 정확도

  • 코드 양이 적으면 패턴 추출이 부정확
  • 여러 스타일이 혼재된 레거시는 어느 걸 따라야 하나?
  • 해결: 최신 코드에 가중치, 팀 리뷰로 보정

2. 복잡한 규칙

  • 조건부 규칙 (A일 때는 X, B일 때는 Y)
  • 암묵적 예외 (특정 모듈에서만 다른 규칙)
  • 해결: LLM으로 맥락 이해, 예외 케이스 명시

3. 언어별 차이

  • Java와 JavaScript의 컨벤션은 완전히 다름
  • 프레임워크별 규칙 (React, Spring, Django)
  • 해결: 언어/프레임워크별 분석 모듈

왜 이 도구가 필요한가

시큐아이 프로젝트에서 개발자 인터뷰를 하면서 들은 얘기:

"코딩 컨벤션은 있는데, 문서화가 안 돼있어요. 신입이 오면 코드 보고 파악하라고 해요."

이게 현실이다.

개발 표준 문서 만들 시간 없고, 만들어도 outdated 되고, AI는 규칙 모르고.

코드에서 역추출하면:

  • 시간 절약 (자동 분석)
  • 최신 상태 유지 (코드가 진실)
  • AI 즉시 적용 가능 (프롬프트 자동 생성)

아직 PoC 단계지만, 엔터프라이즈 환경에서 AI 코딩 도구를 제대로 쓰려면 필수가 될 거라 생각한다.


이 기획은 실제 고객사 인터뷰에서 나온 pain point에서 시작했다. "컨벤션 있는데 문서화 안 됨" — 이 한 마디가 아이디어의 출발점이었다.