Copilot Jetbrain 가이드

봄도둑·2024년 1월 19일
0

AI 관심사

목록 보기
1/2

사내애 copilot 전파를 위해 작성한 가이드 문서입니다. 아주 기초적인 내용이 작성되어 있습니다. 후속편으로는 제가 코파일럿을 1년 정도 사용하면서 느꼈던 점, 더 나은 copilot 사용을 위해 도입해볼 포인트를 정리한 후속편은 여기서 확인할 수 있습니다.

1. 코파일럿 사용 설정

  1. github 로그인 후 settings > copilot 진입
  • 이 때 코파일럿 결제를 완료해야 하며 결제 후에도 copilot 항목이 보이지 않다면 최소 30분 정도 기다린 후 github의 settings 확인하면 copilot 항목이 추가된 것을 확인할 수 있습니다.

  1. Get started with Copilot
  • 해당 항목은 현재 코파일럿 결제 후 사용할 IDE의 종류를 확인할 수 있습니다. 기본적으로 결제 시 모든 항목을 사용합니다.
  1. Policies
  • 코파일럿의 사용 정책을 설정합니다.
  • Suggestions matching public code
  • Allow GitHub to use my code snippets for product improvements
    • 코파일럿이 사용자의 레포지토리를 학습하고 참고할 것인지 설정합니다.
    • 코파일럿의 코드 추천 우선 순위는 현재 작성하고 있는 프로젝트 > 공개 학습 코드 > 개인 레포지토리 순의 우선 순위를 가집니다.
    • 해당 옵션은 개인 코드가 유출될 가능성이 있으나 비즈니스 및 엔터프라이즈 레벨에서 사용 시 보안을 강화해 사용할 수 있습니다.

2. IntelliJ 적용하기

아래의 이미지와 경로는 copliot plugin 설치 안내 입니다. plugin이 설치되어야 copliot을 사용할 수 있습니다.

  • intellij의 setttings 진입 > Plugin 항목 선택 > copilot 검색 후 설치

(copilot plugin 설치 화면)

  • 현재 intelliJ의 2023.3.2 버전이 코파일럿과 간혹 충돌하는 문제가 있어 버전 update를 하지 않고 사용하는 중입니다.

(JetBrain Toolbox 사진, IntelliJ 버전 관리)

  • intelliJ의 경우 버전 업데이트가 발생할 경우 위의 copilot plugin 설치와 동일하게 copilot plugin을 계속 업데이트 해주어야 해당 버전에서 사용이 가능합니다. 버전 업데이트를 하지 않을 경우 copliot이 현재 intelliJ 버전에서 사용할 수 없다며 update를 하라는 에러 팝업 표시됩니다. → 이 케이스에서 copilot의 기능을 사용할 수 없습니다.
  • plugin 설치 후 IDE 우측에 아래 이미지와 같이 copilot, copilot chat 아이콘이 추가되었는지 확인합니다. plugin 설치 후 아이콘이 표시 되지 않는다면 IDE를 재실행합니다.

(intelliJ 우측 tool box 아이콘 확인, 위에서 3번째, 위에서 5번째 아이콘이 copilot)


3. intelliJ에서 사용해보기 - copilot

자동 완성 기능은 visual studio code의 사용 방법을 참고하시면 됩니다.

해당 파트에서는 copliot suggestions, copilot chat을 다룹니다.

예시로 사용할 Height.java 라는 enum 코드를 통해 진행합니다.

@Getter
public enum Height {
    //... 175cm 이하 enum 생략
    CM_175("175", "5'9''"),
    CM_178("178", "5'10''"),
   //... 180cm 이상 enum 생략
		CM_241("241", "7'11''"),;

    private final String centimeter;
    private final String feet;

    Height(String centimeter, String feet) {
        this.centimeter = centimeter;
        this.feet = feet;
    }
}

해당 enum은 키에 해당하는 cm와 feet의 메타 정보를 가지고 있는 enum입니다.

먼저, 아래의 이미지와 같이 IDE 우측의 tool box에서 copilot 아이콘을 클릭합니다. 클릭하면 Refesh to get completions for the caret position. 라는 문구와 함께 refresh 버튼이 활성화 되어 있습니다. refresh 버튼을 클릭하면 코파일럿이 제가 원하는 코드를 여러 개의 후보군으로 작성해 표시합니다.

(IDE 우측의 tool box에서 copilot 아이콘 클릭하기)

그런데, 활성화된 Refresh 버튼을 클릭할 경우 코파일럿이 코드 후보군을 제시해주는 것이 아니라 에러를 응답합니다.

(No completions were found 에러)

위의 케이스는 우리가 주석으로 copilot이 작성할 비즈니스 로직을 명시해주지 않았기 때문에 발생한 에러입니다. 그럼 간단한 비즈니스 로직을 하나만 넣어봅시다. (예시로 제시한 저의 문장은 영어가 짧기 때문에 문법과 문맥 파악이 가능한 문장으로 재작성 하시면 더 좋은 결과를 받을 수 있습니다)

우리가 추가할 주석은 enum 객체에서 centimeter를 파라미터로 받아서 feet에 해당하는 값을 return 하는 함수를 만들 것입니다. 추가한 주석은 간단하게 // return feet by centimeter, return type is string, default is 0 추가해봅시다.

@Getter
public enum Height {
    //... 175cm 이하 enum 생략
    CM_175("175", "5'9''"),
    CM_178("178", "5'10''"),
   //... 180cm 이상 enum 생략
	CM_241("241", "7'11''"),;

    private final String centimeter;
    private final String feet;

    Height(String centimeter, String feet) {
        this.centimeter = centimeter;
        this.feet = feet;
    }
		
		// return feet by centimeter, return type is string, default is 0
}

위처럼 주석을 추가한 후 Refresh 버튼을 클릭하면 아래와 같이 copilot이 다양한 후보군을 응답합니다.

  • 주의!) 이미 비즈니스 로직을 어느 정도 작성한 enum 객체 이기 때문에 결과 화면은 사람마다 제각각으로 표시됩니다. 저는 이미 enum에 convertFeetByCentimeter 라는 함수를 작성했기 때문에 copilot이 해당 함수를 추천해주는 것입니다.

각 작성된 코드들을 확인한 후 원하는 항목이 있다면 Accept solution 을 클릭해 코드를 실제 적용하기만 하면 됩니다.


4. intelliJ에서 사용해보기 - copilot chat

vs code 같은 경우에는 copilot 사용자라면 언제든지 사용 가능하지만 intelliJ에서 copilot chat을 사용하려면 대기자 등록을 해야 합니다. 아래 copilot 공식 문서에서 대기자 등록을 신청할 수 있습니다.

대기자 신청 링크 : https://docs.github.com/ko/copilot/github-copilot-chat/about-github-copilot-chat

신청을 완료하고 시간이 지나 순서가 오게 되면 아래와 같이 copilot chat 사용이 가능하다는 이메일을 수신합니다.

copilot chat 신청이 완료되었다면 IDE 우측에서 copilot chat 아이콘을 클릭한 후, 프롬프트에 copilot을 통해 해결할 점을 질문합니다. copilot chat의 경우 한글 지원이 가능하니 부담 없이 한글로 물어보면 됩니다.

그렇다면 위에서 사용한 예제를 chat 기능을 이용해 구현해봅시다. cetemter를 파라미터로 받은 후, 해당하는 feet의 값을 응답하는 함수를 만들 것입니다. 이 때 추가되는 조건은 파라미터 cetemeter가 enum의 범위에 없는 값이라면 RuntimeException을 발생시켜야 합니다.

다만, 개인적인 의견으로는 chat-gpt 수준 이상의 답변을 얻기는 힘들었습니다. copilot suggestion, copilot chat 보다는 copilot의 자동 완성 기능을 통해 제가 원하는 방향으로 코드 작성을 진행했습니다. 이에 대한 상세한 내용은 2편, 코파일럿 사용 후기를 통해 다뤄보겠습니다.

Reference

profile
Java Spring 백엔드 개발자입니다. java 외에도 다양하고 흥미로운 언어와 프레임워크를 학습하는 것을 좋아합니다.

0개의 댓글