레거시 코드를 유지보수하거나 낯선 프로젝트를 인수인계받을 때, 개발자는 중첩된 제어문, 복잡한 정규식, 예외 분기 처리를 파악하는 데 많은 시간을 소모합니다. IntelliJ IDEA에 내장된 JetBrains AI Assistant는 생성형 AI를 IDE 편집기와 빌드 툴체인에 직접 통합하여, 브라우저를 오가며 코드를 복사하고 붙여넣는 번거로움 없이 에디터 내에서 복잡한 로직을 해석하고 완성도 높은 단위 테스트(Unit Test)를 자동 생성할 수 있도록 지원합니다.
단순한 웹 기반 대화형 AI와 달리, JetBrains AI Assistant는 프로젝트의 추상 구문 트리(AST), 의존성 모듈, 패키지 및 디렉터리 구조를 정확하게 인식합니다. 클래스 간의 호출 계층 구조를 분석할 뿐만 아니라 전용 테스트 디렉터리(src/test/java 또는 src/test/kotlin)를 감지하여, 독립된 코드 차이 뷰(AI Diff)에서 생성된 테스트 코드를 사전에 검토할 수 있습니다. 본 가이드에서는 어시스턴트 설정부터 코드 설명 기능의 활용법, 그리고 신뢰도 높은 단위 테스트 생성 절차를 단계별로 설명합니다.
1. 사전 요구사항 및 환경 구성
IntelliJ IDEA에서 AI Assistant 기능을 활성화하기 전, 개발 환경이 다음 조건을 충족하는지 확인해야 합니다.
- IDE 버전 확인: IntelliJ IDEA 2023.3 이상 버전(Community Edition의 경우 2024.1.1 이상)이 필요합니다.
- 플러그인 설치: AI Assistant 플러그인은 기본적으로 활성화되어 있지 않습니다. Settings | Plugins | Marketplace로 이동하여 검색창에
AI Assistant를 입력한 뒤 Install을 클릭하여 설치합니다. - 라이선스 및 구독: JetBrains AI 유효 구독(Free, Pro, Ultimate, Enterprise) 또는 자체 모델 키 연동(BYOK, Bring Your Own Key)이 필요합니다. 신규 사용자는 IDE 상단 툴바의 JetBrains AI 위젯을 통해 30일간 무료로 제공되는 AI Pro 체험판을 활성화할 수 있습니다.
설치가 완료되면 에디터 우클릭 메뉴와 인텐션 액션(Intention Actions) 항목에 AI 관련 기능이 자동으로 등록됩니다.
2. 에디터에서 복잡한 코드 분석 및 설명 받기
다중 스레드 파이프라인, 고난도 알고리즘 로직, 문서화되지 않은 서드파티 라이브러리 코드를 분석할 때, 프로젝트 컨텍스트를 고려한 AI 설명 기능을 활용하면 직관적인 분석 결과를 얻을 수 있습니다.
실행 단계
- 대상 코드 선택: 에디터 창에서 분석하고자 하는 메서드, 반복문 또는 특정 코드 블록을 드래그하여 지정합니다.
- 액션 메뉴 호출: 선택 영역을 우클릭하거나 단축키
Alt+Enter(macOS는Option+Enter)를 누릅니다. - Explain Code 선택: 메뉴에서 AI Actions | Explain Code를 클릭합니다.
- AI Chat 창에서 설명 확인: 우측에 AI Chat 도구 창이 즉시 열리며, 선택된 코드의 주요 목적, 실행 흐름, 예외 처리 메커니즘, 시간 및 공간 복잡도 분석 결과가 구조화되어 제공됩니다.
참조된 프로젝트 컨텍스트 확인 (Attachments)
외부 챗봇은 복사된 텍스트 조각만 볼 수 있지만, JetBrains AI Assistant는 주변 클래스, 참조 타입, 프로젝트 설정을 함께 고려합니다. AI Chat 답변 상단에 위치한 Attachments 드롭다운을 클릭하면, 해당 답변을 도출하기 위해 참조된 실제 프로젝트 소스 파일과 심볼 목록을 직접 확인할 수 있습니다.
삽입 언어(RegExp 및 SQL) 특화 설명
IntelliJ IDEA는 문자열 리터럴 내부의 언어 주입(Language Injections)을 자동으로 감지합니다. 정규표현식이나 SQL 쿼리, Cron 표현식에 커서가 위치할 경우 전용 액션이 활성화됩니다.
- 정규식 분석: AI Actions | Explain RegExp fragment를 선택하면 캡처 그룹, 전방탐색, 메타문자의 의미를 세부적으로 분해하여 설명합니다.
- SQL 쿼리 분석: AI Actions | Explain SQL problem under caret를 실행하면 IDE에 연결된 데이터베이스 스키마를 바탕으로 쿼리 실행 계획과 잠재적인 인덱스 이슈를 점검합니다.
3. AI Assistant를 활용한 단위 테스트 자동 생성
경계값 처리, null 검증, 예외 분기 테스트를 수작업으로 일일이 작성하는 것은 번거롭고 누락이 발생하기 쉽습니다. JetBrains AI Assistant는 프로젝트의 테스트 프레임워크(JUnit 4/5, TestNG, Mockito 등) 규격에 맞춰 테스트 코드를 자동 구성합니다.
단위 테스트 생성 절차
- 테스트 대상 지정: 테스트하려는 클래스 선언부나 메서드 시그니처 내부에 커서를 놓습니다.
- 테스트 생성 호출:
Alt+Enter를 누르거나 우클릭하여 AI Actions | Generate Unit Tests를 선택합니다. - AI Diff 탭에서 검토: 생성된 코드는 기존 소스에 곧바로 반영되지 않고, 전용 AI Diff 화면에 양방향 비교 뷰로 표시됩니다. 메서드 네이밍, 모의 객체(Mock) 주입, 어설션(Assertion), import 구문을 면밀히 검토할 수 있습니다.
테스트 결과 수정 및 재구성
AI Diff 화면에서는 코드를 저장하기 전에 다양한 방식으로 결과를 다듬을 수 있습니다.
- 상세 조건 추가 (Specify): 특정 시나리오를 추가하려면 Specify를 클릭하고
"타임아웃 발생, 음수 입력, 빈 컬렉션 전달 시의 예외 테스트를 추가해주세요"와 같은 요청을 입력한 뒤Enter를 누릅니다. - 재생성 (Regenerate): 생성된 Mock 설계가 프로젝트 표준과 다를 경우 Regenerate 버튼을 눌러 새로운 테스트 구성을 유도할 수 있습니다.
- 프롬프트 커스터마이징 (Customize Prompt): Customize Prompt 옵션을 통해 기본 생성 템플릿을 수정하여, 표준
assertEquals대신 AssertJ의 유연한 단언 방식을 일괄 적용하도록 지시할 수 있습니다.
테스트 파일 저장 및 모듈 연동
검토가 완료되면 Accept all을 클릭하여 테스트 코드를 저장합니다.
- 자동 경로 매핑: 프로젝트 내에 테스트 디렉터리(예:
src/test/java/<package>)가 구성되어 있다면, 어시스턴트가 패키지 경로를 자동으로 감지하여 적절한 테스트 클래스(예:OrderServiceTest.java)를 생성합니다. - 기존 테스트 클래스에 추가: 대상 클래스의 테스트 파일이 이미 존재하는 경우, 기존에 작성된 수동 테스트를 손상하지 않고 새로운
@Test메서드만 안전하게 추가합니다. - 테스트 파일 내에서 직접 확장: 이미 열려 있는 테스트 파일 내에서
Alt+Enter를 누르고 Generate Unit Tests를 실행하면, 추가하고자 하는 테스트 시나리오를 묻는 프롬프트가 표시되고 즉시 새 메서드가 덧붙여집니다.
4. 런타임 오류 및 테스트 실패에 대한 AI 진단
단위 테스트를 실행하거나 애플리케이션을 디버깅하는 과정에서 assertion 실패나 예외가 발생하면 Run 또는 Debug 콘솔 창에 긴 스택 트레이스(Stack Trace)가 출력됩니다.
오류 로그를 외부로 복사할 필요 없이 다음 절차를 이용할 수 있습니다.
- 콘솔의 오류 메시지 또는 실패 지점 옆에 나타나는 Explain with AI 버튼을 클릭하거나 로그 라인을 우클릭하여 Explain Error Message with AI를 선택합니다.
- AI Chat 창이 실패의 근본 원인(배열 인덱스 초과, 모의 객체 반환값 불일치, null 참조 등)을 분석하고 구체적인 코드 패치를 제시합니다.
- Apply를 클릭하여 수정 코드를 원본 파일에 직접 반영하거나, Insert Snippet at Caret을 클릭하여 현재 커서 위치에 코드를 삽입합니다.
5. 개발자를 위한 권장 실천 사항
개발 생산성을 극대화하면서도 코드 품질을 철저히 유지하려면 다음 사항을 염두에 두어야 합니다.
- 생성 직후 반드시 테스트 실행: AI가 생성한 테스트를 컴파일 검증 없이 커밋해서는 안 됩니다. 단축키
Ctrl+Shift+F10또는Shift+F10을 눌러 즉시 실행하고, 존재하지 않는 유틸리티 메서드 호출이나 무의미하게 통과하는 거짓 양성(False Positive) 테스트가 없는지 확인하십시오. - Mock 객체의 유효성 검증: AI Assistant는 Mockito를 자주 사용하여 외부 의존성을 격리합니다. 모의 객체가 반환하는 가상 데이터가 실제 운영 환경의 데이터 규격과 부합하는지 꼼꼼히 검토해야 합니다.
- 메서드 단위의 응집도 유지: 메서드의 복잡도가 낮고 단일 책임 원칙에 충실할수록 AI가 생성하는 설명과 테스트 케이스의 정확도가 비약적으로 향상됩니다. 수백 줄에 달하는 거대 메서드는 먼저 리팩터링으로 분할한 뒤 테스트를 생성하는 것이 좋습니다.