This document compares the available rules in PHP CodeSniffer (PHPCS) with the rules implemented in this Go-based PHP parser project.
- PHPCS Rules Available: ~300+ rules across 50+ standards
- Project Rules Implemented: 16 total
- Style Rules: 13
- Analysis Rules: 3
- PSR-1: Basic Coding Standard (implemented: 5/5 rules)
- PSR-2: Coding Style Guide (implemented: 2/15+ rules)
- PSR-12: Extended Coding Style Guide (implemented: 8/25+ rules)
- PEAR: PEAR Coding Standards (implemented: 0/50+ rules)
- Zend: Zend Framework Coding Standard (implemented: 0/40+ rules)
- Squiz: Squiz Coding Standard (implemented: 0/100+ rules)
- MySource: MySource Coding Standard (implemented: 0/30+ rules)
Generic.Arrays.DisallowLongArraySyntax- ✅ ImplementedGeneric.Formatting.DisallowMultipleStatements- ✅ ImplementedGeneric.Functions.FunctionCallArgumentSpacing- ✅ ImplementedPSR1.Classes.ClassConstantName- ✅ ImplementedPSR1.Classes.ClassDeclaration.PascalCase- ✅ ImplementedPSR1.Classes.ClassInstantiation- ✅ ImplementedPSR1.Methods.CamelCapsMethodName- ✅ ImplementedPSR12.Classes.ClosingBraceOnOwnLine- ✅ ImplementedPSR12.Classes.OpenBraceOnOwnLine- ✅ ImplementedPSR12.Files.EndFileNewline- ✅ ImplementedPSR12.Files.EndFileNoTrailingWhitespace- ✅ ImplementedPSR12.Files.NoBlankLineAfterPHPOpeningTag- ✅ ImplementedPSR12.Files.NoSpaceBeforeSemicolon- ✅ ImplementedPSR12.Methods.VisibilityDeclared- ✅ Implemented
A.RETURN.TYPE- ✅ Implemented (Return type checking)Generic.CodeAnalysis.AssignmentInCondition- ✅ ImplementedPSR1.Files.SideEffects- ✅ Implemented
Generic.CodeAnalysis.EmptyStatementGeneric.CodeAnalysis.ForLoopShouldBeWhileLoopGeneric.CodeAnalysis.JumbledIncrementerGeneric.CodeAnalysis.UnconditionalIfStatementGeneric.CodeAnalysis.UnnecessaryFinalModifierGeneric.CodeAnalysis.UselessOverridingMethod
Generic.Commenting.DocCommentGeneric.Commenting.FileCommentGeneric.Commenting.FixmeGeneric.Commenting.TodoPEAR.Commenting.ClassCommentPEAR.Commenting.FileCommentPEAR.Commenting.FunctionComment
Generic.ControlStructures.InlineControlStructurePSR2.ControlStructures.ControlStructureSpacingPSR2.ControlStructures.ElseIfDeclarationPSR2.ControlStructures.SwitchDeclaration
Generic.Functions.CallTimePassByReferenceGeneric.Functions.FunctionCallArgumentSpacing(partially implemented)Generic.Functions.OpeningFunctionBraceBsdAllmanPEAR.Functions.FunctionCallSignaturePEAR.Functions.ValidDefaultValue
Generic.Classes.DuplicateClassNamePSR2.Classes.ClassDeclarationPSR2.Classes.PropertyDeclarationSquiz.Classes.ValidClassName
Generic.NamingConventions.UpperCaseConstantNamePEAR.NamingConventions.ValidClassNamePEAR.NamingConventions.ValidFunctionNamePEAR.NamingConventions.ValidVariableNameSquiz.NamingConventions.ValidFunctionNameSquiz.NamingConventions.ValidVariableName
Generic.Files.ByteOrderMarkGeneric.Files.EndFileNewline(implemented)Generic.Files.EndFileNoTrailingWhitespace(implemented)Generic.Files.LineEndingsGeneric.Files.LineLengthPSR2.Files.EndFileNewline(implemented)Zend.Files.ClosingTag
Generic.Metrics.CyclomaticComplexityGeneric.Metrics.NestingLevel
Generic.Operators.ValidLogicalOperatorsPSR2.Operators.OperatorSpacing
Generic.PHP.BacktickOperatorGeneric.PHP.DeprecatedFunctionsGeneric.PHP.DisallowAlternativePHPTagsGeneric.PHP.DisallowShortOpenTagGeneric.PHP.ForbiddenFunctionsGeneric.PHP.LowerCaseConstantGeneric.PHP.LowerCaseKeywordGeneric.PHP.NoSilencedErrorsGeneric.PHP.UpperCaseConstant
Generic.PHP.BacktickOperatorGeneric.PHP.DiscourageGotoGeneric.PHP.EvalExpressionGeneric.PHP.ExecutionOperatorGeneric.PHP.ForbiddenFunctions
Generic.Strings.UnnecessaryStringConcatSquiz.Strings.ConcatenationSpacingSquiz.Strings.DoubleQuoteUsageSquiz.Strings.EchoedStrings
Generic.Variables.VariableNamePSR2.Classes.PropertyDeclaration
Generic.WhiteSpace.ArbitraryParenthesesSpacingGeneric.WhiteSpace.DisallowSpaceIndentGeneric.WhiteSpace.DisallowTabIndentGeneric.WhiteSpace.IncrementDecrementSpacingGeneric.WhiteSpace.LanguageConstructSpacingGeneric.WhiteSpace.ScopeIndentPEAR.WhiteSpace.ObjectOperatorIndentPEAR.WhiteSpace.ScopeClosingBracePEAR.WhiteSpace.ScopeIndentPSR2.WhiteSpace.ObjectOperatorIndentPSR2.WhiteSpace.ScopeClosingBracePSR2.WhiteSpace.ScopeIndentSquiz.WhiteSpace.CastSpacingSquiz.WhiteSpace.ControlStructureSpacingSquiz.WhiteSpace.FunctionClosingBraceSpaceSquiz.WhiteSpace.FunctionOpeningBraceSpaceSquiz.WhiteSpace.FunctionSpacingSquiz.WhiteSpace.LanguageConstructSpacingSquiz.WhiteSpace.LogicalOperatorSpacingSquiz.WhiteSpace.MemberVarSpacingSquiz.WhiteSpace.ObjectOperatorSpacingSquiz.WhiteSpace.OperatorSpacingSquiz.WhiteSpace.PropertyLabelSpacingSquiz.WhiteSpace.SemicolonSpacingSquiz.WhiteSpace.SuperfluousWhitespace
- Files: ~20% implemented (2/10 major rules)
- Classes: ~15% implemented (3/20 major rules)
- Functions: ~5% implemented (1/20 major rules)
- Control Structures: 0% implemented (0/15 major rules)
- Naming: ~5% implemented (1/20 major rules)
- Documentation: 0% implemented (0/15 major rules)
- Security: 0% implemented (0/10 major rules)
- Code Quality: ~15% implemented (3/20 major rules)
- PSR-1: 100% implemented (5/5 rules)
- PSR-2: ~13% implemented (2/15+ rules)
- PSR-12: ~32% implemented (8/25+ rules)
- High Priority: Implement core PSR-2 rules for broader compatibility
- Medium Priority: Add security-focused rules (eval, backticks, etc.)
- Medium Priority: Implement code quality analysis rules
- Low Priority: Add comprehensive documentation rules
- Low Priority: Implement PEAR and Zend standard rules
The Go PHP parser currently focuses on:
- Basic syntax validation
- Return type checking (analysis)
- Fundamental PSR-12 style compliance
- Minimal class and function structure validation
This represents a solid foundation that could be expanded with additional PHPCS-compatible rules as needed.