PhpStorm 2020.1: suporte a composer.json, ferramentas para PHPUnit, cobertura de código com PCOV e PHPDBG, Grazie e mais



Olá Habr! Temos o prazer de apresentar o primeiro grande lançamento do PhpStorm este ano!

Sob o corte, uma análise detalhada de todas as mudanças visíveis e novos recursos. Cuidado - muitas fotos.

PhpStorm 2020.1 Toolbox App. 30- . JetBrains .

composer.json


Todas as ações para trabalhar com dependências agora estão disponíveis diretamente no arquivo composer.jsone funcionam diretamente no editor.

Você pode criar um novo arquivo composer.json no menu de contexto ou usando a tecla de atalho Ctrl(⌘)+N. O modelo para este arquivo está em Preferências / Configurações | Editor Modelos de arquivo e código .



Gerenciando dependências

Para adicionar uma dependência, basta começar a escrever o nome do fornecedor e do pacote, e uma lista de preenchimento automático com as opções apropriadas será exibida. As versões disponíveis deste pacote serão oferecidas



no campo da versão . Por enquanto, um carro (^) ou outro símbolo para indicar um intervalo de versões terá que ser adicionado manualmente, mas em versões futuras, corrigiremos isso.
Para requisitos na versão do PHP ou na presença de extensões, o preenchimento automático também funcionará.

Atualizando e instalando pacotes

Se composer.lockainda não houver um arquivo e nenhum pacote estiver instalado, o PhpStorm destacará o nome da seção requiree require-dev. Para instalá-los, você pode clicar no botão Instalar na barra de ferramentas acima do editor. Ou use a ação de clique rápido Alt(⌥)+Entere selecione Instalar pacotes..



Se nem todos os pacotes estiverem instalados, o PhpStorm destacará os que estão faltando. Em seguida, Alt(⌥)+Entervocê pode chamar qualquer um deles e selecionar Atualizar pacote ou Atualizar todos os pacotes .

Ao lado do requisito da versão especificada, a versão cinza será a versão do pacote que está realmente instalado. E na caixa de diálogo pop-up de pacotes, haverá informações do packagist.org sobre o número de downloads e estrelas.



O PhpStorm pega todas as informações sobre pacotes e suas versões no packagist.org e as armazena em cache.

Navegação para arquivos e pastas

Certamente você sabe disso clicando em Ctrl(⌘)+Clicke Ctrl(⌘)+Bpode ir para a definição de entidades ou procurar seu uso.

Nisso composer.json, também, funcionará. Se você clicar Ctrl(⌘)+Clickem um pacote, o diretório correspondente será destacado na Árvore do Projeto. E se estiver em um arquivo, ele será aberto no editor.



Clicando em Ctrl(⌘)+Clickou Ctrl(⌘)+Bem qualquer link no composer.jsonesperado, ele é aberto no navegador.

Conclusão automáticanas seções de carregamento automático (-dev)
O preenchimento automático com base nas informações das classes e na estrutura de diretórios do projeto funciona para namespaces e caminhos.



Ctrl(⌘)+Clicke Ctrl(⌘)+Bir para arquivos e pastas também funciona aqui.

Melhorias para scripts

Em primeiro lugar, as transições para arquivos / pastas / métodos funcionam da mesma maneira. Em segundo lugar, aliases para equipes são suportados. E em terceiro lugar, os scripts podem ser iniciados no editor pressionando o botão [play] ao lado do nome do script.

Isso cria automaticamente uma configuração de execução. Isso significa que você pode executar novamente o script com uma tecla de atalho Ctrl(⌃)+R, o que é bastante conveniente ao depurar:



Instalando ferramentas de qualidade de código
Se houver dependências de desenvolvimentoFriendsOfPHP/PHP-CS-Fixer, o PhpStorm verificará se a inspeção apropriada está ativada e se o conjunto de regras está instalado. Caso contrário, você pode ligar Alt(⌥)+Enterpara corrigi-lo:



Melhorias de inferência de tipo PHP


O mecanismo de inferência de tipo é a base do PhpStorm, e nesta versão foram feitas algumas mudanças notáveis.

Destaque de tag extravar
Adicionar tags @varé uma boa maneira de informar ao PhpStorm o tipo de uma variável. Mas estamos constantemente aprimorando a inferência de tipo, e algumas dessas declarações podem ser redundantes, porque o PhpStorm já conhece o tipo da variável.

Esses casos serão destacados e podem ser removidos usando a solução rápida Alt(⌥)+Enter-> “Removervar :



Rastrear tipos nulos é uma tarefa difícil, e havia lugares em que o PhpStorm não conseguia lidar com isso. Agora, em 2020.1, o PhpStorm sabe quando uma variável pode ser nula e quando não.

Aqui estão alguns exemplos:



Preenchimento automático de uma matriz inicializada

Digamos que você tenha uma matriz com elementos conhecidos e, posteriormente, tente iterá-la. Anteriormente, o preenchimento automático não funcionava aqui, pois as informações de tipo foram perdidas.Em 2020.1, tudo funciona:



preenchimento automático em array_map / array_filter.No

corpo do fechamento, que é passado para as funções array_map () e array_filter (), o complemento para argumentos agora funciona.



Cobertura de código usando PCOV e PHPDBG


Você pode criar uma cobertura de código com o Xdebug . Mas como esse é principalmente um depurador, ele possui uma sobrecarga decente. Para acelerar a obtenção de um relatório de cobertura, você pode usar ferramentas mais leves: a extensão krakjoe / pcov ou o PHPDBG embutido no PHP 5.6+.

Ambos agora são suportados no PhpStorm. Você precisa criar uma configuração de execução para os testes e selecionar o driver de cobertura desejado nas configurações. Em seguida, execute os testes com o cálculo da cobertura clicando no botão :



Leia mais sobre as diferenças no cálculo da cobertura entre Xdebug, PCOV e phpdbg no README .

Kit de Ferramentas PHPUnit


No recentemente lançado PHPUnit 9 (e já no 9.1), muitos recursos foram removidos ou preteridos. Para acelerar a migração e evitar erros, adicionamos várias inspeções e correções rápidas.



Crie um novo teste para a classe

Chamando Alt(⌥)+Entera declaração de classe e selecionando Create New PHP Test, você pode obter rapidamente o esqueleto para o teste.



Metadados


Os metadados no arquivo .phpstorm.meta.phppermitem ao PhpStorm fornecer informações adicionais sobre o seu projeto e, assim, melhorar a conclusão do código. Por exemplo, esse recurso é usado no plug - in Symfony e no Laravel IDE Helper .

Você pode aprender mais sobre os recursos de metadados em um relatório PHP como uma ferramenta de desenvolvimento para o PhpStorm no PHP Russia 2019.

O PhpStorm 2020.1 adicionou uma série de melhorias para os metadados.

Parâmetro directivas índice de substituição, mapa, e tipo

Antes de usar override(), map()e type()você pode alterar o comportamento das primeiras funções argumento. No PhpStorm 2020.1, você pode especificar um índice de parâmetro arbitrário:



Acesso às propriedades por meio de __get

Se você recebeu valores de propriedades por meio de magia __get(), as informações sobre o tipo foram perdidas. Foi possível usar tags adicionais @varou @property, mas isso nem sempre foi salvo. Agora você pode especificar tudo através de metadados.



Auto-conclusão de chaves em objetos de aplicação ArrayAccess

Metadados suportado ArrayAccess objetos, mas sugeriu apenas o tipo de valores. Agora, as chaves possíveis também são preenchidas automaticamente.



Pontos de saída personalizados O

PhpStorm considera funções de tipo die()e / exit()ou lança exceções para concluir a execução. Mas os aplicativos podem ter pontos de saída mais complexos. Por exemplo, dd()função simples ou trigger_error com o argumento E_USER_ERROR .

No PhpStorm 2020.1, você pode marcar funções como pontos de saída, e isso ajustará a análise de fluxo de acordo.



Ícones para funções redefinidas por meio de metadados Ao

contrário das declarações de funções cujo comportamento foi alterado com override(), exitPoint()ou expectArguments(), um ícone será exibido. Clicar no ícone abrirá um arquivo .phpstorm.meta.phpno qual o comportamento muda, pois pode haver vários arquivos.



Os ícones podem estar ocultos em Preferências / Configurações | Editor Geral Ícones de calha .

Aprendizado de máquina para classificar a lista de complementos


Adicionado ranking de opções de preenchimento automático com base no aprendizado de máquina.

Como ver o ML em ação?

O preenchimento automático com ML está desativado por padrão. Não queremos que robôs roubem nosso trabalho! Para habilitá-lo, vá para Preferências / Configurações | Editor Geral Conclusão de código e ative as opções Classificar sugestões de conclusão com base no Machine Learning e PHP .

Se você também ativar a opção Mostrar mudanças de posição no pop-up de conclusão , a lista de preenchimento automático mostrará como a ordem dos elementos foi alterada.



Planejamos impedir que a revolta de carros continue a trabalhar nessa direção em versões futuras.

Novas inspeções


Uma propriedade privada pode ser uma variável

local.Uma definição de propriedade será destacada se for usada em apenas um método e for imediatamente substituída nela. Para corrigir, você pode chamar a correção rápida Alt(⌥)+Enter “Substituir propriedade pela variável local” .



Inicialização de propriedade extra

Suponha que uma propriedade privada tenha um valor padrão em uma classe, mas no construtor ela é imediatamente substituída por outro valor. Nesse caso, o valor padrão é redundante e adiciona apenas ruído.

Um inicializador não utilizado será destacado e poderá ser removido com uma solução rápida Alt(⌥)+Enter “Remover inicializador redundante” .



Altere o tipo de propriedade no PHP 7.4 para o valor padrão



Operador ternário redundante

O PhpStorm destacará expressões ternárias triviais e, com uma solução rápida, Alt(⌥)+Entervocê poderá substituí-las por expressões mais simples:



Transferência redundante por referência O

uso da transferência por referência pode levar a consequências inesperadas, e esse é um dos motivos pelos quais Nikita Popov sugeriu permitir a transferência explícita por referência quando chamada funções em PHP.

Enquanto isso, o PhpStorm 2020.1 destacará os parâmetros declarados como passados ​​por referência, mas não usados ​​como tais. Eles podem ser removidos com segurança com solução rápida Alt(⌥)+Enter.



O mesmo funcionará para matrizes com um link no loop foreach:



Remova o PHPDoc extra , no qual apenas a declaração de tipo agora também é bastante simples, graças à correção rápida correspondente.



Verdadeiro, por padrão, a inspeção está no nível Informações , ou seja, não será destacada. Se você deseja destacar os blocos redundantes do PHPDoc, inspecione o comentário redundante do PHPDoc em Preferências | Editor Inspeções, defina o nível de Aviso fraco ou superior.

Refatoração atualizada "Método de movimentação"


Às vezes, pode ser necessário transferir um método para outra classe. Se esse método for usado várias vezes no código do projeto, o PhpStorm pode ajudar aqui.

Antes, era necessário primeiro tornar o método estático e depois chamar outra ação para transferi-lo. No PhpStorm 2020.1, a refatoração “Move method” foi retrabalhada em uma única ação atômica. Foram removidas etapas extras e pop-ups, e tudo é feito de uma só vez.

Passe o mouse sobre um método e pressione F6(ou Ctrl+T, 3). Em seguida, selecione a classe de destino e pronto.



Para ver todas as refatorações disponíveis , você pode clicar Ctrl+Tem qualquer lugar do código.

Depuração do PHP no cliente HTTP


Agora, para ativar seletivamente a depuração, você não precisa se preocupar com os parâmetros de solicitação ou instalar a extensão no navegador. Basta criar uma solicitação HTTP em um arquivo .httpe enviá-la com o comando PHP Debug , disponível no menu Alt(⌥)+Enterou clicando no ícone Como resultado, um cookie será adicionado automaticamente à solicitação XDEBUG_SESSION.



E mais algumas coisinhas para PHP


@ elementos obsoletos são exibidos como riscados na visualização em árvore da estrutura
Ctrl(⌘)+F12



Destacando tags correspondentes <? php /?>



Vá para o suporte de abertura / fechamento

Shift+Ctrl+M (⌃+M)



Personalização do Lexer para Twig

Às vezes, pode ser necessário alterar os caracteres de tag dos modelos Twig, por exemplo, se você também usar Angular, que possui mesma sintaxe.
Você pode fazer isso nas Preferências / Configurações | Idiomas e estruturas | PHP Twig .

IDE


Ortografia e gramática avançadas Grazie


O plug-in Grazie está incluído no PhpStorm imediatamente, que verifica o texto não apenas em busca de erros de ortografia, mas também em gramática e estilo. Além disso, 16 idiomas são suportados e todas as verificações são realizadas localmente, sem enviar seus dados para qualquer lugar.



Por padrão, as verificações são ativadas para arquivos Markdown.
Você também pode incluí-los para todos os literais de string, comentários, blocos PHPDoc e enviar mensagens.

Para PHP, você pode ativar em Configurações / Preferências | Editor Revisão | Gramática .

Modo LightEdit


Às vezes, você precisa procurar / corrigir rapidamente o arquivo e abrir um IDE inteiro para isso, parece demais, mas você deseja ter a luz de fundo e as funções usuais. É nesses casos que estamos trabalhando no modo LightEdit leve.

Funciona assim: se você abrir o arquivo na linha de comando ou no menu de contexto do sistema operacional, enquanto o PhpStorm não estiver em execução, o arquivo será aberto no LightEdit. Bem, se um PhpStorm completo já estiver funcionando, o arquivo simplesmente será aberto nele.



JetBrains Mono - fonte padrão




Modo Zen


O novo modo combina Distraction Free e Fullscreen para uma imersão profunda no código.
Ver | Aparência Entre no modo Zen



Interface


Janela do terminal dividida


Em vez de abrir novas guias e alternar entre elas, agora você pode dividir a tela e abrir várias sessões em uma guia. Para fazer isso, selecione Dividir horizontal / verticalmente no menu de contexto do terminal . Tema



IntelliJ Light

O tema light foi ligeiramente atualizado e unificado para ter a mesma aparência em todos os sistemas operacionais, e seu nome foi alterado para IntelliJ Light .

Personalização da barra de status

No menu de contexto, você pode escolher quais informações serão exibidas nele.



Configuração


Configuração SSH unificada


Anteriormente, se uma conexão SSH era reutilizada em uma implantação, intérprete remoto ou terminal SSH, ela precisava ser reconfigurada a cada vez.

Agora todas as conexões SSH podem ser adicionadas / editadas em Preferências / Configurações | Ferramentas | Configuração SSH e, em seguida, use-as repetidamente onde forem necessárias.



O caminho para as configurações do IDE mudou


Por exemplo, no macOS:
- ~/Library/Preferences/PhpStorm2019.3
+ ~/Library/Application Support/JetBrains/PhpStorm2020.1


Mais na ajuda .

Caminho personalizado para salvar configurações de execução


Anteriormente, as configurações de execução eram armazenadas em uma pasta .ideaque muitos adicionavam completamente ao .gitignore (melhor assim ). Agora você pode escolher qualquer caminho e compartilhar a configuração de execução com os colegas por meio do sistema de controle de versão.

Pode ser especialmente conveniente ao integrar novos funcionários: iniciou um projeto, aberto no PhpStorm, lançado com um botão.

Para fazer isso, na caixa de diálogo Configuração de execução / depuração, é necessário selecionar a opção Armazenar como arquivo de projeto e, clicando na engrenagem, você pode selecionar o caminho desejado no projeto.



Controle de versão


Novo compromisso


A janela Confirmar está disponível no modo não modal e é exibida à esquerda. Portanto, ele não bloqueia o trabalho em outros arquivos durante a preparação da confirmação e mais informações sobre as alterações são colocadas na tela.

O novo Commit é ativado por padrão para novos usuários e desativado para aqueles que já possuem o PhpStorm instalado.

Ativado pela opção Usar interface de confirmação não modal em Preferências / Configurações | Controle de versão | Confirmar .



Aprimoramentos do Git Branch


No canto inferior direito da janela do IDE, a ramificação Git atual é indicada. Se você clicar nele, o VCS | Git Um galhos .
Aqui nós adicionamos um campo de pesquisa. O botão Atualizar atualiza a lista de ramificações remotas. E para cada confirmação, é adicionado um indicador: de entrada (azul) ou de saída (verde).



Rebase interativa reprojetada


O Git Rebase permite reescrever o histórico de confirmações. Agora você pode se livrar rapidamente de confirmações "temporárias", corrigir a mensagem ou a ordem das confirmações. Obviamente, tudo isso pode ser feito manualmente no console, mas o PhpStorm permite que você veja imediatamente o que foi alterado em um commit específico.

Para começar, no histórico de confirmações, é necessário selecionar a confirmação básica desejada e selecionar Rebase interativamente daqui, no menu de contexto .



DB Tools


O PhpStorm inclui quase todos os recursos do DataGrip imediatamente , para que você possa ver a revisão do DataGrip 2020.1 lançada por nossos colegas.

Rede


E, como sempre, todas as atualizações do WebStorm 2020.1 também estão incluídas no PhpStorm.

Uma lista completa de alterações pode ser encontrada nas notas de versão muito grandes .

Você também pode assistir à visão geral do lançamento na página " O que há de novo " e, se tiver apenas alguns minutos, aqui está um pequeno vídeo (em inglês) com uma demonstração dos principais recursos do lançamento:



E isso é todo esse tempo. Obrigado por ler até o fim! Teremos o maior prazer em perguntas, desejos, relatórios de bugs e apenas pensamentos nos comentários.

Se cuida!
Sua equipe do JetBrains PhpStorm

All Articles