2012-11-12 9 views
6

Recentemente abbiamo eseguito la migrazione a git e implementato (per ora post) gli hook sul nostro server centrale per inviare report agli sviluppatori, oltre a creare diversi strumenti che ci consentono di verificare automaticamente il nostro standard di codice con phpcs nei nostri ambienti di sviluppo.Posso sovrascrivere il set di regole phpcs usato per file se sì, come?

Questo è tutto bello e dandy, funziona bene, ma vogliamo essere in grado di dipendere sempre dal nostro codice standard, senza ignorare tutti i file che non sono conformi per un motivo logico. Ora abbiamo il nostro set di regole che sovrascrive alcune cose nello standard PEAR predefinito, ma vogliamo andare un po 'oltre, se possibile.

Il nostro problema è che mentre lo standard PEAR è perfetto per tutte le classi/business logic ma nei file di visualizzazione vogliamo allentare le regole per dire, le parentesi di chiusura che devono essere sulla propria linea. Il problema è che in questi file definiamo principalmente html e le uniche strutture di controllo che abbiamo sono semplici istruzioni if-else o foreach e l'apertura di php, quindi l'aggiunta di una nuova riga, la parentesi di chiusura, la nuova riga e la chiusura di php sono un po 'stupide.

sintassi

richiesto di essere valida:

<?php 
} 
// end of some if statement ?> 

quello che avevamo invece piace usare per le viste:

<?php } // end of some if statement ?> 

questo renderebbe il nostro codice più leggibile ...

Noi non mi piace la sintassi alternativa come wel (if(..): ... endif;), afaik principalmente perché anche qui c'erano alcuni problemi di validità (è tutto merito dello spazio bianco ...).

Ignorare l'intero file (con // @codingStandardsIgnoreFile) non è un'opzione per noi.

tl; dr

Quindi ciò che vorremmo fare è definire un set di regole separato per i nostri file vista quindi abbiamo ancora uno standard di aderire a, ma con le regole rilassate su questi fronti quindi il nostro codice può essere reso leggibile

io non sono troppo ben informato phpcs ancora, e non sono riuscito a trovare alcuna soluzione io stesso utilizzando le parole chiave sono però stati logico ... Qualche suggerimento per rendere i file ordinate vista conformi anche ai PEAR sono i benvenuti ...

risposta

6

Se si tratta solo di alcuni messaggi che si desidera escludere da alcuni file, è possibile inserire queste esclusioni direttamente nel file ruleset.xml. Per esempio:

<!-- 
    You can also be more specific and just exclude some messages. 
    Please note that all message-specific ignore patterns are 
    checked using absolute paths. 

    The code here will just hide the ContainsVar error generated by the 
    Squiz DoubleQuoteUsage sniff for files that match either of the two 
    exclude patterns. 
--> 
<rule ref="Squiz.Strings.DoubleQuoteUsage.ContainsVar"> 
    <exclude-pattern>*/tests/*</exclude-pattern> 
    <exclude-pattern>*/data/*</exclude-pattern> 
</rule> 

io non so dove sono memorizzati i file di visualizzazione, ma se si può abbinare utilizzando un modello di esclusione-(fondamentalmente solo un'espressione regolare) allora sarete in grado di rilassarsi un po 'di le regole su di loro.

Il modo migliore per capire che ref = "" bit è eseguire phpcs sui file di visualizzazione e utilizzare l'argomento della riga di comando -s. Per ogni messaggio, otterrai un codice univoco, che potrai utilizzare per aggiungere specifici pattern di esclusione al tuo set di regole.

Ci sono un sacco di altre cose che puoi fare anche nei file del set di regole. Check out the docs here.

+0

Hai dimenticato di menzionare: assicurati di utilizzare PHP_CodeSniffer versione 1.4.2 (l'ultima versione stabile) in quanto c'era un errore di esclusione nella versione 1.4.1. –

+0

Grazie, era praticamente quello che stavo cercando. Ho mantenuto la posizione dei file di visualizzazione intenzionalmente vaga poiché si trovano in posizioni diverse per diversi tipi di progetti. Possiamo capirlo :) – sg3s

+0

Aha! Il "-s" mi ha salvato un sacco di greppie attraverso Sniffs. Grazie :) – markdwhite

Problemi correlati