Copilot 사용 입문

동영상 공유

GitHub Copilot은 기계학습 기반 코드 자동완성 도구로, 더 빠르게 코드를 작성하고 코딩 효율을 높이는 데 도움이 됩니다.

Copilot Labs 기능

기능설명비고예시
Explain코드 조각에 대한 설명 제공고급 옵션으로 프롬프트 맞춤 설정, 요구 사항을 더 명확하게 설명그림 1
Show example code코드 조각에 대한 예제 코드 제공고급 옵션 제공그림 2
Language Translation코드 조각 번역 제공프로그래밍 언어 간 번역(예: C++ -> Python)그림 3
Readable코드 가독성 향상단순 포맷팅이 아닌 진정한 가독성 향상그림 4
Add Types타입 추론자동 타입 변수를 명시적 타입으로 변환그림 5
Fix bug버그 수정일반적인 버그 수정그림 6
Debug디버깅 용이하게 만들기로그 출력 추가 또는 디버깅을 위한 임시 변수 추가그림 7
Clean코드 정리사용하지 않는 주석/출력/폐기된 코드 등 정리그림 8
List steps코드 단계 나열실행 순서가 엄격히 의존하는 코드, 명확한 순서 주석 필요그림 9
Make robust코드 견고성 향상경계조건/멀티스레드/재진입 등 고려그림 10
Chunk코드 블록 분할함수 유효 라인 수<=50, 중첩<=4, 분기<=7, 사이클 복잡도<=20 권장그림 11
Document코드 문서 생성주석 작성으로 코드 생성, 코드로 주석 및 문서 생성그림 12
Custom사용자 정의 작업Copilot에게 코드 작업 방법 지시그림 13

Copilot이란

공식 사이트 소개는 간단명료합니다: 당신의 AI 파트너 프로그래머 —— 당신의 페어 프로그래머

페어 프로그래밍: 애자일 소프트웨어 개발 방법으로, 두 명의 프로그래머가 같은 컴퓨터 앞에서 협력: 한 명이 코드를 입력하고, 다른 한 명이 모든 라인을 검토합니다. 역할을 자주 교환하여 논리적 엄밀성과 문제 예방을 보장합니다.

Copilot은 다음 방식으로 코딩 작업에 참여하여 페어 프로그래머 역할을 수행합니다.

이해하기

Copilot은 대형 언어 모델로, 우리의 코드를 이해할 수 없고, 우리는 Copilot 모델을 이해할 수 없습니다. 여기서의 이해는 한 명의 프로그래머와 수많은 프로그래머 사이의 상호 이해입니다. 모두는 일정한 합의를 기반으로 함께 코드를 작성합니다.

그림 14

Copilot은 컨텍스트를 이해하기 위해 정보를 수집하며, 정보는 다음과 같습니다.

  • 현재 편집 중인 코드
  • 연관 파일
  • IDE에서 열린 파일
  • 라이브러리 주소
  • 파일 경로

Copilot은 한 줄 주석만으로 이해하는 것이 아니라 충분한 컨텍스트 정보를 수집하여 다음 작업을 이해합니다.

권장사항

전체 권장 사항인라인 권장 사항
그림 15그림 16

众所周히, 가장 일반적인 권장 사항을 얻는 방법은 코드를 직접 작성하는 대신 요구 사항을 설명하는 주석을 통해 GitHub Copilot에게 전체 권장 사항을 요청하는 것입니다. 하지만 이는 주석 중복 문제를 야기할 수 있습니다. 주석이 많을수록 좋은 것이 아니라, 주석은 이해를 돕지만 코드 본질은 아닙니다. 좋은 코드는 주석 없이도 명확해야 하며, 적절한 명명, 합리적인 설계, 명확한 로직에 의존합니다. 인라인 권장 사항을 사용할 때는 적절한 변수명/함수명/클래스명만 제공하면 Copilot이 적절한 권장 사항을 줄 것입니다.

적절한 외부 입력 외에도 Copilot은 기존 코드 조각에 기반한 권장 사항을 지원합니다. Copilot Labs->Show example code는 함수 예제 코드를 생성하는 데 도움이 됩니다. 코드를 선택하고 Show example code를 클릭하면 됩니다.

Ctrl+Enter는 항상 많은 영감을 줍니다. 저는 main.cpp 빈 파일, calculator.h 빈 파일을 만들고 calculator.cpp에서 “덧셈"과 “뺄셈"을 구현했습니다. Copilot은 다음과 같은 권장 내용을 제시했습니다.

  1. “곱셈"과 “나눗셈” 구현 추가
  2. main에서 “덧셈 뺄셈 곱셈 나눗셈” 구현 호출
  3. calculator 정적 라이브러리 생성 및 사용 방법
  4. main 함수 실행 결과, 결과가 정확함
  5. calculator.h 헤더 파일 권장 내용
  6. g++ 컴파일 명령
  7. gtest 케이스
  8. CMakeLists.txt 내용, 테스트 포함
  9. objdump -d main > main.s 어셈블리 코드 확인, 어셈블리 코드 표시
  10. ar 정적 라이브러리 내용 확인, 정적 라이브러리 내용 표시

기본 설정에서 Ctrl+Enter를 매번 누를 때마다 표시되는 내용이 크게 다르며, 이전 생성 내용을 다시 볼 수 없습니다. 더 안정적인 생성 내용이 필요하면 temperature 값을 [0, 1]로 설정할 수 있습니다. 값이 작을수록 생성 내용이 안정적이며, 값이 클수록 생성 내용이 예측하기 어려워집니다. 위 권장 내용은 일상 사용 일반 권장 내용을 크게 초과합니다. 아마도 프로젝트가 매우 단순하기 때문일 것입니다. 컴파일 파일과 헤더 파일을 모두 작성하면 권장 사항이 많지 않을 것입니다. 하지만 여전히 종종 좋은 영감을 줍니다.

Copilot 권장 사항 사용 단축키

작업단축키명령 이름
인라인 권장 사항 수락Tabeditor.action.inlineSuggest.commit
권장 사항 무시Esceditor.action.inlineSuggest.hide
다음 인라인 권장 사항 표시Alt+]editor.action.inlineSuggest.showNext
이전 인라인 권장 사항 표시Alt+[editor.action.inlineSuggest.showPrevious
인라인 권장 사항 트리거Alt+\editor.action.inlineSuggest.trigger
별도 패널에서 더 많은 권장 사항 표시Ctrl+Entergithub.copilot.generate

디버깅

일반적인 두 가지 디버깅 방식, 출력과 중단점.

  • Copilot은 컨텍스트에 따라 적절한 출력 또는 로그를 자동으로 생성하는 출력 코드 작성에 도움을 줄 수 있습니다.
  • Copilot은 기존 코드 구조를 수정하여 편리한 중단점 위치를 제공할 수 있습니다. 중단점을 걸기 어려운 중첩 스타일의 코드는 Copilot이 직접 수정할 수 있습니다.

Copilot Labs는 다음과 같은 기능을 사전 제공합니다.

  • Debug, 디버깅 코드 생성, 예를 들어 출력, 중단점, 기타 디버깅 코드.

검토

검토는 상호적인 것입니다. 우리는 Copilot과 자주 서로 검토해야 하며, 빠르게 생성된 코드를 경솔하게 믿어서는 안 됩니다.

Copilot Labs는 다음과 같은 기능을 사전 제공합니다.

  • Fix bug, 직접 버그 수정, 먼저 자신의 코드를 저장하고 Copilot의 수정을 면밀히 검토해야 합니다.
  • Make robust, 코드 견고성 향상, Copilot은 처리되지 않은 상황을 발견하고 개선 코드를 생성합니다. 우리는 그 영감을 받아 더 세심하게 생각해야 합니다.

리팩토링

Copilot Labs는 다음과 같은 기능을 사전 제공합니다.

  • Readable, 가독성 향상, 단순 포맷팅이 아닌 진정한 가독성 향상, 하지만 Copilot의 수정을 면밀히 검토해야 합니다.
  • Clean, 코드 정리, 불필요한 코드 제거.
  • Chunk, 코드를 이해하기 쉽게 만듦, 코드를 블록으로 분할, 큰 함수를 여러 작은 함수로 나눔.

문서화

Copilot Labs는 다음과 같은 기능을 사전 제공합니다.

  • Document, 문서 생성, 예를 들어 함수 주석 및 기타 문서.

Custom 기능으로 Copilot 범위 확장

Custom은 눈에 띄지 않지만 Copilot에게 무한한 가능성을 부여합니다. 우리는 이를 새로운 프로그래밍 언어로 이해할 수 있습니다. 이 프로그래밍 언어는 영어 또는 중국어입니다.

Custom을 통해 다음을 입력할 수 있습니다.

  • 注释 코드 제거
    그림 17

  • 곱셈 나눗셈 기능 추가
    그림 18

  • go로 개작
    그림 19

  • 삼각 함수 계산 추가
    그림 20

  • 미분 계산 추가, 여기서는 중국어가 잘 안 되어 support calculate differential을 사용합니다. 저온 모드에서는 신뢰할 수 있는 답이 없고, 고온 모드에서는 몇 가지 황당한 답이 있습니다.

일상 업무에서 언제든지 자신의 요구를 Copilot에게 제시할 수 있으며, Custom 기능을 통해 Copilot이 많은 작업을 수행하도록 도울 수 있습니다.

몇 가지 예:

프롬프트설명
generate the cmake filecmake 파일 생성
generate 10 test cases for tan()tan()에 대한 10개 테스트 케이스 생성
format like google style코드 포맷팅
경계 조건 고려경계 조건 고려
메모리 해제 확인메모리 해제 확인

Custom 사용법은 상상력이 풍부하지만 때로는 신뢰할 수 없습니다. 사용 전 코드를 저장한 후 수정 사항을 면밀히 검토하는 것이 좋습니다.

더 전문적인 조언 얻기

Copilot에게 제공하는 프롬프트가 명확할수록 제공하는 권장 사항이 정확하며, 전문적인 프롬프트는 더 전문적인 권장 사항을 얻을 수 있습니다. 적절하지 않은 코드는 코드 컴파일이나 비즈니스 실행에 영향을 주지 않지만 가독성, 유지보수성, 확장성, 재사용성에 영향을 미치며, 이러한 특성도 매우 중요합니다. 더 전문적인 권장 사항을 얻고 싶다면 최고의 관행 영문 명칭을 이해하는 것이 좋습니다.

  • 먼저 이해할 수 있는 영어를 사용하는 것이며, 오픈소스 프로젝트를 보면서 영어를 배울 수 있습니다.
  • 명명 규칙, 명명은 개념의 가장 기본적인 정의이며, 좋은 명명은 모호성을 피하고, 독자를 비즈니스 세부사항에 빠지지 않게 하여 코드 가독성을 향상시키며, 이는 또한 최고의 관행입니다.
    • 일반적으로 적절한 변수명만 있으면 Copilot이 전체 권장 사항을 줄 것입니다.
  • 디자인 패턴 목록, 디자인 패턴은 다른 문제를 해결하기 위한 템플릿으로, 다른 문제에 대해 SOLID 디자인 기본 원칙을 합리적으로 선택하고 버리는 것으로, 설계 시간을 절약하고 코드 품질을 향상시킵니다.
    • 필요한 패턴 이름만 쓰면 Copilot이 완전한 코드 조각을 생성할 수 있습니다.
  • 알고리즘 목록, 좋은 알고리즘은 일련의 문제를 해결하기 위한 높은 지혜의 결정체이며, 개발자는 구체적인 문제를 추상화하고, 데이터를 추상화하여 알고리즘에 입력해야 합니다.
    • 알고리즘 코드는 일반적으로 범용적이며, 알고리즘 이름만 쓰면 Copilot이 알고리즘 코드 조각을 생성할 수 있으며, Copilot은 항상 컨텍스트의 데이터 구조를 알고리즘에 적절하게 활용할 수 있습니다.

순수 텍스트 권장 사항

enko
GitHub Copilot uses the OpenAI Codex to suggest code and entire functions in real-time, right from your editor.GitHub Copilot은 OpenAI Codex를 사용하여 에디터에서 실시간으로 코드와 전체 함수를 제안합니다.
Trained on billions of lines of code, GitHub Copilot turns natural language prompts into coding suggestions across dozens of languages.수십억 라인의 코드로 훈련된 GitHub Copilot은 자연어 프롬프트를 수십 가지 언어로 코딩 제안으로 변환합니다.
Don’t fly solo. Developers all over the world use GitHub Copilot to code faster, focus on business logic over boilerplate, and do what matters most: building great software.혼자 하지 마세요. 전 세계 개발자들이 GitHub Copilot을 사용하여 더 빠르게 코딩하고, 표준 코드보다 비즈니스 로직에 집중하며, 가장 중요한 일인 훌륭한 소프트웨어 구축을 합니다.
Focus on solving bigger problems. Spend less time creating boilerplate and repetitive code patterns, and more time on what matters: building great software. Write a comment describing the logic you want and GitHub Copilot will immediately suggest code to implement the solution.더 큰 문제 해결에 집중하세요. 표준 코드와 반복적인 코드 패턴 생성에 더 적은 시간을 보내고, 중요한 일에 더 많은 시간을 보내세요: 훌륭한 소프트웨어 구축. 원하는 로직을 설명하는 주석을 작성하면 GitHub Copilot이 즉시 솔루션 구현을 위한 코드를 제안합니다.
Get AI-based suggestions, just for you. GitHub Copilot shares recommendations based on the project’s context and style conventions. Quickly cycle through lines of code, complete function suggestions, and decide which to accept, reject, or edit.AI 기반 제안을 얻으세요, 당신만을 위한 제안. GitHub Copilot은 프로젝트의 컨텍스트와 스타일 규칙에 기반한 권장 사항을 공유합니다. 코드 라인을 빠르게 순환하고, 완전한 함수 제안을 확인하며, 어떤 것을 수락, 거부, 편집할지 결정합니다.
Code confidently in unfamiliar territory. Whether you’re working in a new language or framework, or just learning to code, GitHub Copilot can help you find your way. Tackle a bug, or learn how to use a new framework without spending most of your time spelunking through the docs or searching the web.낯선 영역에서 자신 있게 코딩하세요. 새로운 언어나 프레임워크에서 작업하거나 코딩을 배우는 중이라도 GitHub Copilot이 길을 찾는 데 도움을 줄 수 있습니다. 대부분의 시간을 문서 탐색이나 웹 검색에 쓰지 않고 버그를 해결하거나 새 프레임워크 사용 방법을 배울 수 있습니다.

이 번역은 모두 Copilot이 생성한 것이며, 이 권장 사항이 모델 생성에 기반한 것인지 번역 행동에 기반한 것인지는 확신할 수 없습니다. 사실상 표의 en 열에 작성하는 모든 영어 내용은 Copilot에 의해 ko 열의 내용으로 번역(생성)될 수 있습니다.

그림 21

설정 항목

클라이언트 설정 항목

설정 항목설명비고
temperature샘플링 온도0.0 - 1.0, 0.0은 가장 일반적인 코드 조각 생성, 1.0은 가장 일반적이지 않고 더 무작위적인 코드 조각 생성
length생성 코드 권장 사항 최대 길이기본값 500
inlineSuggestCount생성 인라인 권장 사항 수기본값 3
listCount생성 권장 사항 수기본값 10
top_p확률 상위 N 권장 사항 우선 표시기본값은 모든 가능한 권장 사항 표시

개인 계정 설정에는 두 가지 설정이 있습니다. 하나는 저작권 관련, 하나는 프라이버시 관련입니다.

  • 공개 코드를 사용하여 권장 사항 제공 여부, 주로 Copilot이 생성한 코드 조각의 저작권 문제 회피, 오픈소스 라이선스 제한 회피 목적.
  • 개인 코드 조각을 사용하여 제품 개선 허용 여부, 프라이버시 유출 위험 회피 목적.

데이터 보안

Copilot의 정보 수집

  • 상용 버전
    • 기능 사용 정보, 개인 정보 포함 가능
    • 코드 조각 수집, 권장 사항 제공 후 즉시 폐기, 코드 조각을 보관하지 않음
    • 데이터 공유, GitHub, Microsoft, OpenAI
  • 개인 버전
    • 기능 사용 정보, 개인 정보 포함 가능
    • 코드 조각 수집, 권장 사항 제공 후 개인 telemetry 설정에 따라 보관 또는 폐기
    • 코드 조각 포함, 현재 편집 중인 코드, 연관 파일, IDE에서 열린 파일, 라이브러리 주소, 파일 경로
    • 데이터 공유, GitHub, Microsoft, OpenAI
    • 코드 데이터 보호, 1. 암호화. 2. Copilot 팀과 관련된 GitHub/OpenAI의 일부 직원만 볼 수 있음. 3. 역할 기반 액세스 제어와 다중 인증이 필요함
    • 코드 조각 사용(보관 또는 훈련) 회피, 1. 설정 2. Copilot 팀에 연락
    • 개인 코드가 사용될까? 사용되지 않음.
    • 개인 정보(이름 생일 등) 출력 여부? 드물게 발생, 개선 중.
  • 상세 개인정보 보호정책

일반적인 질문

  • Copilot의 훈련 데이터, GitHub 공개 레포에서 옴.
  • Copilot이 작성한 코드는 완벽한가? 반드시 그렇지는 않음.
  • 새 플랫폼에 코드를 작성할 수 있는가? 현재는 능력이 제한적.
  • Copilot을 더 잘 사용하는 방법은? 코드를 작은 함수로 분할, 자연어로 함수 기능과 입력 출력을 설명, 구체적인 의미를 가진 변수명과 함수명 사용.
  • Copilot이 생성한 코드에 버그가 있을까? 물론 피할 수 없습니다.
  • Copilot이 생성한 코드를 바로 사용할 수 있는가? 반드시 그렇지는 않으며, 때로는 수정이 필요합니다.
  • Copilot이 생성한 코드를 상업 프로젝트에 사용할 수 있는가? 가능.
    • Copilot이 생성한 코드는 Copilot의 지적 재산권인가? 아님.
    • Copilot은 훈련 세트에서 코드를 복사하는가? Copilot은 코드를 복사하지 않으며, 150 라인 이상의 코드가 훈련 세트와 일치하는 경우는 극히 낮은 확률이며, 다음 두 가지 경우에 나타날 수 있습니다.
      • 컨텍스트 정보가 매우 적을 때
      • 일반적인 문제 해결책일 때
    • 공개 코드와 중복되는 것을 피하는 방법, 필터 설정
      그림 22
  • Copilot이 생성한 코드를 올바르게 사용하는 방법은? 1. 생성된 코드를 직접 테스트/검토; 2. 검토 전 자동 컴파일이나 실행을 하지 않음.
  • Copilot은 모든 자연어에서 동일한 성능을 가지는가? 최고 성능은 영어.
  • Copilot은 모욕적인 내용을 생성하는가? 필터가 있지만 나타날 가능성이 있습니다.