PhpStorm 2021.1: превью PHP- и HTML-файлов, 20+ новых инспекций и парное программирование с Code With Me
Рады представить вам первый мажорный релиз 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/
The PhpStorm Blog : The Lightning-Smart IDE for PHP Programming | JetBrains Blog
Read More