PhpStorm 2023.3의 새로운 기능

주요 업데이트 사항은 다음과 같습니다.

  • 테스트 단계를 마친 AI Assistant
  • Pest 지원
  • PHP 8.3 지원
  • Symfony 지원 개선
  • 삶의 질을 높여줄 개선된 UI

테스트 단계를 마친 AI Assistant 정식 출시

JetBrains의 AI Assistant가 이제 JetBrains IDE에서 생산성을 높이기 위한 여러 가지 새롭고 향상된 기능으로 정식 출시되었습니다.

LLM 기반 코드 완성

LLM 기반 코드 완성

이제 AI Assistant가 여러 줄의 코드 블록을 생성할 수 있습니다. 새 줄에서 입력을 시작할 때 LLM 제안이 있을 경우, 회색으로 표시된 코드 스니펫이 나타납니다. 제안을 수락하려면 Tab을 누르세요.

현재, 이러한 제안은 클래스 컨텍스트 또는 함수 정의 내에서 사용할 수 있습니다.

테스트 코드 생성

테스트 코드 생성

AI Assistant는 클래스 메서드에 대한 테스트도 생성할 수 있습니다. 유닛 테스트를 처리하려는 클래스 메서드에 캐럿을 놓은 상태에서 Alt+Enter를 누르고 AI Assistant를 선택한 다음, Generate Unit Tests(유닛 테스트 생성)을 선택하면 됩니다.

에디터 내 코드 생성

에디터 내 코드 생성

이전에는 AI 채팅을 사용하여 코드 스니펫을 생성할 수 있었습니다. 이 버전에서는 에디터 내에서 바로 프롬프트를 여는 AI Assistant | Generate code(코드 생성)… 액션이 추가되었습니다. 이 액션을 실행하면 생성하려는 코드에 대한 설명을 입력하라는 메시지가 표시됩니다. 설명을 입력하고 나면 AI Assistant가 제안을 제공하고, 제안의 일부 또는 전부를 수락할 수 있습니다.

콘솔에서 AI 기반 오류 설명

콘솔에서 AI 기반 오류 설명

PHP 스크립트나 구성을 실행하거나, Composer 액션을 실행할 때 어떤 이유로 작업이 실패하는 경우가 있습니다. AI Assistant를 사용하면 문제의 근본 원인을 파악하는 데 도움을 받을 수 있습니다. AI가 생성한 설명을 보려면 스택 추적이나 오류 메시지에서 Explain with AI(AI로 설명) 버튼을 클릭하세요.

JetBrains AI Service를 구독하면 PhpStorm의 AI Assistant를 추가 기능으로 사용할 수 있습니다.

Pest 업데이트

PhpStorm now supports the Pest test framework out of the box. We recently agreed with the original author of the Pest plugin to take over its development and bundle it in PhpStorm. You can read the details in our recent blog post.

Pest 테스트

PHPUnit 테스트와 마찬가지로 Pest 테스트도 이제 PhpStorm에서 직접 실행할 수 있습니다. 테스트 내에 캐럿을 놓고 실행 창을 트리거하면 해당 테스트에 대한 실행 구성이 생성됩니다. 특정 테스트 내부가 아니라 파일에 캐럿을 놓아 해당 파일의 모든 테스트를 트리거할 수 있습니다.

어설션

이 새로운 Pest 지원을 사용하면 $this에서 함수나 메서드를 호출하여 어설션을 작성할 수 있습니다. 또한 테스트 함수의 자동 완성 기능이 향상되어 입력할 때 어떤 어설션을 사용할 수 있는지 확인할 수 있습니다.

사용자 지정 기대치

Pest에서는 사용자 지정 기대치를 작성하여 테스트에서 상용구 검사를 줄일 수 있습니다. PhpStorm을 사용하면 사용자 지정 기대치의 사용 위치를 찾고 이름을 바꿀 수 있습니다.

PHP 8.3 지원

PhpStorm 2023.3은 PHP 8.3을 완벽하게 지원합니다. IDE의 변경 사항 중 대부분은 PhpStorm 워크플로에 유기적으로 통합되어 있어 사용자가 이를 알아채지 못할 것입니다. 따라서 여기에서는 변경에 따른 이점을 활용하기 위해 알아야 할 새로운 기능에 대해서만 언급하겠습니다.

Override 속성

#[\Override] 속성

PHP 8.3에는 새로운 #[\Override] 속성이 도입되었습니다. 이 속성은 메서드를 재정의할 때 의도를 명시적으로 나타내는 데 사용할 수 있습니다. PHP 엔진은 #[\Override]로 표시된 메서드가 실제로 상위 메서드를 재정의하는지 여부를 확인하고, 그렇지 않은 경우 예외를 발생시킬 수 있습니다. 이러한 경우, PhpStorm 2023.3에서 사전에 경고를 제공합니다.

Override 속성 제안 추가

또한, PhpStorm에서는 해당하는 경우 #[\Override] 속성을 추가할 것을 제안합니다.

json_validate() 함수 json_validate() 함수

새로운 json_validate() 함수

PHP 8.3은 표준 라이브러리에 새로운 json_validate() 함수를 추가합니다. 이전에는 문자열이 유효한 JSON인지 확인하는 유일한 방법은 문자열을 디코딩하고 오류가 발생했는지 찾는 것이었습니다. PhpStorm은 이러한 패턴을 감지하고 이를 json_validate() 함수 호출로 대체할 것을 제안할 수 있습니다. 이는 문자열을 디코딩하는 것에 비해 메모리를 덜 사용하므로 입력이 유효한 JSON인지 여부만 알아야 하는 경우 유용할 수 있습니다.

타입 지정된 클래스 상수

타입 지정된 클래스 상수

PHP 8.3에서는 클래스 상수의 타입을 선언할 수 있습니다. void, callablenever를 제외한 모든 타입 선언을 사용할 수 있습니다.

타입 지정된 클래스 상수의 경우, PhpStorm은 다음을 제공합니다.

  • 적절한 타입을 삽입하라는 제안
  • 타입 힌트 완성
  • 기본값 타입과의 호환성 검사
  • 하위 클래스에서 상수를 재정의할 때 타입 재선언 검사
중단된 기능 중단된 기능

중단된 기능

PHP 8.3에서 사용이 중단된 몇 가지 기능이 있습니다. 이에 따라 PhpStorm이 중단된 기능을 발견할 수 있도록 검사를 추가했습니다.

Symfony 지원

PhpStorm 2023.3은 Symfony 개발자를 위한 다양한 개선 사항을 제공합니다.

새 프로젝트 마법사

New Project(새 프로젝트) 마법사

Symfony용으로 새로 내장된 프로젝트 이니셜라이저를 사용하면 Welcome(시작) 화면에서 직접 원하는 유형과 버전으로 새 Symfony 프로젝트를 생성할 수 있습니다.

QueryBuilder에서 Doctrine Query Language 지원

QueryBuilder에서 Doctrine Query Language 지원

이제 IDE가 QueryBuilder 메서드 호출 내에서 DQL을 완벽하게 지원합니다. 기능에는 강조 표시, 필드 완성, 타깃 모델 클래스에 대한 해결 기능 등이 포함됩니다.

어노테이션을 Symfony 및 Doctrine에 대한 속성으로 변환

어노테이션을 Symfony 및 Doctrine에 대한 속성으로 변환

Following the introduction of attributes in PHP 8.0, Doctrine annotations are being deprecated and will soon be removed. 이 마이그레이션을 지원하기 위해 PhpStorm 2023.3에는 Doctrine 어노테이션을 속성으로 변환하는 기능이 포함되어 있습니다.

PhpStorm은 또한 Symfony 어노테이션을 #[Required], #[Route]와 같은 해당 속성으로 변환하는 것도 지원합니다.

PHP 관련 기타 업데이트

프로젝트에서 외부 라이브러리 파일을 제외하는 옵션

프로젝트에서 외부 라이브러리 파일을 제외하는 옵션

실험적인 새로운 기능으로, 색인 생성된 라이브러리에서 가져온 디렉터리를 제외하는 기능도 추가했습니다. 프로젝트에서 이러한 파일을 제외하면 다중 정의 문제를 방지하고 색인 생성 성능을 향상시키는 데 도움이 됩니다.

제네릭 타입의 전용 스타일 지정

제네릭 타입의 전용 스타일 지정

제네릭 사용 경험을 개선하기 위한 작업이 계속 진행 중입니다. PhpStorm 2023.3에서는 이제 제네릭에 대한 색상 구분을 설정할 수 있어 제네릭 타입을 구분하기가 더 쉽습니다.

여러 줄의 PHP 속성을 접는 기능

여러 줄의 PHP 속성을 접는 기능

속성 채택이 증가함에 따라 특정 프레임워크에서 여러 줄에 걸쳐진 긴 속성으로 어노테이션이 달린 코드를 읽기 어려울 수 있습니다. PhpStorm 2023.3에서는 이제 여러 줄 속성을 접을 수 있어 이것이 더 이상 문제가 되지 않습니다.

PHPDoc에서 속성으로 PHPUnit 메타데이터 변환

PHPDoc에서 속성으로 PHPUnit 메타데이터 변환

PHPUnit 10 introduced support for attributes for adding metadata to test classes and test methods, as well as tested code units. 이전 PHPDoc 어노테이션에서 이 새로운 스타일로 마이그레이션하는 데 도움이 되는 검사와 빠른 수정을 적용했습니다.

버전 관리 시스템

올인원 Diff 뷰어

PhpStorm 2023.3에는 변경 사항을 검토하는 개선된 방식이 도입되었습니다. 이제 각 파일을 하나씩 살펴보는 대신 스크롤 가능한 단일 프레임에서 변경 세트의 수정된 모든 파일을 볼 수 있습니다. 이 새로운 Diff 뷰어는 Git Log(Git 로그) 도구 창에서 액세스할 수 있으며, 현재 JetBrains Space 리뷰와 함께 작동합니다. GitLab 및 GitHub와의 호환성을 위한 작업도 진행 중입니다.

디버거

디버거

PhpStorm 2023.3의 새로운 Run to Cursor(커서 위치까지 실행) 인레이 옵션을 사용하면 디버깅하는 동안 특정 코드 줄까지 빠르게 실행할 수 있습니다. 프로그램이 일시 중지되면 실행하려는 코드 줄 위로 마우스를 가져간 다음, Run to Cursor(커서 위치까지 실행) 팝업을 사용할 수 있습니다. 원하는 줄에 캐럿을 놓은 후, 키보드 단축키 Alt + F9를 눌러도 동일한 결과를 얻을 수 있습니다.

사용자 인터페이스

기본 보기 모드에서 메인 툴바를 숨기는 옵션

기본 보기 모드에서 메인 툴바를 숨기는 옵션

새로운 UI에 대한 사용자 피드백을 반영하여, 기존 UI와 마찬가지로 IDE의 기본 보기 모드를 사용할 때 메인 툴바를 숨길 수 있도록 했습니다. 툴바를 제거하려면 View(보기) | Appearance(모양)를 선택한 다음, Toolbar(툴바) 옵션을 선택 취소하면 됩니다.

기본 도구 창 레이아웃으로 되돌리는 옵션

기본 도구 창 레이아웃으로 되돌리는 옵션

PhpStorm 2023.1 출시와 함께 여러 도구 창 레이아웃을 저장하고 레이아웃 사이를 전환하는 기능을 도입하여 더욱 쉽게 작업 공간을 사용자 정의할 수 있게 되었습니다. PhpStorm 2023.3에서는 작업 공간의 모양을 기본 상태로 빠르게 되돌릴 수 있는 Default layout(기본 레이아웃) 옵션을 도입하여 이 기능을 확장했습니다. 이 레이아웃은 사용자 지정할 수 없으며 Window(창) | Layouts(레이아웃)을 통해 액세스할 수 있습니다.

기본적으로 색으로 구분된 에디터 탭

기본적으로 색으로 구분된 에디터 탭

에디터에서 다양한 파일 형식을 동시에 더 쉽게 작업할 수 있도록 Project(프로젝트) 도구 창의 색상과 에디터 탭의 색상 코드가 기본적으로 일치하도록 색상 코드를 추가했습니다.

TypeScript 개선 사항

TypeScript 개선 사항

WebStorm 기능이 포함되어 있는 PhpStorm에는 import type 구문을 추가할 때 발생하는 일부 불일치 문제가 해결되어 verbatimModuleSyntax 작업이 더 쉬워졌습니다. TypeScript import type 구문의 종류를 구성하는 옵션을 추가했습니다. 또한 TypeScript 파일에 대한 package.jsonexports 필드 동작을 개선했습니다.

HTML을 JSX에 붙여넣을 때 단일 태그 닫기

HTML 업데이트

이제 HTML 코드를 JSX 파일에 붙여넣으면 PhpStorm이 속성을 변환할 뿐만 아니라 자동으로 단일 태그를 닫습니다. Settings(설정) | Editor(에디터) | General(일반) | Smart Keys(스마트 키) | JavaScript에서 이 옵션을 구성할 수 있습니다.

CSS 사용자 지정 @property 지원

CSS 개선 사항

To support the new @property API for creating custom CSS properties, PhpStorm 2023.3 now offers inspections and completion features for explicitly defining CSS custom properties, allowing you to check and restrict property types, establish default values, and determine inheritance possibilities for custom properties.

Vue 3 관련 개선 사항

Vue 3 관련 개선 사항

defineSlots에 대한 지원을 추가하여 slot 이름에 대한 완성 및 탐색 기능과 Rename(이름 변경) 리팩터링을 제공합니다. 또한 defineExpose를 사용하여 프로퍼티에 대한 완성 지원을 도입했습니다. PhpStorm 2023.3에서는 구성요소에 필요한 가져오기가 defineOptions 함수로 지정된 이름에 따라 추가됩니다.