2017-07-05 2 views
0

Wie finde ich die PHP CodeSniffer Regeln, die ich brauche?Finden von PHP CodeSniffer Regeln

Zum Beispiel würde ich Funktionsargumente und Arrays nicht wie ähnliche

function asd($var, $var2 = '') { 
    $array = [ $arg, $arg2 ]; 
} 

Stattdessen angeordnet werden, um es so sein sollte:

function asd($var, $var2 = '') { 
    $array = [$arg, $arg2]; 
} 

Und ich mag phpcbf in der Lage sein repariere diese, aber ich habe keine Ahnung, wie ich herausfinden soll, welche Regeln das tun.

Antwort

0

Es gibt keine Dokumentation für PHPCS-Regeln (ich werde zu diesem einen Tag), so die einzige Möglichkeit, herauszufinden, welche Regeln Sie benötigen, ist PHPCS über einige Beispielcode ausführen.

Für dieses Beispiel habe ich Ihre Probe schlechten Code in eine temp.php Datei setzen:

<?php 
function asd($var, $var2 = '') { 
    $array = [ $arg, $arg2 ]; 
} 

Dann laufe ich PHPCS über sie die darin enthaltenen Standards. Ich verwende das Befehlszeilenargument -s, um sicherzustellen, dass ich auch die Sniff-Codes sehen kann. Ich bekomme diese Ausgabe:

$ phpcs temp.php --standard=Generic,Squiz,PEAR,PSR2,Zend -s 

FILE: temp.php 
--------------------------------------------------------------------------------------------------------------------------------------------- 
FOUND 17 ERRORS AND 5 WARNINGS AFFECTING 4 LINES 
--------------------------------------------------------------------------------------------------------------------------------------------- 
1 | ERROR | [ ] The PHP open tag does not have a corresponding PHP close tag (Generic.PHP.ClosingPHPTag.NotFound) 
1 | ERROR | [ ] Missing file doc comment (Squiz.Commenting.FileComment.Missing) 
2 | WARNING | [ ] The method parameter $var is never used (Generic.CodeAnalysis.UnusedFunctionParameter.Found) 
2 | WARNING | [ ] The method parameter $var2 is never used (Generic.CodeAnalysis.UnusedFunctionParameter.Found) 
2 | WARNING | [ ] Consider putting global function "asd" in a static class (Squiz.Functions.GlobalFunction.Found) 
2 | ERROR | [ ] Missing file doc comment (PEAR.Commenting.FileComment.Missing) 
2 | ERROR | [ ] Missing function doc comment (Squiz.Commenting.FunctionComment.Missing) 
2 | ERROR | [x] Expected 2 blank lines before function; 0 found (Squiz.WhiteSpace.FunctionSpacing.Before) 
2 | ERROR | [ ] Missing function doc comment (PEAR.Commenting.FunctionComment.Missing) 
2 | ERROR | [x] Expected 0 spaces between opening bracket and argument "$var"; 1 found 
    |   |  (Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterOpen) 
2 | WARNING | [ ] Variable "var2" contains numbers but this is discouraged (Zend.NamingConventions.ValidVariableName.ContainsNumbers) 
2 | ERROR | [x] Expected 0 spaces between argument "$var2" and closing bracket; 1 found 
    |   |  (Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingBeforeClose) 
2 | ERROR | [x] Opening brace should be on a new line (Generic.Functions.OpeningFunctionBraceBsdAllman.BraceOnSameLine) 
2 | ERROR | [x] Opening brace should be on a new line (Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine) 
2 | ERROR | [x] Opening brace should be on a new line (PEAR.Functions.FunctionDeclaration.BraceOnSameLine) 
3 | ERROR | [x] Tabs must be used to indent lines; spaces are not allowed (Generic.WhiteSpace.DisallowSpaceIndent.SpacesUsed) 
3 | ERROR | [x] Short array syntax is not allowed (Generic.Arrays.DisallowShortArraySyntax.Found) 
3 | ERROR | [x] Array with multiple values cannot be declared on a single line (Squiz.Arrays.ArrayDeclaration.SingleLineNotAllowed) 
3 | WARNING | [ ] Variable "arg2" contains numbers but this is discouraged (Zend.NamingConventions.ValidVariableName.ContainsNumbers) 
4 | ERROR | [x] Expected //end asd() (Squiz.Commenting.ClosingDeclarationComment.Missing) 
4 | ERROR | [x] Expected 1 blank line before closing function brace; 0 found 
    |   |  (Squiz.WhiteSpace.FunctionClosingBraceSpace.SpacingBeforeClose) 
4 | ERROR | [x] File must not end with a newline character (Generic.Files.EndFileNoNewline.Found) 
--------------------------------------------------------------------------------------------------------------------------------------------- 
PHPCBF CAN FIX THE 12 MARKED SNIFF VIOLATIONS AUTOMATICALLY 
--------------------------------------------------------------------------------------------------------------------------------------------- 

Time: 84ms; Memory: 8Mb 

Dann wähle ich die Nachrichten, die Sie behalten möchten. Wahrscheinlich diese beiden fixierbar Fehler:

2 | ERROR | [x] Expected 0 spaces between opening bracket and argument "$var"; 1 found 
    |   |  (Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterOpen) 
2 | ERROR | [x] Expected 0 spaces between argument "$var2" and closing bracket; 1 found 
    |   |  (Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingBeforeClose) 

So können Sie versuchen, einschließlich der gesamten Squiz.Functions.FunctionDeclarationArgumentSpacing sniff in Ihrem benutzerdefinierten Standard und sehen, ob Sie die Ergebnisse mögen. Wenn nicht, können Sie nur diese beiden Nachrichten in Ihren Standard aufnehmen und den Rest des Sniffs ignorieren.

Sie werden feststellen, dass für die Leerzeichen am Anfang und Ende Ihres kurzen Arrays keine Fehler gemeldet wurden. Dies sagt mir, dass es bei PHPCS keinen Sniff gibt, der dies prüft, also müssten Sie einen benutzerdefinierten Sniff schreiben, wenn Sie ihn erzwingen wollen.

Dies ist nicht offensichtlich eine schöne Art, diese Informationen und Dokumente zu bekommen wäre viel besser, aber es ist die Art, wie ich herausfinden, welche Sniffs verwendet werden können, um Code zu überprüfen (und wenn ein Sniff verfügbar ist), also dachte ich Ich poste es als Antwort. Hoffentlich hilft es ein wenig.

+0

Danke. Ich habe versucht, meine eigenen Sniffs zu schreiben, konnte aber keine Dokumente darüber finden, wie die API funktioniert. Ich habe es geschafft, einige existierende Sniffs zu knacken, um einige der Sachen zu machen, die ich brauchte, und ich denke, ich mache den Rest mit einem Such- und Ersetzungs-Skript. – user1340531

Verwandte Themen