JetBrains corporate blog
Website development
PHP
Symfony
Laravel
March 29

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



Привет, Хабр!

Рады представить первый мажорный релиз PhpStorm в этом году!
Обзор релиза можно посмотреть на странице “What’s new”. А под катом дополненный перевод этой страницы с демонстрацией самых интересных новых возможностей.

Скачать новую версию можно на сайте или с помощью Toolbox App. Как всегда, доступна 30-дневная пробная версия. Полную же версию могут использовать обладатели действующей подписки на PhpStorm или All Products Pack, а бесплатно — студенты и разработчики проектов с открытым исходным кодом.

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

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


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

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

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

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



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

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


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



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



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


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

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



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



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



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

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



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


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



Более того, такое автодополнение можно сделать у себя в любом проекте/библиотеке/фреймворке, просто добавив специальный файл .phpstorm.meta.php в проект. И таких файлов может быть множество, PhpStorm сам найдет и объединит их.
Например, такие файлы уже есть для Symfony в виде пакета King2500/symfony-phpstorm-meta — он поставляется вместе с плагином Symfony.
Подробнее в посте о новых возможностях .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;
  • При просмотре диффов теперь можно менять панели местами;
  • Пуш с форсом теперь более безопасный, потому что используется флаг --force-with-lease;
  • В диалоге коммита добавлена опция Uncheck all для частичных коммитов — с помощью нее можно отключить все изменения и потом выбрать только нужные:



Улучшения IDE


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



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



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

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

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

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

Спасибо за внимание!
Команда JetBrains PhpStorm
+67
13.3k 66
Comments 23
Top of the day