2017-08-06 4 views
2

Ich arbeite an einer proprietären Legacy-Code-Basis und einige Variablen sind camel-cased, während andere Schlangen-Cased sind. Ich möchte nur Variablennamen mit Kamelen bereinigen und durchsetzen, aber ich finde nicht, dass ich dafür schnüffeln kann. Hier sind die Inhalte meines benutzerdefinierten Regelsatzes.Welcher Sniff muss verwendet werden, um eine CamelCase-Namenskonvention zu erzwingen?

The ruleset.xml standard contains 68 sniffs 

Generic (22 sniffs) 
------------------- 
    Generic.Classes.DuplicateClassName 
    Generic.CodeAnalysis.ForLoopShouldBeWhileLoop 
    Generic.CodeAnalysis.UnconditionalIfStatement 
    Generic.CodeAnalysis.UnnecessaryFinalModifier 
    Generic.CodeAnalysis.UnusedFunctionParameter 
    Generic.CodeAnalysis.UselessOverridingMethod 
    Generic.Commenting.Fixme 
    Generic.Commenting.Todo 
    Generic.ControlStructures.InlineControlStructure 
    Generic.Files.ByteOrderMark 
    Generic.Files.LineEndings 
    Generic.Files.LineLength 
    Generic.Formatting.DisallowMultipleStatements 
    Generic.Formatting.NoSpaceAfterCast 
    Generic.Functions.FunctionCallArgumentSpacing 
    Generic.NamingConventions.CamelCapsFunctionName 
    Generic.NamingConventions.UpperCaseConstantName 
    Generic.PHP.DisallowShortOpenTag 
    Generic.PHP.LowerCaseConstant 
    Generic.PHP.LowerCaseKeyword 
    Generic.WhiteSpace.DisallowTabIndent 
    Generic.WhiteSpace.ScopeIndent 

PEAR (5 sniffs) 
--------------- 
    PEAR.Commenting.InlineComment 
    PEAR.Formatting.MultiLineAssignment 
    PEAR.Functions.ValidDefaultValue 
    PEAR.WhiteSpace.ScopeClosingBrace 
    PEAR.WhiteSpace.ScopeIndent 

PSR1 (3 sniffs) 
--------------- 
    PSR1.Classes.ClassDeclaration 
    PSR1.Files.SideEffects 
    PSR1.Methods.CamelCapsMethodName 

PSR2 (12 sniffs) 
---------------- 
    PSR2.Classes.ClassDeclaration 
    PSR2.Classes.PropertyDeclaration 
    PSR2.ControlStructures.ControlStructureSpacing 
    PSR2.ControlStructures.ElseIfDeclaration 
    PSR2.ControlStructures.SwitchDeclaration 
    PSR2.Files.ClosingTag 
    PSR2.Files.EndFileNewline 
    PSR2.Methods.FunctionCallSignature 
    PSR2.Methods.FunctionClosingBrace 
    PSR2.Methods.MethodDeclaration 
    PSR2.Namespaces.NamespaceDeclaration 
    PSR2.Namespaces.UseDeclaration 

Squiz (26 sniffs) 
----------------- 
    Squiz.Classes.ValidClassName 
    Squiz.ControlStructures.ControlSignature 
    Squiz.ControlStructures.ForEachLoopDeclaration 
    Squiz.ControlStructures.ForLoopDeclaration 
    Squiz.ControlStructures.LowercaseDeclaration 
    Squiz.Functions.FunctionDeclarationArgumentSpacing 
    Squiz.Functions.FunctionDeclaration 
    Squiz.Functions.LowercaseFunctionKeywords 
    Squiz.Functions.MultiLineFunctionDeclaration 
    Squiz.PHP.CommentedOutCode 
    Squiz.PHP.Eval 
    Squiz.PHP.GlobalKeyword 
    Squiz.PHP.Heredoc 
    Squiz.PHP.InnerFunctions 
    Squiz.PHP.LowercasePHPFunctions 
    Squiz.PHP.NonExecutableCode 
    Squiz.Scope.MethodScope 
    Squiz.Scope.StaticThisUsage 
    Squiz.WhiteSpace.ControlStructureSpacing 
    Squiz.WhiteSpace.ObjectOperatorSpacing 
    Squiz.WhiteSpace.OperatorSpacing 
    Squiz.WhiteSpace.PropertyLabelSpacing 
    Squiz.WhiteSpace.ScopeClosingBrace 
    Squiz.WhiteSpace.ScopeKeywordSpacing 
    Squiz.WhiteSpace.SemicolonSpacing 
    Squiz.WhiteSpace.SuperfluousWhitespace 

Antwort

3

Sie werden die Squiz.NamingConventions.ValidVariableName sniff verwenden möchten Variablennamen zu überprüfen.

Dieser Sniff enthält derzeit 5 verschiedene Fehlercodes. 3 von ihnen überprüfen, dass Variablen, Member Vars und Vars innerhalb von Strings alle mit Kamelen besetzt sind. Die anderen 2 Codes erzwingen, dass private Vars mit einem Unterstrich beginnen.

nur sicherstellen, dass Variablen sind Kamel verrohrten, umfassen diese in Ihrem ruleset wenn Sie PHPCS Version 3 verwenden:

<rule ref="Squiz.NamingConventions.ValidVariableName.NotCamelCaps"/> 

Wenn Sie auch Mitglied Vars und String Vars sicherstellen wollen, Kamel Gefasste sind, sind diese, wenn Sie die Version 3 verwenden:

<rule ref="Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps"/> 
<rule ref="Squiz.NamingConventions.ValidVariableName.StringNotCamelCaps"/> 

wenn Sie die ganze Menge wollen, sind dies:

<rule ref="Squiz.NamingConventions.ValidVariableName"/> 

PHPCS Version 2 lässt nicht zu, dass Sie bestimmte Sniff-Codes einschließen, also müssen Sie zuerst den gesamten Sniff einschließen und dann die spezifischen Codes, die Sie nicht wollen, durch Setzen ihres Schweregrades auf 0 ausschließen. Also wenn Sie nur die 3 Kamele wollen -case checks und du verwendest Version 2, setze dies in deinen Regelsatz:

<rule ref="Squiz.NamingConventions.ValidVariableName"/> 
<rule ref="Squiz.NamingConventions.ValidVariableName.PublicHasUnderscore"> 
    <severity>0</severity> 
</rule> 
<rule ref="Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore"> 
    <severity>0</severity> 
</rule> 
+0

Danke für die Antwort. Diese Sniffs gelten nicht für Methodenargumente. Hast du eine andere Lösung? –

+0

@ TomášVotruba sollten sie sich bewerben. Ich habe eine grundlegende Überprüfung des 'Squiz.NamingConventions.ValidVariableName' Sniffs durchgeführt und es werden auch Methodenargumente aufgenommen. Wenn Sie Code haben, der nicht funktioniert, ist es wahrscheinlich am besten, einen Fehler im Projekt zu melden. –

+0

Es ignoriert private Eigenschaften –

Verwandte Themen