Skip to content

Codex-based Code Analysis and Onboarding Automation

🗓️ 목적

문서화, 주석 작성, 테스트 생성 등 반복 작업을 줄이고, 코드 품질과 협업 효율을 높이는 것이 주요 목적입니다.

🧠 Codex (GPT-4 Turbo)란?

Codex는 OpenAI의 코드 이해 및 생성 특화 AI 모델입니다. 현재는 GPT-4 Turbo에 통합되어 있으며, 다음 작업이 가능합니다:

  • 코드 설명 자동 생성
  • 함수/클래스 주석 작성
  • 테스트 코드 생성
  • 리팩토링 제안
  • 시퀀스/클래스 다이어그램 자동 생성
  • 리뷰 자동화 (PR 피드백 보조)

🚀 도입 목적 및 효과

항목설명
온보딩 속도 향상신입이 코드 이해에 걸리는 시간 단축
문서화 자동화주석, 흐름도, 구조 설명을 자동 생성
테스트 자동화단위 테스트 및 엣지 케이스 자동 생성
코드 품질 향상개선 제안, 흐름 분석, 예외 처리 누락 방지
리뷰 효율화코드 변경 사항에 대해 자동 피드백 가능

✅ Codex 실전 활용 예시

📘 1. 코드 설명 자동 생성

JavaScript 예시

javascript
function calculateDiscount(price, rate) {
  return price * (1 - rate);
}

Codex 요청:

이 함수의 역할과 파라미터를 설명해줘. 주석도 추가해줘.

결과

javascript
/**
 * 가격과 할인율을 기반으로 할인된 금액을 계산합니다.
 *
 * @param {number} price - 원래 가격
 * @param {number} rate - 할인율 (예: 0.2는 20%)
 * @returns {number} 할인 적용 후 가격
 */
function calculateDiscount(price, rate) {
  return price * (1 - rate);
}

PHP 예시

php
function calculateDiscount($price, $rate) {
    return $price * (1 - $rate);
}

결과

php
/**
 * 할인율을 적용하여 최종 금액을 계산하는 함수
 *
 * @param float $price 원래 가격
 * @param float $rate 할인율 (예: 0.2는 20%)
 * @return float 할인 적용된 가격
 */
function calculateDiscount($price, $rate) {
    return $price * (1 - $rate);
}

🧪 2. 테스트 코드 자동 생성

JavaScript (Jest)

jsx
test('calculateDiscount should return correct value', () => {
  expect(calculateDiscount(100, 0.2)).toBe(80);
  expect(calculateDiscount(200, 0)).toBe(200);
  expect(calculateDiscount(50, 1)).toBe(0)ㅅ;
});

PHP (PHPUnit)

php
public function testCalculateDiscount()
{
    $this->assertEquals(80, calculateDiscount(100, 0.2));
    $this->assertEquals(200, calculateDiscount(200, 0));
    $this->assertEquals(0, calculateDiscount(50, 1));
}

🔍 3. 메서드 분석 및 예외 흐름 정리

예시

php
function processPayment($userId, $amount) {
    $user = getUser($userId);
    if (!$user) throw new Exception("User not found");

    if (!validatePaymentLimit($user, $amount)) {
        throw new Exception("Limit exceeded");
    }

    return executeTransaction($user, $amount);
}

Codex 분석 결과

  • 호출 순서: getUservalidatePaymentLimitexecuteTransaction
  • 예외 발생: 사용자 없음, 결제 한도 초과
  • 개선 포인트: 커스텀 예외 클래스, 로깅 누락 등

📊 4. 시퀀스 다이어그램 생성

JavaScript 흐름 예시

javascript
async function handleOrder(userId, productId) {
  const user = await getUser(userId);
  const product = await getProduct(productId);
  const order = await createOrder(user, product);
  return order;
}

Mermaid 시퀀스 다이어그램

mermaid

sequenceDiagram
    participant U as User
    participant S as Server
    participant DB as Database

    U->>S: handleOrder(userId, productId)
    S->>DB: getUser(userId)
    DB-->>S: user
    S->>DB: getProduct(productId)
    DB-->>S: product
    S->>DB: createOrder(user, product)
    DB-->>S: order
    S-->>U: order

📤 5. PR 리뷰 자동 피드백

요청 예시

이 함수가 PR로 올라온다면 리뷰어 입장에서 개선 포인트를 제안해줘.

Codex 결과 예

  • 예외 메시지 → 더 명확한 커스텀 예외 클래스로 분리
  • 성공/실패 로깅 미흡
  • 결제 한도 초과 시 사용자에게 응답 형식 불분명

이러한 피드백은 실제 리뷰 시 놓치기 쉬운 부분을 보완해줍니다.

📁 통합 도구 구성

도구용도
GPT-4 Turbo (Codex)코드 분석, 주석, 테스트, 리뷰 자동화
Notion내부 문서화 및 온보딩 가이드 작성
Jest / PHPUnit테스트 실행
Mermaid.js다이어그램 시각화
GitBook / MkDocs공식 문서화 도구 (선택)

📌 적용 방식 요약

  1. 핵심 코드 파일을 GPT에 입력
  2. 설명 / 주석 / 다이어그램 자동 생성
  3. 테스트 코드와 예외 흐름 정리
  4. PR 리뷰 피드백 자동화
  5. 결과를 Notion에 복사하여 정리

IronTrain Tech Blog