Хабрахабр

PhpStorm 2019.1: Отладка шаблонов Twig и Blade, поиск мертвого кода, улучшенное автодополнение, и многое другое

А под катом дополненный перевод этой страницы с демонстрацией наиболее интересных новых возможностей.
Скачать новую версию можно на сайте или с помощью Toolbox App. Мы рады представить вам первый мажорный релиз PhpStorm в этом году!
Обзор релиза можно посмотреть на странице “What’s new”. Полную же версию могут использовать обладатели действующей подписки на PhpStorm или All Products pack, а также бесплатно студенты и разработчики проектов с открытым исходным кодом. Как всегда, доступна 30-дневная пробная версия.

Вот наиболее интересные из них. Всего в релизе было исправлено 1118 багов и добавлено множество новых фич.

Отладка шаблонов Twig и Blade

Благодаря отладчику можно быстро разобраться с самым заковыристым багом, но вот чтобы найти проблемы в шаблонах, придется пробираться через дебри машинно-генерированного кода. В PhpStorm 2019.1 мы добавили возможность отлаживать оригинальные нескомпилированные файлы шаблонов .twig и .blade.php .

Все, что нужно – это указать путь к скомпилированным шаблонам (кэшу) в настройках IDE: Languages & Frameworks | PHP | Debug | Templates дляTwig или Blade.

8. В случае с Twig нужно также указать опции debug и auto_reload в конфигурации.
А для Blade все будет работать автоматически, но только начиная с версии Laravel 5.

Выполнение остановится в указанном месте, и будут доступны все привычные возможности отладки: пошаговое выполнение, локальные и глобальные переменные, отслеживание значений (watch) и все остальное. После этого можно включать отладчик и ставить брейкпоинт прямо в шаблоне.

Кстати об отладке, мы активно поддерживаем автора Xdebug Derick Rethans, для того чтоб улучшить отладчик, решить накопившиеся проблемы, и расширить возможности его использования в PhpStorm.

Обнаружение “мертвого кода”

PHP в этом году исполняется 24 года и не удивительно, что часто приходится сталкиваться с легаси-кодом. Первое, что хочется сделать – это подчистить и удалить лишнее. Новая инспекция “Unused declaration” как раз поможет в этом деле.
PhpStorm 2019.1 может на лету анализировать ваш код и подсвечивать прямо в редакторе те классы, члены классов, и функции, которые, вероятно, нигде не используются.

Для этого надо вызвать меню Code -> Run Inspection by Name и выбрать инспекцию Unused Declaration inspection. Также можно найти все неиспользуемые элементы в пакетном режиме. В результате вы получите отчет со списком всех проблем с описанием и быстрыми исправлениями.

Новые рефакторинги и быстрые действия

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

Например, там уже есть конвертация из/в NOWDOC/HEREDOC, замена кавычек, разделение строки на две с конкатенацией.
А в этом релизе мы добавили еще несколько удобных штук – копирование конкатенированной строки в буфер, замена конкатенации строк интерполяцией или вызовом функции sprintf() и, соответственно, обратные действия: Манипулирование строками
Если нажать Alt+Enter на любом строковом выражении, вы увидите целый список доступных преобразований.

Удаление неиспользуемых переменных
Новая инспекция обнаружит и позволит удалить неиспользуемую переменную в операциях присваивания и конструкциях use в замыканиях.

PhpStorm при этом обновит все вызовы этих функций. Рефакторинг Move to Class
С помощью этого рефакторинга можно безопасно перемещать функции из PHP-файлов в классы.

Надо выбрать желаемые функции в окне Structure и затем вызвать рефакторинг Move to Class. При наведении порядка может понадобиться переместить сразу несколько функций – это PhpStorm тоже поддерживает.

У таких методов будет доступно контекстное действие – можно нажать Alt-Enter и выбрать “Make static”. Инспекция Method May Be ‘static’
Эта инспекция обнаружит методы, которые можно преобразовать в статические, то есть те, в которых нет использования экземпляра класса. Как полагается, все вызовы будут исправлены автоматически.

Улучшенные механизмы автодополнения

С помощью файла .phpstorm.meta.php можно подсказывать IDE, какие аргументы ожидаются в функции или какие значения она может возвращать. PhpStorm будет использовать эту информацию для автодополнения.
Скажем функция ожидает в качестве аргумента какую-то константу. Формально тип этой константы, допустим, integer, но в действительности набор возможных констант нам известен.
Например, json_encode($data, /* вот тут битовая маска из констант JSON_* */)
Также у нас может быть функция, которая возвращает константу, как например json_last_error().
В PhpStorm 2019.1 автодополнение для этих и многих других встроенных функций уже работает из коробки:

И таких файлов может быть множество, PhpStorm сам найдет и объединит их.
Например, такие файлы уже есть для Symfony в виде пакета King2500/symfony-phpstorm-meta – он поставляется вместе с плагином Symfony.
Подробнее в посте о новых возможностях .phpstorm.meta.php. Более того, такое автодополнение можно сделать у себя в любом проекте/библиотеке/фреймворке просто добавив специальный файл .phpstorm.meta.php в проект.

Оптимизации импортов

Была несколько переработана система анализа и исправления импортов. Теперь, где это возможно, PhpStorm будет предлагать заменить полное имя класса импортом или удалить его вовсе, если оно избыточно.
Также добавлена возможность сортировать выражения use по алфавиту или по длине

Инструмент очистки кода Code Cleanup

Этот инструмент позволяет осуществлять безопасные преобразования в пакетном режиме. Например, во всем проекте сразу, или в определенной директории и т.д.
В PhpStorm он был доступен давно, но только в 2019.1 в нем были добавлены возможности для PHP. Прежде всего это поддержка двух инструментов для исправления стиля кодирования: PHP CS Fixer и phpcbf из PHP_CodeSniffer. А также две инспекции для оптимизации импортов из предыдущего пункта.

Этом инструмент можно запускать в любое время вручную или перед коммитом просто поставив соответствующую галочку в диалоге коммита:

Переиспользование Docker-контейнеров

Добавлена поддержка запуска Docker-контейнеров в режимах docker-compose run и docker-compose exec. Первый режим подойдёт для легковесных контейнеров, которые останавливаются сразу после запуска. Второй позволяет переиспользовать запущенные контейнеры без необходимости перезапуска.

Среди других улучшений:

  • Гибкие настройки PHPDoc: можно настраивать порядок элементов и отступы в Preferences | Editor | Code Style | PHP вкладка PHPDoc;
  • Очищен шаблон PHP-файлов по умолчанию – больше никакого “Created by PhpStorm”;
  • Новое быстрое действие для добавления свойства класса в конструктор;
  • Можно включить строгий режим глобально,
    даже если в файлах нет директивы declare(strict_types = 1);

VCS

В системе контроля версий сделано много полезных улучшений:

  • В Git log добавлены действия Fixup, Squash, и Cherry-pick;
  • При просмотре диффов теперь можно менять панели местами;
  • Пуш с форсом теперь более безопасный, потому что используется флаг --force-with-lease;
  • В диалоге коммита добавлена опция “Uncheck all” для частичных коммитов – с помощью нее можно отключить все изменения и потом выбрать только нужные:

Улучшения IDE

Диалог Recent Locations
Большую часть времени при работе над задачей разработчикам приходится читать код, а не писать. Поэтому быстрая навигация между файлами всегда очень актуальна. В PhpStorm уже были попап Search Everywhere (Shift-Shift), Закладки и Избранное (Cmd+2 / Alt+2), переход по истории вперед и назад (Cmd+[ Cmd+] / Ctrl+Alt+Left Ctrl+Alt+Right), или просмотр последних файлов (Cmd+E / Ctrl+E).
В PhpStorm 2019.1 мы добавили еще одну интересную возможность – диалог Recent Locations (Cmd-Shift-E / Ctrl+Shift+E), который покажет последние куски кода, которые вы просматривали или редактировали. Это может пригодиться, если вы хотите быстро переместиться по истории и видеть контекст, чтобы понять куда именно.

Если вы хотите попробовать что-то свежее, то установите одну из новых тем: Dark Purple, Gray или Light Cyan. Новые темы
PhpStorm поставляется с тремя темами: Light, Darcula и High Contrast. Подробнее – в документации. Также теперь темы можно создавать и самостоятельно, при этом есть возможность задавать цвет любого элемента или иконки.

Вы также можете задать другие типы файлов в настройках Preferences | Editor | General | Soft-wrap files. Soft-wraps в зависимости от типа фала
Если вы часто работаете с markdown или текстовыми файлами, то теперь перенос строк для них будет включен автоматически.

PhpStorm как всегда включает в себя все обновления из WebStorm:
Документация CSS-свойств, HTML-тегов и поддержки браузеров теперь берётся из MDN и содержит ссылки на соответствующие статьи, улучшилась поддержка TypeScript во Vue-приложениях, добавилось 17 новых инспекций для Angular-приложений, а в панелях отладчиков JavaScript и Node.js появились новые интерактивные консоли.

… и из DataGrip:
Теперь дополнительно поддерживаются Greenplum, Vertica, Apache Hive; появилась возможность выбрать папку проектов по умолчанию; а также улучшились средства автодополнения конструкций и атрибутов.

Но это далеко не все, что вошло в релиз. Пожалуй, это все, о чем мы хотели бы вам рассказать. Полный список изменений, как всегда, можно найти в очень большом release notes.

Спасибо за внимание!
Команда JetBrains PhpStorm

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть