News

JetBrains IDE의 전체 줄 코드 완성: 알아야 할 모든 것

Read this post in other languages:

AI를 사용한 프로그래밍은 여전히 논쟁의 여지가 많은 주제이지만, 점차 많은 개발자들이 AI를 일상적 워크플로에 통합하기 시작하고 있다는 사실은 부인할 수 없습니다. 어떤 입장이든, 혹은 아직 판단을 내리지 못했더라도 JetBrains IDE 2024.1 버전에 새롭게 도입된 전체 줄 코드 완성 기능은 여러분의 관심을 끌기에 충분해 보입니다. 이 기능은 AI 기반이며 인터넷을 통해 데이터를 전송하지 않고 로컬에서 실행됩니다.

이번 블로그 게시물에서는 전체 줄 코드 완성이 무엇인지, 어떻게 작동하는지, 어떤 언어가 지원되는지, 이에 대한 피드백을 제공하려면 어떻게 해야하는지 자세히 설명하겠습니다. 아래의 영상(한국어 자막 제공)에서도 확인하실 수 있습니다.

JetBrains IDE에서 전체 줄 코드 완성이란 무엇인가요?

이 새로운 유형의 코드 완성 기능은 JetBrains IDE의 최신 2024.1 업데이트에 추가되었습니다. 아래에서 볼 수 있듯이 현재 파일의 컨텍스트에 따라 줄을 완성하는 회색 톤의 한 줄 제안 형태를 취합니다.

이러한 제안은 다양한 언어 및 프레임워크에 대해 특별히 학습시킨 특수 언어 모델을 통해 제공됩니다. 이 모델은 인터넷을 통해 코드를 전송하지 않고 로컬에서 실행됩니다.

전체 줄 코드 완성 기능은 현재 해당 JetBrains IDE(IntelliJ IDEA Ultimate, PyCharm Professional, WebStorm, PhpStorm, GoLand 및 RubyMine) 내의 Java, Kotlin, Python, JavaScript, TypeScript, CSS, PHP, GoRuby에 사용할 수 있습니다. 앞으로 몇 달 안에 이 기능을 C#, Rust 및 C++로 확장할 예정이므로 Rider, RustRover 및 CLion에서도 이용할 수 있게 될 것입니다.

활성화 된 JetBrains IDE 구독에 추가 비용 없이 전체 줄 코드 완성 기능이 포함되어 있습니다. 이 기능을 사용하려면 버전이 2024.1 이상인지 확인하세요. 아직 구독하지 않은 경우 30일 무료 평가판 기간 동안 이 기능을 사용할 수도 있습니다.

전체 줄 완성은 어떻게 이루어지나요?

전체 줄 코드 완성 기능은 두 가지 주요 목적을 가지고 구현되었습니다. 시간을 절약하고 코딩 속도를 높이는 데 도움을 주려는 것이 첫 번째 목적입니다. 그 다음으로는 클라우드에 연결된 AI 솔루션을 사용할 때 특정 조직이 겪는 제약을 해결할 수 있는 솔루션을 제공하는 것입니다.

이러한 전체 줄 코드 완성의 두 가지 목적이 어떻게 실현되는지 아래에서 확인하실 수 있습니다.

  • 로컬에서 작동하고 오프라인으로 사용할 수 있습니다. 즉, 인터넷에 연결하지 않아도 이 기능을 사용할 수 있습니다.
  • 인터넷을 통해 컴퓨터의 어떤 데이터도 전송하지 않습니다. 전체 줄 코드 완성을 지원하는 언어 모델은 로컬에서 실행되는데 이는 두 가지 이유에서 바람직합니다. 첫째, 코드가 컴퓨터 외부로 유출되지 않으므로 안전하게 유지됩니다. 둘째, 클라우드와 관련된 추가 비용이 없습니다. 이 기능이 추가 비용 없이 제공되는 이유입니다.
  • JetBrains IDE에 긴밀하게 통합되어 있습니다. IDE가 대괄호와 따옴표의 쌍이 맞는지 검사하므로 모든 제안의 서식이 올바르게 지정됩니다. 또한 정적 분석 기술을 활용하고 코드에 대한 당사 노하우를 바탕으로 잘못된 제안을 걸러냅니다. 지원되는 각 언어는 제안된 코드의 적정성을 자체적으로 검사합니다. 확인되지 않은 참조 검사와 같은 가장 기본적인 검사는 IDE가 존재하지 않는 변수와 메서드를 제안하지 않도록 하기 위해 대부분의 언어에 구현됩니다. 자동 가져오기 기능도 지원됩니다.
  • 이 기능은 워크플로를 최대한 원활하게 유지하도록 설계되었습니다. 추가된 후 곧바로 명시적으로 취소되거나 삭제되는 경우가 많은 제안은 표시하지 않도록 스마트 필터링이 사용됩니다.

추가적인 기술 정보는 아래에서 이 섹션을 참조하세요.

전체 줄 코드 완성과 AI Assistant 비교

JetBrains IDE에서 AI 기능을 활용할 수 있는 방법에는 전체 줄 코드 완성과 JetBrains AI Assistant, 두 가지가 있습니다. 이 두 부분이 혼동을 초래할 수 있다고 생각되므로 서로의 공통점과 차이점에 대해 자세히 살펴보겠습니다.

전체 줄 코드 완성과 JetBrains AI Assistant 모두 작업 속도를 높이는 데 목표를 두고 있습니다. 두 기능 모두 한동안 JetBrains IDE에서 이용할 수 있었던 표준 완성 기능의 수준을 넘어섭니다. 그러나 JetBrains AI Assistant의 경우, 컨텍스트 인식 스마트 채팅과 더불어 테스트를 생성하거나 문서를 작성하는 기능 등을 포함하여 보다 포괄적인 기능을 제공합니다.

두 가지 AI 기능을 비교한 아래 표를 참조하세요.

고객 코드에 대해서는 어떠한 AI 기능에도 학습시키지 않으므로 안심하세요. 회사에서 엄격한 데이터 보호 규정을 실행하고 있지만 AI를 통해 워크플로 속도를 높이고 싶다면, 전체 줄 코드 완성이 더 나은 선택일 수 있습니다.

내부에 숨겨진 기능

전체 줄 코드 완성의 근간은 프로그래밍 언어별 언어 모델이며, 허용되는 라이선스가 있는 오픈 소스 코드 데이터 세트를 사용하여 내부적으로 이 모델을 학습시킵니다. 언어 모델에는 캐럿 앞의 코드 부분이 입력되지만 일부 언어의 경우 관련 파일의 내용을 추가하기도 합니다. 현재 줄에 모델이 제안하는 내용이 연속해서 출력되며 이 부분은 회색으로 표시됩니다.

언어 모델의 추론은 로컬 컴퓨터에서 실행됩니다. 코드를 최대한 효율적으로 생성하기 위해 모델 추론은 별도의 프로세스에서 실행되며 대상 시스템의 아키텍처에 맞게 최적화됩니다. 예를 들어 x86-64 아키텍처를 사용하는 경우 모델은 CPU에서 실행되는 반면, ARM64 아키텍처를 사용하는 경우 모델은 컴퓨터의 GPU 성능을 활용합니다.

제안이 생성된 후 여러 후처리 단계가 적용됩니다. 먼저 이 제안이 구문적, 의미적으로 올바른지 확인한 다음 스마트 필터링, 서식 지정, 괄호 짝 맞추기 및 기타 다양한 처리를 수행합니다. 후처리는 사용자 경험에 매우 중요하므로 워크플로를 방해하지 않는 의미 있는 제안만 표시하려고 노력하고 있습니다.

마지막으로, 한 줄 제안을 하기로 결정한 이유가 궁금하실 수도 있을 것입니다. AI 코드 완성 제안의 길이는 절충이 필요합니다. 제안이 길면 키 입력 횟수가 줄어들어 효과적이지만 사용자 측에서 검토해야 하는 내용이 많아진다는 단점도 있습니다. 이러한 점을 고려하여 단일 코드 줄을 완성하는 것이 합리적인 절충안이라는 결론을 내렸습니다.

이러한 결정에 따라 제안의 품질을 크게 떨어뜨리지 않으면서 모델의 규모를 줄일 수 있었습니다. JetBrains IDE 2024.1 버전에서는 매개변수가 1억 개이고 최대 컨텍스트 크기가 1,536개 토큰(약 170줄의 코드)인 언어 모델을 사용합니다.

기능을 설정하는 방법

Settings(설정) | Editor(에디터) | General(일반) | Code Completion(코드 완성) 에서 전체 줄 코드 완성 기능을 구성할 수 있습니다. 모든 설정은 여기에 있는 Machine Learning-Assisted Completion(머신러닝 지원 완성) 섹션에서 확인할 수 있습니다.

이 기능을 해제하려면 Enable Full Line suggestions(전체 줄 제안 활성화) 체크박스를 선택 취소하면 됩니다. 또는 이 기능을 지원하는 플러그인을 비활성화할 수 있습니다. 이렇게 하려면 Settings(설정) | Plugins(플러그인)으로 이동하여 Installed(설치됨) 탭으로 전환하고 full line code completion(전체 줄 코드 완성)을 찾으시면 됩니다.

피드백을 제공하는 방법

전체 줄 코드 완성 기능은 아직 개발 중이므로 여러분의 피드백은 개선에 큰 도움이 됩니다. 이 블로그 게시물 아래에 댓글을 남겨주시면 됩니다. 여기에서 기존 이슈에 찬성 투표를 하거나 로그인하고 오른쪽 상단에 있는 New Issue(새 이슈) 버튼을 클릭하여 새 이슈를 만들 수도 있습니다.

오늘은 여기까지입니다. 전체 줄 코드 완성 기능을 사용해 보고 여러분의 의견을 알려주세요. C#, Rust 및 C++에 대한 지원뿐만 아니라 AI Assistant의 여러 줄 코드 완성과의 통합 개선에 우선 순위를 두고 이 기능을 계속해서 개선할 예정입니다. 새로운 소식을 기다려 주세요!

게시물 원문 작성자

Jessie Cho

Ekaterina Ryabukha

image description

Discover more