코딩 스타일 적용을 위한 Duo Workflow 사용 사례
Offering: GitLab.com
이 문서는 프롬프트 및 컨텍스트 라이브러리를 포함한 GitLab Duo Workflow 솔루션에 대해 설명합니다. 이 솔루션은 GitLab 이슈를 프롬프트로 제공하고 스타일 가이드를 컨텍스트로 제공합니다. GitLab Duo Workflow에 대한 자세한 내용은 여기 문서를 참조하세요.
시작하기#
솔루션 컴포넌트 다운로드#
- 계정 팀으로부터 초대 코드를 받으세요.
- 초대 코드를 사용하여 솔루션 컴포넌트 웹 스토어에서 솔루션 컴포넌트를 다운로드하세요.
Duo Workflow 사용 사례: 스타일 가이드로 Java 애플리케이션 개선#
이 문서는 프롬프트 및 컨텍스트 라이브러리를 포함한 GitLab Duo Workflow 솔루션에 대해 설명합니다. 이 솔루션의 목적은 정의된 스타일을 기반으로 애플리케이션 코딩을 개선하는 것입니다.
이 솔루션은 GitLab 이슈를 프롬프트로 제공하고 스타일 가이드를 컨텍스트로 제공합니다. GitLab Duo Workflow를 사용하여 코드베이스에 Java 스타일 가이드라인을 자동화하도록 설계되었습니다. 프롬프트 및 컨텍스트 라이브러리를 통해 Duo Workflow는 다음을 수행할 수 있습니다:
- GitLab 리포지터리에 저장된 중앙화된 스타일 가이드 콘텐츠에 접근,
- 도메인별 코딩 표준 이해,
- 기능을 유지하면서 Java 코드에 일관된 형식 적용.
GitLab Duo Workflow에 대한 자세한 내용은 여기 문서를 참조하세요.
주요 이점#
- 모든 Java 코드베이스에 일관된 스타일 적용
- 수동 작업 없이 스타일 적용 자동화
- 가독성을 높이면서 코드 기능 유지
- GitLab VS Code와 통합하여 원활한 구현 가능
- 스타일 문제를 처리하는 데 소비되는 코드 리뷰 시간 단축
- 개발자가 스타일 가이드라인을 이해하기 위한 학습 도구로 활용
샘플 결과#
적절히 구성되면 이 프롬프트는 코드를 엔터프라이즈 표준에 맞게 변환합니다. 다음 diff에 표시된 변환과 유사합니다:


솔루션 프롬프트 및 컨텍스트 라이브러리 구성#
기본 설정#
애플리케이션에 스타일을 검토하고 적용하는 에이전트 워크플로우를 실행하려면 이 사용 사례 프롬프트와 컨텍스트 라이브러리를 설정해야 합니다.
Enterprise Code Quality Standards프로젝트를 복제하여 프롬프트 및 컨텍스트 라이브러리를 설정합니다- 라이브러리 파일
.gitlab/workflows/java-style-workflow.md의 프롬프트 콘텐츠로 GitLab 이슈Review and Apply Style을 만듭니다 - 이슈
Review and Apply Style에서 구성 섹션에 자세히 설명된 워크플로우 변수를 구성합니다 - 프로젝트
Enterprise Code Quality Standards와 함께 VS Code에서 간단한 워크플로우 프롬프트로 Duo Workflow를 시작합니다 - 제안된 계획과 자동화된 작업을 검토하고 필요한 경우 워크플로우에 추가 입력을 제공하여 Duo Workflow와 함께 작업합니다
- 스타일이 적용된 코드 변경 사항을 리포지터리에 검토하고 커밋합니다
Duo Workflow 프롬프트 예시#
Follow the instructions in issue <issue_reference_id> for the file <path/file_name.java>. Make sure to access any issues or GitLab projects mentioned in the issue to retrieve all necessary information.
이 간단한 프롬프트는 Duo Workflow에 다음을 지시하기 때문에 강력합니다:
- 특정 이슈 ID의 자세한 요구 사항 읽기
- 참조된 스타일 가이드 리포지터리 접근
- 지정된 파일에 가이드라인 적용
- 이슈의 모든 지침 따르기
구성 가이드#
프롬프트는 솔루션 패키지의 .gitlab/workflows/java-style-workflow.md 파일에 정의되어 있습니다. 이 파일은 워크플로우 에이전트가 애플리케이션에 스타일 가이드 검토를 자동화하고 변경 사항을 적용하는 계획을 수립하도록 지시하는 GitLab 이슈를 만들기 위한 템플릿으로 사용됩니다.
.gitlab/workflows/java-style-workflow.md의 첫 번째 섹션에서 프롬프트에 대해 구성해야 하는 변수를 정의합니다.
변수 정의#
변수는 .gitlab/workflows/java-style-workflow.md 파일에 직접 정의됩니다. 이 파일은 AI 어시스턴트에게 지시하는 GitLab 이슈를 만들기 위한 템플릿으로 사용됩니다. 해당 파일에서 변수를 수정한 후 해당 파일의 콘텐츠로 새 이슈를 만드세요.
1. 컨텍스트로서의 스타일 가이드 리포지터리#
프롬프트가 조직의 스타일 가이드 리포지터리를 가리키도록 구성되어야 합니다. java-style-prompt.md 파일에서 다음 변수를 교체하세요:
{{GITLAB_INSTANCE}}: GitLab 인스턴스 URL (예:https://gitlab.example.com){{STYLE_GUIDE_PROJECT_ID}}: Java 스타일 가이드가 포함된 GitLab 프로젝트 ID{{STYLE_GUIDE_PROJECT_NAME}}: 스타일 가이드 프로젝트의 표시 이름{{STYLE_GUIDE_BRANCH}}: 최신 스타일 가이드가 포함된 브랜치 (기본값: main){{STYLE_GUIDE_PATH}}: 리포지터리 내 스타일 가이드 문서 경로
예시:
GITLAB_INSTANCE=https://gitlab.example.com
STYLE_GUIDE_PROJECT_ID=gl-demo-ultimate-zhenderson/sandbox/enterprise-java-standards
STYLE_GUIDE_PROJECT_NAME=Enterprise Java Standards
STYLE_GUIDE_BRANCH=main
STYLE_GUIDE_PATH=coding-style/java/guidelines/java-coding-standards.md
2. 스타일 개선을 적용할 대상 리포지터리#
동일한 java-style-prompt.md 파일에서 스타일 가이드를 적용할 파일을 구성합니다:
{{TARGET_PROJECT_ID}}: Java 프로젝트의 GitLab ID{{TARGET_FILES}}: 대상 파일 또는 패턴 (예: "src/main/java/**/*.java")
예시:
TARGET_PROJECT_ID=royal-reserve-bank
TARGET_FILES=asset-management-api/src/main/java/com/royal/reserve/bank/asset/management/api/service/AssetManagementService.java
AI 생성 코드에 대한 중요 참고사항#
⚠️ 중요 면책 조항:
GitLab VS Code는 비결정적인 에이전트 AI를 사용합니다. 즉:
- 동일한 입력으로도 실행 결과가 달라질 수 있습니다
- AI 어시스턴트의 스타일 가이드라인 이해 및 적용이 매번 약간씩 다를 수 있습니다
- 이 문서에서 제공되는 예시는 예시일 뿐이며 실제 결과는 다를 수 있습니다
AI 생성 코드 변경 사항 처리를 위한 모범 사례:
- 항상 생성된 코드 검토: 철저한 사람 검토 없이 AI 생성 변경 사항을 머지하지 마세요
- 적절한 머지 리퀘스트 프로세스 따르기: 표준 코드 리뷰 절차를 사용하세요
- 모든 테스트 실행: 머지하기 전에 모든 단위 및 통합 테스트가 통과하는지 확인하세요
- 스타일 준수 확인: 변경 사항이 스타일 가이드 기대치와 일치하는지 확인하세요
- 점진적 적용: 처음에는 소수의 파일 세트에 스타일 변경 사항을 적용하는 것을 고려하세요
이 도구는 개발자를 지원하기 위한 것이지 코드 리뷰 프로세스에서 인간의 판단을 대체하기 위한 것이 아님을 기억하세요.
단계별 구현#
-
스타일 가이드 이슈 만들기
-
프로젝트에 새 이슈 만들기 (예: 이슈 #3)
-
적용할 스타일 가이드라인에 대한 자세한 정보 포함
-
해당되는 경우 외부 스타일 가이드 리포지터리 참조
-
다음과 같은 요구 사항 지정:
Task: Code Style Update Description: Apply the enterprise standard Java style guidelines to the codebase. Reference Style Guide: Enterprise Java Style Guidelines (https://gitlab.com/gl-demo-ultimate-zhenderson/sandbox/enterprise-java-standards/-/blob/main/coding-style/java/guidelines/java-coding-standards.md) Constraints: - Adhere to Enterprise Standard Java Style Guide - Maintain Functionality - Implement automated style checks
-
-
프롬프트 구성
java-style-prompt.md에서 템플릿 복사- 모든 구성 변수 입력
- 프로젝트별 예외 또는 요구 사항 추가
-
GitLab VS Code를 통해 실행
-
Duo Workflow에 구성된 프롬프트 제출
-
Duo Workflow는 샘플 워크플로우 실행에 표시된 것처럼 다단계 프로세스를 실행합니다:
- 특정 도구를 사용하여 작업 계획 수립 (
run_read_only_git_command,read_file,find_files,edit_file) - 참조된 이슈 접근
- 엔터프라이즈 Java 스타일 가이드 가져오기
- 현재 코드 구조 분석
- 지정된 파일에 스타일 가이드라인 적용
- 변경 사항이 기능을 유지하는지 확인
- 변경된 내용에 대한 자세한 보고서 제공
- 특정 도구를 사용하여 작업 계획 수립 (
-
-
검토 및 구현
- 제안된 변경 사항 검토
- 코드베이스에 변경 사항 구현
- 기능이 유지되는지 테스트 실행
- GitLab VS Code 인터페이스를 통해 작업 진행 상황 모니터링
샘플 워크플로우 실행#
적절히 구성되면 GitLab VS Code 확장이 스타일 가이드라인 적용을 위한 자세한 계획을 실행합니다. 다음은 워크플로우 실행이 어떻게 보이는지에 대한 샘플입니다:
샘플 워크플로우 계획#
AI 어시스턴트는 먼저 특정 도구를 사용하는 실행 계획을 만듭니다:
-
run_read_only_git_command를 사용하여https://gitlab.com/gl-demo-ultimate-zhenderson/sandbox/enterprise-java-standards.git에서coding-style/java/guidelines/java-coding-standards.md파일을 위해 Enterprise Java Standards 프로젝트에서 콘텐츠를 가져와 Java 스타일 가이드라인에 접근합니다. 지원 도구:run_read_only_git_command -
read_file도구를 사용하여AssetManagementService.java의 현재 콘텐츠를 읽고 분석하여 구조를 이해하고 스타일 업데이트가 필요한 영역을 식별합니다. 지원 도구:read_file -
관련 서비스 클래스에서 일관된 스타일 적용을 위해 find_files를 사용하여 프로젝트에서 유사한 파일을 검색합니다. 지원 도구:
find_files -
edit_file 도구를 사용하여 AssetManagementService.java를 편집하여 스타일 가이드라인을 적용합니다. 주요 내용:
- 패키지 및 임포트 구성
- 클래스 및 메서드 문서화
- 코드 들여쓰기 및 간격
- 어노테이션 배치
- 메서드 매개 변수 형식 지정. 지원 도구:
edit_file
-
grep_files를 사용하여 코드베이스 전체에서 어노테이션 패턴을 확인하여 모든 Lombok 어노테이션 (@Service, @RequiredArgsConstructor, @Slf4j)이 스타일 가이드에 따라 올바르게 형식화되어 있는지 확인합니다. 지원 도구:
grep_files
샘플 분석 출력#
그러면 어시스턴트가 파일과 요구 사항을 분석합니다:
이슈 #3과 AssetManagementService.java 파일을 분석했습니다. 다음은 발견한 내용입니다:
-
이슈 #3은 Royal Banking 코드베이스에 엔터프라이즈 표준 Java 스타일 가이드라인을 적용하는 것입니다.
-
AssetManagementService.java파일은asset-management-api모듈에 있습니다. -
스타일 가이드라인은
gl-demo-ultimate-zhenderson/sandbox/enterprise-java-standards의 별도 GitLab 프로젝트에 저장되어 있습니다. -
현재
AssetManagementService.java파일에는 다음이 포함되어 있습니다:- 패키지 및 임포트 구문
- Spring 어노테이션이 있는 서비스 클래스
- 자산 가용성 확인을 위한 하나의 public 메서드
- Lombok 어노테이션
- Javadoc 댓글
이슈에서 다음이 요구됩니다:
- 엔터프라이즈 표준 Java 스타일 가이드라인에 따른 형식 지정
- 자동화된 스타일 검사 구현
- 기존 기능 유지
- 스타일 업데이트 후 모든 테스트 통과 보장
구현을 진행하려면 다음이 필요합니다:
- Enterprise Java Standards 프로젝트에서 Java 스타일 가이드라인 접근
- AssetManagementService.java에 스타일 가이드라인 적용
- 변경 사항이 기능에 영향을 미치지 않는지 확인
- 업데이트 후 모든 테스트 통과 보장
샘플 구현 결과#
실행 후 어시스턴트는 변환된 코드와 함께 다음을 포함한 변경 사항에 대한 설명을 제공합니다:
- 적용된 스타일 가이드라인 요약
- 적절한 형식의 변환된 코드
- 주요 스타일 변경 사항에 대한 설명
- 자동화된 스타일 적용에 대한 권장 사항
변경 사항에는 일반적으로 다음이 포함됩니다:
- 표준화된 임포트 순서
- 연산자 주변의 일관된 간격
- 적절한 Javadoc 형식
- 표준화된 메서드 매개 변수 정렬
- 일관된 중괄호 배치
원래 기능을 유지하면서 이 모든 것이 이루어집니다.
샘플 튜토리얼 사용 사례: Royal Reserve Bank Java 프로젝트#
이 리포지터리에는 실제 시나리오에서 스타일 가이드 적용이 어떻게 작동하는지 보여주기 위한 뱅킹 튜토리얼 예시가 포함되어 있습니다. Royal Reserve Bank 프로젝트는 여러 Java 서비스를 가진 마이크로서비스 아키텍처를 따릅니다:
- Account API
- Asset Management API
- Transaction API
- Notification API
- API Gateway
- Config Server
- Discovery Server
샘플 예시는 AssetManagementService.java 클래스에 엔터프라이즈 스타일 가이드라인을 적용하며 다음에 대한 적절한 형식을 보여줍니다:
- 임포트 구성
- Javadoc 표준
- 메서드 매개 변수 정렬
- 변수 이름 규칙
- 예외 처리 패턴
조직에 맞게 사용자 지정#
조직의 요구 사항에 맞게 이 프롬프트를 조정하려면:
-
스타일 가이드 교체
- 조직의 스타일 가이드 리포지터리를 가리키도록 변경
- 특정 스타일 가이드 문서 참조
-
대상 파일 선택
- 스타일 가이드를 적용할 특정 파일 또는 패턴 선택
- 초기 구현을 위해 가시성이 높은 코드 파일 우선 순위 지정
-
추가 검증
- 사용자 정의 검증 요구 사항 추가
- 표준 스타일 규칙에 대한 예외 지정
-
CI/CD와 통합
- CI/CD 파이프라인의 일부로 프롬프트를 실행하도록 구성
- 지속적인 준수를 위한 자동화된 스타일 검사 설정
문제 해결#
일반적인 문제 및 해결 방법:
- 접근 거부: AI 에이전트가 두 리포지터리에 모두 접근할 적절한 권한이 있는지 확인하세요
- 스타일 가이드 없음: 스타일 가이드 경로와 브랜치가 올바른지 확인하세요
- 기능 변경: 스타일 변경 사항을 적용한 후 기능을 확인하기 위해 모든 테스트를 실행하세요
기여#
다음을 통해 이 프롬프트를 개선해 주세요:
- 더 많은 스타일 규칙 설명 추가
- 다양한 Java 프로젝트 유형에 대한 예시 만들기
- 검증 워크플로우 개선
- 추가 정적 분석 도구와의 통합 추가
