PhpStorm 2020.2의 새로운 기능

PHP 8 공용체 유형 지원, 새로운 PHP 제어 흐름 엔진, Extract Class 리팩터링 완벽한 GitHub pull 요청 워크플로 지원, 새로운 Inspections 위젯, OpenAPI 지원을 만나보세요.

PHP 8 공용체 유형

공용체 유형에 대한 지원을 시작으로 PHP 8에 대한 지원을 시작했습니다. PHP 8.0에서는 프로퍼티, 인수, 반환 유형에 대해 둘 이상의 유형을 선언할 수 있습니다. PhpStorm은 이미 이 기능을 완벽하게 지원하므로 사용자가 효과적으로 마이그레이션할 수 있습니다.

PHPDoc을 네이티브 공용체 유형으로 변환

PHPDoc을 네이티브 공용체 유형으로 변환

예전에 공용체 유형은 PHPDoc을 통해 제공되었으나 이제 PhpStorm이 그러한 사용 위치를 강조 표시합니다.

Alt+Enter 빠른 수정을 사용하면 네이티브 공용체 유형으로 변환할 수 있습니다.

이 기능은 함수 인수, 반환 유형, 프로퍼티를 포함하여 공용체 유형을 적용할 수 있는 모든 위치에서 작동합니다. 속성의 경우 디폴트 값도 고려됩니다.

언어 수준을 PHP 8로 전환

언어 수준을 PHP 8로 전환

PHP 8 관련 기능을 사용하려면 다음 중 한 가지 방법으로 언어 수준을 PHP 8로 전환하세요.

  • 코드 에디터에서 Alt+Enter 빠른 수정을 바로 사용합니다
  • Preferences(환경 설정) | Languages & Frameworks(언어 및 프레임워크) | PHP로 이동하여 PHP language level(PHP 언어 수준) 목록을 사용합니다.
  • composer.json에서 PHP 버전 요구 사항을 지정하면 PhpStorm이 자동으로 선택합니다.
유형 유효성 검사 수행

유형 유효성 검사 수행

PhpStorm은 호출을 분석하고 가능한 유형을 계산하며 공용체 유형과 관련된 문제 영역을 강조 표시합니다.

검사는 프로퍼티, 인수, 반환 값의 모든 수준에서 작동합니다.

복잡한 코드 베이스에서도 문제를 한 눈에 파악할 수 있습니다. PhpStorm은 코드가 실행되기도 전에 주의가 필요한 위치를 강조 표시합니다.

중복 및 불필요한 유형 탐지

중복 및 불필요한 유형 탐지

금지되거나 중복되는 유형 조합은 다양하게 있습니다. 다음은 예시입니다.

  • bool|false
  • Foo|Foo
  • object|User
  • iterable|array 또는 iterable|Traversable

이 모든 조합은 PhpStorm에서 유효하지 않은 것으로 강조 표시됩니다.

null 가능 유형 처리

null 가능 유형 처리

null이 가능한 유형이 하나만 있는 경우 PHP 8에서 ?Type 표기나 Type|null을 사용할 수 있습니다.

그러나 null과 결합된 유형이 여러 개 있는 경우 ?Type1|Type2는 모호하기 때문에 사용이 금지됩니다.

PhpStorm은 이러한 위반을 강조 표시하고 Alt+Enter 빠른 수정을 제공하여 해당 위반 항목을 변환합니다.

변화 규칙 준수

변화 규칙 준수

상속하는 동안 PHP는 사용자가 다음 기본 규칙을 따르는 경우 유형을 수정할 수 있도록 허용합니다.

  • 매개변수 유형은 반공변성을 지니므로 확장 가능합니다.
  • 반환 유형은 공변성을 지니므로 좁힐 수만 있습니다.
  • 특성 유형은 동일한 유형으로 평가되어야 합니다.

다행히 PhpStorm은 코드를 검사하고 위반 사항을 강조 표시하므로 PhpStorm을 사용하면 이러한 규칙을 기억할 필요가 없습니다.

의사 유형 false 사용

의사 유형 false 사용

PHP 8에는 공용체 유형 선언에서만 사용할 수 있는 특수한 false 의사 유형이 있습니다.

이는 표준 라이브러리에서 널리 사용되는 것으로, 예를 들어 strpos() 또는 array_search()의 경우 다른 곳에 적용하여 부정적인 결과를 표시할 수 있습니다.

PhpStorm은 올바르지 않은 사용위치를 강조 표시하고, 유형 추론을 고려합니다.

불필요한 PHPDoc 제거

불필요한 PHPDoc 제거

PHPDoc은 네이티브 공용체 유형 선언을 추가한 후, 추가 정보를 제공하지 않기 때문에 불필요하게 될 수 있습니다.

이럴 때 빠른 수정 Alt+Enter를 사용하면 제거할 수 있습니다.

새로운 제어 흐름 엔진

조건이 항상 true

조건이 항상 true

이제 PhpStorm은 복잡한 코드 경로를 분석하고 if-else 블록의 조건이 의미가 있는지 또는 불필요한지 탐지할 수 있습니다.

‘instanceof’ 결과가 항상 true

‘instanceof’ 결과가 항상 true

조건과 유사하게, PhpStorm은 instanceof 검사가 적절한지 또는 유형 계층 구조에서 추론된 유형 때문에 이 검사가 항상 true로 평가하는지 탐지할 수 있습니다.

새로운 액션: Type Info

새로운 액션: Type Info

이 새로운 액션을 사용하면 선택한 표현식의 추론된 유형을 확인할 수 있습니다.

코딩 시 표현식을 선택한 후 단축키 Ctrl+Shift+P 또는 View(보기) | Type Info(유형 정보) 메뉴를 사용해 해당 유형을 확인하세요.

표현식이 항상 ‘null’

표현식이 항상 ‘null’

PhpStorm은 변수가 확실히 null이기만 한 경우를 탐지할 수 있습니다. 이 경우 IDE는 표현식을 단순화하여 더 명확하게 만들도록 제안합니다.

품질 도구 개선 사항

품질 도구 개선 사항
  • Docker Compose를 통해 품질 도구를 실행할 수 있습니다.
    실행하려면 Preferences(환경 설정)/Settings(설정) | Languages & Frameworks(언어 및 프레임워크) | PHP로 이동해 Docker Compose 기반의 새 원격 인터프리터를 추가하세요.
  • 이제 PHP-CS-FixerPHPCBF에 대한 Reformat(서식 다시 지정) 액션을 원격 인터프리터를 통해서도 실행할 수 있습니다.
  • PHP_CodeSnifferruleset.xml"exclude-pattern" 섹션이 있으면 PhpStorm은 이를 고려하여 지정된 경로에 있는 파일을 분석하지 않습니다.

Composer 개선 사항

Composer 종속성 관리는 에디터에서 composer.json 파일 내에 직접 적용할 수 있습니다.

사용자 지정 Satis/Packagist 패키지 지원

사용자 지정 Satis/Packagist 패키지 지원

“repositories” 섹션에 사용자 지정 소스가 지정되어 있으면 사용자 지정 패키지에 대한 코드 완성을 얻을 수 있습니다.

사용자 지정 저장소 캐싱의 현재 상태를 표시하는 여백 아이콘도 생겼습니다.

여러 버전에 코드 완성 지원

여러 버전에 코드 완성 지원

패키지에 쉼표 또는 파이프(||)로 구분된 여러 버전이 있는 경우 PhpStorm은 이 패키지에 사용 가능한 모든 버전에 코드 완성을 제공합니다.

이전에는 ~, ^ 또는 >=를 입력하면 코드 완성이 정상적으로 작동하지 않았지만, 이제 composer.json의 이러한 범위 제약 조건에서 예상대로 작동합니다.

종속성으로 추가된 도구의 설정에 빠르게 액세스

종속성으로 추가된 도구의 설정에 빠르게 액세스

PhpStorm은 타사 도구와의 통합 기능을 풍부하게 제공합니다. 이제 지원되는 도구가 composer.json에서 선언되면 렌치 아이콘이 여백 옆에 표시됩니다. 아이콘을 클릭하면 그에 해당하는 환경 설정 섹션으로 바로 이동할 수 있습니다.

Extract Class(클래스 추출) 리팩터링

Extract Class 리팩터링

클래스가 복잡하고 추가적 역할이 과도하게 부과되어 부담되는 경우 이제 Extract Class(클래스 추출) 리팩터링을 사용해 메서드 및 프로퍼티를 새 클래스로 이동하여 리팩터링할 수 있습니다.

이동하려는 함수, 메서드 또는 특성을 선택하고 Ctrl+T를 누른 다음 Extract class를 선택하세요.

이 리팩터링은 새 파일을 생성하고 생성자에서 클래스의 객체를 인스턴스화하며 사용 위치를 자동으로 조정합니다.

명령줄 도구 개선 사항

명령줄 도구 개선 사항

PHP 명령줄 도구에 원격 인터프리터가 지원됩니다.

Preferences(환경 설정)/Settings(설정) | Tools(도구) | Command Line Tool Support(명령줄 도구 지원)에서 새 도구 항목을 추가하고 구성된 원격 인터프리터 중 하나를 선택하세요.

이제 Laravel Artisan이 자동으로 탐지됩니다. 이에 따라 Laravel 프로젝트를 열 때 Ctrl-Ctrl을 누르고 명령어 입력을 시작할 수 있습니다. 이때 PhpStorm은 코드 완성을 제공하고 사용 가능한 명령어를 제안합니다.

새로운 검사 기능

쓰기 액세스로만 사용되는 배열

쓰기 액세스로만 사용되는 배열

코드 어딘가에 선언되고 업데이트된 배열이 있지만 결코 읽히지 않는다면 해당 배열은 불필요할 가능성이 높으며, 코드에 노이즈가 생깁니다.

이 검사는 이러한 경우를 탐지하여 코드를 정리하기 위해 배열을 제거하라는 메시지를 표시합니다.

대입되지 않았을 수 있는 유형 지정된 속성

대입되지 않았을 수 있는 유형 지정된 속성

유형이 지정된 속성에 디폴트 값이 없으면 초기화되지 않은 것으로 간주됩니다. 초기화되지 않은 특성을 읽으면 TypeError가 생성됩니다(매직 __get()이 정의되지 않은 경우).

PhpStorm은 이렇듯 초기화되지 않은 프로퍼티를 탐지하고 해당 프로퍼티를 읽으려는 코드를 강조 표시합니다.

GitHub pull 요청에 대한 완벽한 지원

Pull 요청 워크플로를 PhpStorm에서 모두 수행할 수 있게 되어 더 이상 브라우저로 전환할 필요가 없습니다. 이제 pull 요청을 관리하고, 타임라인 및 인라인 주석를 확인하고, 주석 및 검토를 제출하며, 변경 내용을 수락할 수 있습니다.

GitHub pull 요청에 대한 완벽한 지원

GitHub 풀 리퀘스트 작업을 시작하려면 툴바 또는 메인 메뉴에서 VCS | Git | View Pull Requests(풀 리퀘스트 보기) 도구 창을 여세요.

그런 다음 목록에서 pull 요청을 선택하여 모든 세부 정보(메시지, 브랜치 이름, 작성자 등)를 확인하세요.

여기에서 변경된 파일을 확인하고 변경 내용에 대해 커밋 및 줄의 수준에서 주석을 달아 검토 프로세스를 시작할 수 있습니다.

IDE를 벗어날 필요 없이 pull 요청을 병합할 수도 있습니다. pull 요청에서 로컬 브랜치를 만들 필요가 없으며 모든 것이 별도 설정 없이 바로 작동합니다.

OpenAPI 지원

PhpStorm 2020.2에서 OpenAPI Specifications 플러그인을 지원합니다. 이는 JetBrains가 개발한 무료 플러그인으로 OpenAPI 사양 파일(openapi.yaml/openapi.json 및 swagger.yaml/swagger.json)에서 코드 완성, 탐색 및 유효성 검사 기능을 제공합니다.

OpenAPI 지원

이 플러그인은 다음과 같은 기능도 제공합니다.

  • Swagger UI 통합 기능
  • 코드 생성.
  • OpenAPI 사양 간 구조 차이를 표시하는 내장된 기능
  • 사양에서 HTTP 클라이언트 요청을 생성할 수 있는 여백 아이콘
  • HTTP 클라이언트의 엔드포인트 자동 완성

새로운 Inspections 위젯 및 Problems 뷰

새로운 Inspections 위젯 및 Problems 뷰

에디터의 오른쪽 상단에 현재 파일의 문제에 대한 요약이 포함된 새로운 Inspections(검사) 위젯이 표시됩니다.

  • 이슈 사이를 이동하려면 화살표를 클릭하거나 단축키 F2 / Shift+F2를 사용합니다.
  • 위젯을 클릭하면 Problems(문제) 도구 창에서 파일의 모든 이슈 목록을 볼 수 있습니다.
  • 위젯을 마우스로 가리키면 설정 팝업이 표시되고 강조 표시할 이슈를 선택할 수 있습니다.

웹 기술

WebStorm 2020.2모든 새로운 기능 및 개선 사항은 PhpStorm 2020.2에서 별도 설정 없이 바로 사용하거나 Plugin Marketplace에서 제공되는 무료 플러그인을 통해 사용할 수 있습니다.

JavaScript 프로젝트에서 Prettier를 디폴트 서식 지정 도구로 설정

내장된 서식 지정 도구가 아닌 Prettier를 사용해 코드를 깔끔하게 정돈하고 싶으신가요? 이번 업데이트로 이 작업이 예전보다 훨씬 간편해졌습니다. 간단히 새로운 On code reformat(코드 서식을 다시 지정할 때)이라는 체크박스를 선택하기만 하면 사용자가 .js, .ts, .jsx, .tsx 파일의 서식을 다시 지정할 때마다 IDE에서 Prettier를 사용합니다. 기타 파일 유형도 쉽게 추가할 수 있습니다.

최고 수준의 Vue.js 지원

Nuxt.js 지원, Vue용 코드 스타일 설정, TypeScript 프로젝트의 Vue 관련 개선 및 기타 수많은 기능이 작년에 추가되었습니다. 지금까지 진행된 PhpStorm의 Vue 지원 중 단연 최고 수준입니다!

JavaScript에 지원되는 새로운 기능으로 시간 절약

새로운 스마트 Alt+Enter 인텐션을 사용하면 일부 액션을 더 빠르게 수행할 수 있습니다. 예를 들어 이제 숫자 색인이 있는 for 루프를 forEach 배열 메서드로 빠르게 변환할 수 있습니다. 에디터에서 바로 렌더링할 수 있어 방해 요소가 최소화되므로 JavaScript 및 TypeScript 파일에서 문서 주석을 살펴보기도 한결 수월합니다.

버전 관리

WSL 2에 설치된 Git 지원

WSL 2에 설치된 Git 지원

PhpStorm 2020.2는 Linux 또는 Windows 파일 시스템에 있는 프로젝트를 작업할 수 있도록 WSL 2에 설치된 Git을 지원합니다.

IDE는 프로젝트의 위치에 따라 Git 실행 파일 사이를 전환할 수 있습니다. 프로젝트가 \wsl$ path를 통해 WSL에서 열리면 IDE가 자동으로 WSL에서 Git으로 전환하므로 사용자가 IDE의 모든 Git 관련 기능을 사용할 수 있게 됩니다.

새로운 브랜치 비교용 UI

두 브랜치를 비교하여 상대 브랜치에 속해 있지 않은 커밋을 확인하려는 경우 PhpStorm 2020.2는 Git 도구 창이 아닌 에디터에 해당 로그를 표시합니다. 그 덕에 모든 정보를 표시하기에 충분한 공간이 확보됩니다.

Git Branches(Git 브랜치) 팝업 메뉴 VCS | Branches(브랜치)에서 Compare with Current(현재와 비교) 액션을 선택하세요.

Drop commit 액션

Drop commit 액션

이제 Git 도구 창의 Log(로그) 탭에서 불필요한 로컬 커밋을 선택하고 컨텍스트 메뉴에서 Drop Commit(커밋 삭제)을 선택하여 해당 커밋을 쉽게 제거할 수 있습니다.

로컬 커밋 스쿼시

로컬 커밋 스쿼시

여러 로컬 커밋을 하나의 단일 커밋으로 결합하여 푸시하기 전에 기록을 정리할 수도 있습니다.

Git 도구 창에서 커밋을 선택하고 컨텍스트 메뉴에서 Squash Commits…(커밋 스쿼시)을 선택하세요.

그러면 IDE가 이면에서 대화식 리베이스를 실행합니다.

데이터베이스 도구

DataGrip 2020.2의 새로운 기능을 살펴보세요. 이 모든 기능이 PhpStorm에도 제공됩니다.

셀 값을 별도의 에디터에서 작업

셀 값을 별도의 에디터에서 작업

이제 셀에 큰 값이 있으면 해당 값을 별도의 패널에서 보거나 편집할 수 있습니다. 오른쪽 툴바를 사용하여 소프트랩 모드를 전환할 수도 있습니다. JetBrains 코드 에디터의 모든 기능을 사용해 데이터를 작업해 보세요.

Google BigQuery 파생 언어

Google BigQuery 파생 언어

Google BigQuery라는 새로운 SQL 파생 언어가 추가되었습니다. BigQuery는 아직 여기에서 완벽하게 지원되는 것은 아니지만, 모든 것은 어딘가에서 시작이 되어야 합니다. 현재 PhpStorm은 Google BigQuery를 사용하는 경우 해당 쿼리를 올바르게 강조 표시하고 코딩 지원을 제공할 수 있습니다.

DML 미리보기

DML 미리보기

데이터 에디터에서 변경 내용을 보여주는 쿼리를 검토할 수 있습니다. 보류 중인 변경 내용이 있는 경우 DML 버튼이 활성화됩니다. PhpStorm은 JDBC 드라이버를 사용하여 테이블을 업데이트하기 때문에 이 쿼리가 데이터를 수정하기 위해 실행되는 정확한 SQL은 아니지만 대부분 동일합니다.

기타 개선 사항

  • getter 및 setter 사용자 지정
  • 하나의 창에서 여러 프로젝트에 대해 Resolve 적용
  • 새로운 액션: Add Carets to Ends of Selected Lines(선택한 줄의 끝에 캐럿 추가)