it-swarm-eu.dev

Jak ignorovat určité standardní chyby kódování v PHP CodeSniffer

Máme webovou aplikaci PHP 5 a v současné době vyhodnocujeme PHP CodeSniffer , abychom rozhodli, zda vynucení standardů kódu zvyšuje kvalitu kódu, aniž by způsobovalo příliš mnoho bolesti hlavy. Pokud to vypadá dobře, přidáme předzávazkový háček SVN, abychom zajistili, že všechny nové soubory zavázané na větvi dev neobsahují standardní vůně kódování.

Existuje způsob, jak nakonfigurovat PHP codeSniffer tak, aby ignoroval konkrétní typ chyby? nebo ji nechte považovat za určitou chybu jako varování?

Zde je příklad demonstrující problém:

<!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>

A to je výstup PHP_CodeSniffer:

> phpcs test.php 
 
 ------------------------------ -------------------------------------------------- 
 CHYBA (S) 2 A 1 VÝSTRAHA (S), která ovlivňuje 3 řádky (řádky) 
 ---------------------- -------------------------------------------------- -------- 
 1 | VAROVÁNÍ | Řádek přesahuje 85 znaků; obsahuje 121 znaků 
 9 | CHYBA | Chybějící komentář k dokumentu 
 11 | CHYBA | Řádek je nesprávně odsazen; očekáváno 0 mezer, nalezeno 4 
 --------------------------------------- --------------------------------------------- 

Mám problém s chybou „ řádek odsazený nesprávně “. Myslím, že se to stane, protože smíchám odsazení PHP s odsazením HTML. Ale díky tomu je čitelnější, že? ( s ohledem na to, že nemám zdroje, abych se teď mohl přesunout do rámce MVC ). Chtěl bych to prosím ignorovat.

13
Tom

Našel jsem řešení pro odstranění chyby „ řádek odsazený nesprávně “, ale nejprve bych měl říci, že dragonmantank má vynikající bod - ty neměla by kombinovat PHP a HTML. Je to recept na bolesti hlavy. Bohužel si ale myslím, že míchání PHP a HTML je velmi běžné zejména ve starším softwaru.

Nejrychlejší a nejšpinavější oprava za předpokladu, že používáme výchozí standardy kódování phpcs (které jsou standardy PEAR ), je odstranit příslušný soubor Sniff. Najděte pro mě umístění standardů PEAR pomocí bunt , bylo to tady:

> cd /usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/WhiteSpace

Přejmenujte soubor ScopeIndentSniff.php, takže čich, který kontroluje odsazení kódu, již nebude vykonán:

> Sudo mv ScopeIndentSniff.php ScopeIndentSniff.php.bk

Hotovo - nyní nebude odsazení zkontrolováno a chyba „ nesprávně odsazeného řádku “ 'nenastane ( a váš kód nebude standardní a nebude tak kvalitní! ).


Výše uvedené řešení je docela amatérské - čistším řešením je vytvoření nového standardu kódování, který používá všechny standardy PEAR kromě vašich přizpůsobených třešní. To je velmi rychlé. Zde je návod, jak to provést pomocí getIncludedSniffs() a getExcludedSniffs() a některých phpcs konvencí pro pojmenování:

Go to the directory where the phpcs coding standards are defined:
> cd /usr/share/php/PHP/CodeSniffer/Standards

Create a new directory for your new standard:
> Sudo mkdir PEARish
> cd PEARish

Create your new standard by saving the following in the file:
> Sudo emacs PEARishCodingStandard.php
<?php
class PHP_CodeSniffer_Standards_PEARish_PEARishCodingStandard extends PHP_CodeSniffer_Standards_CodingStandard
{
    public function getIncludedSniffs()
    {
      return array('PEAR');
    }

    public function getExcludedSniffs()
    {
      return array('PEAR/Sniffs/WhiteSpace/ScopeIndentSniff.php');
    }
}
?>

Otestujte svůj nový přizpůsobený standard kódování vyvoláním phpcs pomocí příznaku --standard. Například:

> phpcs --standard=PEARish Test.php

Jakmile to funguje, můžete nastavit nový standard jako výchozí, což znamená, že nemusíte zadávat příznak --standard pokaždé, když použijete phpcs:

> Sudo phpcs --config-set default_standard PEARish

Více informací najdete v phpcs manual .

11
Tom

Budete se potýkat s mnoha problémy se spuštěním PHPCS s vaším kódem PHP smíchaným s HTML. PHPCS je opravdu užitečné, když analyzujete čisté PHP skripty. Vestavěné standardy kódování jsou založeny na čistě PHP, nikoli na smíšeném PHP/HTML.

Jednou z možností by bylo vytvoření vlastního vlastního standardu a jeho použití. Vlastní standard by zohledňoval smíchání kódu, ale pravděpodobně by to byla bolest.

Druhou možností je použití templatingového systému, protože jste řekli, že se nechcete přesouvat do rámce. Smarty a Větvička lze použít i mimo rámec MVC. Přesuňte se k jednomu z nich a pak nechte PHPCS analyzovat pouze soubory .PHP, nikoli soubory šablon.

7
dragonmantank