Temos um aplicativo da web PHP 5 e atualmente estamos avaliando o PHP CodeSniffer para decidir se forçar os padrões de código melhora a qualidade do código sem causar muita dor de cabeça. Se parecer bom, adicionaremos um gancho de pré-confirmação do SVN para garantir que todos os novos arquivos confirmados no ramo dev estejam livres de odores padrão de codificação.
Existe uma maneira de configurar o codeSniffer do PHP para ignorar um tipo específico de erro? ou fazê-lo tratar um determinado erro como um aviso?
Aqui está um exemplo para demonstrar o problema:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div>
<?php
echo getTabContent('Programming', 1, $numX, $numY);
if (isset($msg)) {
echo $msg;
}
?>
</div>
</body>
</html>
E esta é a saída do PHP_CodeSniffer:
> phpcs test.php -------------------------------------------------- ------------------------------ ENCONTRAR 2 ERROS E 1 ADVERTÊNCIA QUE AFETAM 3 LINHAS -------------------------------------------------- ------------------------------ 1 | ATENÇÃO A linha excede 85 caracteres; contém 121 caracteres 9 ERRO Comentário de documento de arquivo ausente 11 ERRO Linha recuada incorretamente; 0 espaços esperados, encontrado 4 -------------------------------------------------- ------------------------------
Estou com um problema com o erro " Linha recuada incorretamente ". Eu acho que isso acontece porque eu estou misturando a indentação PHP com a indentação HTML. Mas isso torna mais legível, não é? ( levando em consideração que não tenho recursos para migrar para uma estrutura MVC no momento ). Então, eu gostaria de ignorá-lo, por favor.
Respostas:
Encontrei uma solução para remover o erro " Linha recuada incorretamente ", mas primeiro devo dizer que o dragonmantank tem um ponto excelente - você não deve misturar PHP e HTML. É uma receita para dores de cabeça. No entanto, infelizmente, acho que misturar PHP e HTML é muito comum, especialmente em software legado.
A solução mais rápida e suja, assumindo que estamos usando os
phpcs
padrões de codificação padrão (que são os padrões PEAR ), é remover o arquivo Sniff relevante. Encontre a localização dos padrões PEAR, para mim, usando o Ubuntu , foi aqui:Renomeie o
ScopeIndentSniff.php
arquivo para que o sniff que verifica a indentação do código não seja mais executado:Trabalho feito - agora o recuo não será verificado e o erro " Linha recuada incorretamente " não ocorrerá ( e seu código não será padrão e não será de alta qualidade! ).
A solução acima é bastante amadora - a solução mais limpa é criar um novo padrão de codificação que use todos os padrões do PEAR, exceto suas personalizações escolhidas a dedo. Isso é muito rápido de fazer. Aqui está como fazer isso usando
getIncludedSniffs()
andgetExcludedSniffs()
e algumasphpcs
convenções de nomenclatura:Teste seu novo padrão de codificação personalizado chamando
phpcs
usando o--standard
sinalizador Por exemplo:Depois de funcionar, você pode definir seu novo padrão como padrão, o que significa que você não precisa digitar o
--standard
sinalizador sempre que usarphpcs
:Veja o manual do phpcs para mais informações.
fonte
Você encontrará muitos problemas ao executar o PHPCS com seu código PHP misturado com HTML. O PHPCS só é realmente útil quando você analisa scripts PHP puros. Os padrões de codificação embutidos são baseados em PHP puro, e não em PHP / HTML misto.
Uma opção seria criar seu próprio padrão personalizado e usá-lo. O padrão personalizado levaria em conta a mistura de código, mas provavelmente seria difícil escrever.
A outra opção é usar um sistema de modelos, pois você disse que não deseja mudar para uma estrutura. Smarty e Twig podem ser usados fora de uma estrutura MVC. Vá para um desses e faça com que o PHPCS analise apenas os arquivos .PHP, não os arquivos de modelo.
fonte