2012-05-14 11 views
7

Sto cercando di convincere il php a usare le linee guida per la codifica di Zend, -but- per permettermi di avere variabili con underscore (come $blub->foo_bar).Set di regole personalizzate per php usando PHPStorm

Qualcuno potrebbe dirmi come modificare il set di regole che phpcs utilizza all'interno di PHPStorm, per favore?

risposta

11

È necessario creare uno standard di codifica personalizzato se si desidera ignorare quelli integrati. Si tratta semplicemente di creare un file XML con la definizione dello standard.

Nel tuo caso, vuoi l'intero standard di codifica Zend, ma non vuoi la particolare regola della convenzione di denominazione sui nomi di variabili. Quindi, è necessario creare un file chiamato mystandard.xml (chiamarlo quello che vuoi e metterlo dove vuoi) e mettere nei seguenti contenuti:

<?xml version="1.0"?> 
<ruleset name="MyStandard"> 
<description>My custom Zend coding standard.</description> 
<rule ref="Zend"> 
    <exclude name="Zend.NamingConventions.ValidVariableName"/> 
</rule> 
</ruleset> 

C'è molto di più si può fare per personalizzare il vostro standard, tra cui portare i controlli da altri standard, sovrascrivere i messaggi o attenuarne alcuni. Puoi dare un'occhiata ai documenti qui: http://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php

Ultimo controllo, PHPStorm non ti ha permesso di usare standard di codifica personalizzati, per qualsiasi motivo. Normalmente, devi semplicemente digitare il nome dello standard come percorso completo del file mystandard.xml. Se PHPStorm continua a non farlo, l'unico modo per ingannarlo è installare effettivamente lo standard personalizzato.

Nota che questo non è qualcosa che normalmente devi fare ed è un po 'complicato. Ma se vuoi provarlo, ecco come lo fai:

  1. Trova dove PHPCS è installato sul tuo sistema. Se non sai dove sia, prova a pear config-show | grep php_dir. PHP_CodeSniffer sarà in una directory qui sotto. Per me, PEAR è installato in /usr/local/PEAR, così PHP_CodeSniffer si trova in /usr/local/PEAR/PHP/CodeSniffer
  2. Creare una nuova directory chiamata MyStandard sotto /usr/local/PEAR/PHP/CodeSniffer/Standards
  3. Mettere il file mystandard.xml direttamente in là, ma rinominarlo in ruleset.xml

Per confermare la tua è stato installato lo standard, eseguire phpcs -i. Si dovrebbe vedere

The installed coding standards are MySource, MyStandard, PEAR, PHPCS, Squiz and Zend 

Ora, PhpStorm mostrerà (si spera) MyStandard come opzione nel menu a discesa. Se non viene visualizzato, probabilmente hanno codificato l'elenco e non ci sarà alcun modo per farlo funzionare senza l'hacking dello standard di codifica Zend direttamente.

Spero che l'informazione ti aiuti a trovare una soluzione. In caso contrario, è sempre possibile eseguire PHPCS direttamente sulla riga di comando utilizzando il vostro standard personalizzato:

phpcs --standard=/path/to/mystandard.xml /path/to/code 
0

L'elenco delle norme non è codificata, è ottenuto da phpcs. L'installazione del proprio standard come descritto sopra farà il lavoro.

+0

Ho trascorso la maggior parte del pomeriggio cercando di farlo funzionare. PHPStorm non caricherà nemmeno l'elenco degli standard installati, le uniche opzioni nelle impostazioni dell'ispettore sono vuote e personalizzate e persino selezionando l'opzione personalizzata l'opzione di convalida non viene mai visualizzata. Posso ottenere phPC per eseguire correttamente CLI, ma sarebbe bello farlo funzionare come prescritto nei documenti per PHPStorm. –

2

È possibile aggiungere il proprio set di regole personalizzato su phpstorm, questo può essere fatto nelle impostazioni del progetto => ispezioni => "Convalida Sniffer codice PHP", utilizzando lo standard di codifica "Personalizzato" e impostare la directory radice del proprio set di regole personalizzato.xml

Problemi correlati