Releases

PhpStorm 2021.1: превью PHP- и HTML-файлов, 20+ новых инспекций и парное программирование с Code With Me

Read this post in other languages:
English

Рады представить вам первый мажорный релиз PhpStorm в этом году! Ниже подробный разбор всех изменений и новых возможностей.

PHP

  • Превью PHP- и HTML-файлов прямо в редакторе с помощью встроенного браузера и локального интерпретатора PHP.
  • Более 20 новых инспекций для PHP.
  • Основные конфигурации, относящиеся к PHP, теперь находятся на верхнем уровне — в Settings / Preferences.
  • Версия PHP может быть отвязана от требований в composer.json.
  • Автоматическая подсветка синтаксиса в строках SQL, RegExp и т. п. на основе использования переменных.
  • Поддержка динамических имен таблиц с префиксами в SQL-запросах улучшает интеграцию с инструментами базы данных для популярных платформ и CMS.
  • Синтетический скоуп в циклах для улучшения рефакторингов.

IDE

  • Раскрытие вкладок в режиме Split по двойному клику по вкладке.
  • Поддержка JSONPath для улучшенного поиска по большим JSON-документам.
  • Поддержка формата JSON Lines.
  • Настройки типографики в Preferences | Editor | Font.

Docker

  • Автодополнение для образов в Dockerfile.
  • Сворачивание многоступенчатых файлов Dockerfile.

Version Control

  • Мы улучшили поддержку пул-реквестов GitHub — создавать их из IDE стало проще.

Code With Me

  • Новый инструмент JetBrains для парного программирования доступен для пользователей PhpStorm бесплатно. Code With Me предлагает совместное программирование в реальном времени, встроенные аудио- и видеозвонки и мессенджер.

Скачать PhpStorm 2021.1 можно на сайте или в Toolbox App.

Это вкратце, а теперь подробнее обо всем.

PHP

Выбор версии PHP через статусбар

В предыдущем релизе мы добавили индикатор версии PHP в строке состояния. В 2021.1 версию можно менять независимо от той, которая указана в composer.json. Это позволит, к примеру, быстро проверять совместимость кода с более новыми версиями PHP.

Легкий поиск настроек PHP

Большинство настроек, связанных с PHP, теперь доступны в Settings / Preferences | PHP.

Просмотр PHP- и HTML-файлов в редакторе

При наведении на любое место в редакторе в правом верхнем углу появляется всплывающее окно с иконками браузеров. По нажатию на иконку текущий файл откроется в выбранном браузере.

Теперь здесь также появилась иконка PhpStorm. При нажатии на нее файл откроется для предварительного просмотра прямо в редакторе.

Превью работает с HTML- и PHP-файлами, а также со всеми связанными CSS- и JavaScript-файлами.

Откройте файл и начните печатать — во вкладке предварительного просмотра мгновенно отобразятся все изменения.

PhpStorm использует локальный интерпретатор PHP, который можно указать для проекта в Settings/Preferences | PHP. Docker и другие нелокальные интерпретаторы пока не поддерживаются.

Если иконок в редакторе нет, необходимо убедиться, что в разделе Preferences | Tools | Web Browsers выбран хотя бы один браузер и отмечен чекбокс For HTML files.

Также открыть вкладку превью можно комбинацией Alt+F2.

Использование префикса таблиц в SQL-запросах

Многие CMS и фреймворки позволяют задавать префикс для таблиц. Это может быть полезно при использовании одной и той же базы данных для нескольких приложений.

Раньше при этом терялась интеграция с инструментами БД, потому что имена таблиц формировались динамически.

Теперь вы можете указать префикс в файле .phpstorm.meta.php. Подробнее о метафайлах и о том, как указывать префиксы таблиц, можно прочитать на странице хелпа.

Допустим, у нас есть следующий запрос в приложении на Drupal:


Как видите, PhpStorm не может зарезолвить ни имя таблицы, ни имена столбцов. Это происходит потому, что мы указали префикс таблицы в конфигурации Drupal.

Чтобы исправить это, добавим в проект файл .phpstorm.meta.php с вот таким содержимым:

namespace PHPSTORM_META {
override(
// Виртуальная функция для указания замен в SQL-запросах
sql_injectionsubst(),
map([
‘{‘ => "PS2021
", // все { в строках SQL будут заменены на префикс
‘}’ => ”, // все символы } будут заменены пустой строкой
]));
}

Теперь PhpStorm сможет связать SQL-запросы с источниками данных и предоставить вам такие возможности, как автодополнение, переход к просмотру данных и прочее.

Кстати, если запрос формируется через конкатенацию, то это тоже сработает:

<?php
const DBPREFIX = "mydatabase";
$sql = "SELECT * FROM " . DB_PREFIX . ‘table_name’;

Инспекции и квик-фиксы

В этом релизе мы добавили более 20 различных проверок и квик-фиксов, которые помогут предотвратить ошибки на ранних стадиях разработки. Посмотреть полный список инспекций и настроить их можно в Settings / Preferences | Editor | Inspections.

При возникновении проблемы, наведите на нее курсор, нажмите Alt+Enter и выберите предлагаемый быстрый фикс.

А теперь подробнее о некоторых новых инспекциях.

Упрощение блоков if с одинаковыми телами

Некоторые блоки if и else могут оказаться избыточными. Например, вы могли их изменять, в результате чего их тела оказались полностью или частично одинаковыми.

PhpStorm обнаружит такие лишние блоки и предложит их устранить:


Причем, если повторяется только часть тела, PhpStorm предложит извлечь только ее:

Инверсия if

Если нажать Alt+Enter для любого if, вам будет предложена команда “Invert if statement”. Она изменяет условие на противоположное и вносит необходимые коррективы для сохранения логики.

Если вы любите использовать ранний return, то эта инспекция очень пригодится вам при рефакторинге кода.

Например:

В циклах это тоже работает:

Замена isset на ??

Код isset($a) ? $a : $b; идентичен $a ?? $b, поэтому PhpStorm подсветит его и предложит квик-фикс для замены.

Кстати, инспекции можно запускать для всего проекта — так вы сможете применить исправление сразу везде, а не только в открытых файлах.

Для этого выберите в меню Code | Run Inspection by Name… и укажите нужную инспекцию, например isset can be replaced with coalesce. Все найденные использования можно будет поправить непосредственно в результатах поиска.

Замена isset на !== null

Использование isset() имеет смысл только для массивов и переменных. Во всех остальных случаях лучше проверить операнд на null.

PhpStorm подсветит такие места и позволит вам с помощью Alt+Enter заменить isset() на сравнение с null.

Переменная в foreach затирает уже объявленную переменную

Переменные для ключа и значения в цикле foreach могут конфликтовать с именами других переменных или параметров.

Проблема в том, что PHP не имеет для них отдельной области видимости. То есть значение будет переопределено — вероятно, вопреки ожиданиям.

PhpStorm подсветит такие места, потому что это потенциальные источники багов.

Ненужные фигурные скобки для переменных внутри строк

PhpStorm подсвечивает избыточные фигурные скобки в контексте строковой интерполяции, предлагая вам удалить их и сделать код чище.

Упрощение булевых выражений

Если булево выражение содержит литералы true или false, то его наверняка можно упростить и сделать более читаемым.

PhpStorm подсветит такие выражения и позволит вам упростить их, используя Alt+Enter.

Строгое сравнение с несовместимыми типами

Оператор === всегда вернет false, если операнды не совпадают по типу.

Теперь PhpStorm подсвечивает такие места, потому что они могут быть источниками багов. При этом PhpStorm учтет все выведенные типы и поможет найти проблемы в не самых очевидных случаях.

Небезопасные ссылки http://

Использование протокола http:// в строках теперь подсвечивается. IDE предлагает квик-фикс для быстрой замены http:// на https:// (по Alt-Enter). Также с его помощью можно добавить URL в список игнорируемых ссылок.

Подозрительные комбинации имен

PhpStorm подсвечивает некоторые типичные ошибки именования параметров или возвращаемых значений, например $needle и $haystack или $x и $y.

Обычно такие ошибки являются признаком бага либо, как минимум, очень путают.

Замена define на const

PhpStorm выявляет случаи, когда объявление константы через define можно заменить на более легкочитаемый синтаксис const. C помощью Alt+Enter можно сделать замену.

Конфигурация инспекций перед коммитом

Теперь вы можете выбрать профиль инспекций, который будет использован для анализа кода перед коммитом в Git.

Нажмите на значок шестеренки, отметьте чекбокс Analyze code, нажмите Configure и выберите нужный профиль.

Создать свои профили можно в Settings / Preferences | Editor | Inspections.

Прочее

Искусственный скоуп для рефакторинга

Циклы foreach, for, while и блоки catch в PHP не имеют изолированной области видимости. Это довольно неудобно, когда вы переименовываете переменные, потому что при этом также переименовываются переменные и за пределами нужного блока.

В PhpStorm 2021.1 мы добавили искусственный скоуп для всех подобных блоков. Теперь при вызове рефакторинга Rename (Shift+F6) переименование будет более интуитивным.

Улучшение автоматической инъекции языка

Прошлые версии PhpStorm умели определять язык только для аргументов. Например, если вы передавали строку в функцию preg_*, она подсвечивалась как регулярное выражение.

Но вот если вы использовали переменную, то ее значение никак не подсвечивалось.

PhpStorm 2021.1 анализирует использование переменных и умеет автоматически внедрять нужный синтаксис.

Использование расширений из блока suggest в composer.json

В кодовой базе могут быть классы из расширений PHP. До сих пор PhpStorm проверял, добавлены ли эти расширения в секции require в файле composer.json.

PhpStorm 2021.1 учитывает указание расширений не только в секции require, но и в секции suggest.

Еще важнее то, что PhpStorm теперь предупреждает в случае, если расширение было добавлено в suggest в composer.json, но при этом используется без проверок типа extension_loaded() или function_exists().

Специальный квик-фикс позволит добавить расширение в require/require-dev.

Важные исправления

Мы исправили более 2400 тикетов, открытых нашими пользователями и командой JetBrains в трекере PhpStorm. Вот некоторые из самых интересных:

  • Теперь можно отлаживать проекты в WSL 2 через Docker (WI-53396).
  • Quality tools теперь правильно используют пути с docker-compose в exec-режиме (WI-55840).
  • Большие файлы PHP (5000 строк кода и больше) стали обрабатываться корректно (WI-31569).
  • Значительно улучшена производительность для проектов с алиасами (WI-58306).

Code With Me

Code With Me — это новый инструмент JetBrains для совместной разработки и парного программирования. Изначально мы представили его в PhpStorm 2020.3. В этом релизе инструмент был во многом улучшен.

Во-первых, появилась возможность гибко устанавливать права доступа для соучастников.

Во-вторых, теперь гостям даже не понадобится устанавливать IDE — достаточно выполнить консольную команду, и бесплатный клиент скачается автоматически.

В-третьих, добавлены встроенные голосовые и видеозвонки, а также мессенджер.

Энтерпрайз-команды и другие команды с повышенными требованиями по безопасности теперь могут запустить свой сервер Code With Me в приватной сети.

Подробнее о Code With Me читайте на сайте JetBrains.

IDE

Раскрытие вкладок в режиме Split

Открыть одновременно несколько вкладок в режиме Split можно просто перетянув вкладку в нужный угол экрана.

Теперь вы также можете дважды кликнуть по вкладке, чтобы полностью раскрыть ее. Вернуть вкладку в прежнее состояние можно также двойным кликом.

Поддержка JSONPath

Теперь можно использовать запросы JSONPath для быстрого поиска по большим JSON-документам. Возможность доступна в разделе Edit | Find | Evaluate JSONPath.

Поддержка формата JSON Lines

Теперь PhpStorm поддерживает формат JSON Lines для работы со структурированными данными и логами. IDE распознает файлы .jsonl, .jslines, .ldjson и .ndjson.

Настройки типографики

Вы можете варьировать основной и запасной шрифты. Новые опции доступны в разделе Typography Settings в Settings / Preferences | Editor | Fonts.

Docker

Автодополнение имен образов в Dockerfile

Начните печатать имя образа, и PhpStorm предложит вам список образов, доступных на Docker Hub:

Сворачивание в многоступенчатых файлах Dockerfile

При использовании в Dockerfile нескольких секций FROM вы можете свернуть любую из них, и они будут разделены линией для лучшей читаемости.

Cancel Docker run

Вы можете легко остановить исполнение запущенного Dockerfile из окна Services. Выберите Stop Deploy в контекстном меню для запущенного элемента.

Улучшения для пул-реквестов GitHub

Чтобы создать пул-реквест, просто нажмите на значок «+» в окне Pull Requests или перейдите в меню ‎Git | GitHub | Create Pull Request.

В обновленном диалоге можно:

  • Выбирать базовые и head-ветки из списка доступных веток.
  • Просматривать измененные файлы на вкладке Files.
  • Редактировать названия и описания пул-реквестов, назначать ревьюеров и исполнителей, добавлять теги.
  • Создавать черновики пул-реквестов.

PhpStorm 2021.1 также поддерживает шаблоны пул-реквестов. Добавьте файл pull_requst_template.md в проект и укажите в нем текст шаблона — и каждый раз, когда вы создаете новый пул-реквест, это описание будет заполняться автоматически.

Поддержка шаблона для Git-коммитов

При создании сообщения для коммита PhpStorm теперь учитывает шаблон, указанный в параметре commit.template вашей конфигурации Git.

HTTP-клиент

Поддержка SSL

Теперь вы можете указать настройки SSL в HTTP-клиенте. Нажмите кнопку Add environment file и выберите Private. Будет создан файл, в котором вы сможете указать настройки SSL: clientCertificate, hasCertificatePassphrase, clientCertificateKey, verifyHostCertificate.

Улучшения для OpenAPI / Swagger

В PhpStorm есть поддержка спецификаций OpenAPI и встроенный Swagger UI.

Теперь же Swagger UI поддерживает спецификации с внешними файлами, подключенными через $ref.

Инструменты БД

PhpStorm включает встроенные возможности DataGrip: интерфейс для работы с правами доступа, контекстные шаблоны Live Templates, упрощенную навигацию и многое другое. Подробнее об этих возможностях читайте в обзоре релиза DataGrip 2021.1 от наших коллег.

Веб

И как всегда, в PhpStorm вошли все обновления из WebStorm 2021.1: более умное автодополнение для JavaScript и TypeScript, расширенная поддержка Stylelint и другое.


А вот видеоролик (на английском), где мы демонстрируем главные фичи этого релиза:

На этом пока все. Будем рады вашей обратной связи — вопросам, пожеланиям, баг-репортам и просто мыслям. Оставляйте их в комментариях ниже.

Ваша команда PhpStorm
The Drive to Develop

Оригинал статьи опубликован на Habr.com:
https://habr.com/ru/company/JetBrains/blog/552310/

Discover more