Regras do Phpstan para detectar chamadas não permitidas e muito mais, sem executar o código.
Existem algumas funções, métodos e constantes que não devem ser usados no código de produção. Um bom exemplo é var_dump() , ele é frequentemente usado para depurar rapidamente problemas, mas deve ser removido antes de cometer o código. E às vezes não é.
Outro exemplo seria um logger genérico. Digamos que você esteja usando uma das bibliotecas genéricas de registro, mas você tem seu próprio logger que adicionará mais informações ou higienizar dados antes de chamar o logger genérico. Seu código não deve chamar o logger genérico diretamente, mas deve usar seu logger personalizado.
Essa extensão do Phpstan detectará esse uso, se configurado. Deve -se notar que essa extensão não é uma maneira de se defender ou detectar desenvolvedores hostis, pois eles podem ofuscar as chamadas, por exemplo. Essa extensão deve ser outro par de olhos, detectando seus próprios erros, não pretende detectar as coisas.
Os testes fornecerão exemplos o que é detectado atualmente . Se não estiver coberto por testes, pode ser, mas provavelmente não será detectado. *Test.php são os testes, comece com eles, o código de teste analisado está no SRC, é necessário classes de teste no LIBS.
Sinta -se à vontade para arquivar problemas ou criar solicitações de puxar se precisar detectar mais chamadas.
Instale a extensão usando o Composer:
composer require --dev spaze/phpstan-disallowed-calls
O Phpstan, a ferramenta de análise estática do PHP, é um requisito.
Se você usar o Phpstan/Extension-Installer, você estará pronto e poderá pular para a configuração.
Para instalação manual, adicione isso ao seu phpstan.neon :
includes :
- vendor/spaze/phpstan-disallowed-calls/extension.neon Você pode começar com os arquivos de configuração agrupados.
A extensão também suporta regras personalizadas versáteis.
Digamos que você não tenha permitido foo() com regras personalizadas. Mas você deseja repassá-lo quando usado em seu invólucro personalizado, ou quando o primeiro parâmetro é igual a um valor especificado. A extensão oferece várias maneiras de fazer isso:
Os atributos de transmissão usa uma configuração semelhante.
Use o gerador fornecido para gerar um snippet de configuração das diretivas de configuração disable_functions & disable_classes do PHP.
------ --------------------------------------------------------
Line libraries/Report/Processor/CertificateTransparency.php
------ --------------------------------------------------------
116 Calling var_dump() is forbidden, use logger instead
------ --------------------------------------------------------
Nomes de funções, nomes de métodos, nomes de classe, namespaces são correspondidos independentemente de seu caso (não é permitido que print_r encontre chamadas print_R ), enquanto qualquer outra coisa como constantes, nomes de arquivos e caminhos não.
Você também pode usar esta extensão sem nenhuma outra regra do Phpstan. Isso pode ser útil se você quiser, por exemplo, verifique um código de terceiros para obter algumas chamadas ou uso de algo.
Se você deseja contribuir (incrível, obrigado!), Adicionar/executar testes para suas contribuições. Primeiro, instale as dependências de desenvolvimento executando composer install e, em seguida, execute testes de phpunit com composer test , consulte scripts no composer.json . Os testes também são executados no GitHub com ações em cada push.
Você pode corrigir problemas de estilo de codificação automaticamente executando composer cs-fix .
Há um projeto semelhante com uma configuração ligeiramente diferente, criada quase ao mesmo tempo (apenas alguns dias de diferença): o código proibido do Phpstan.