Files
moko-platform/phpcs.xml
T

71 lines
2.7 KiB
XML
Raw Permalink Normal View History

<?xml version="1.0"?>
<!--
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
This file is part of a Moko Consulting project.
SPDX-License-Identifier: GPL-3.0-or-later
-->
<ruleset name="moko-platform PHP Coding Standards">
<description>PHP_CodeSniffer configuration for moko-platform projects</description>
<!-- Files to check -->
<file>lib</file>
<file>validate</file>
<file>automation</file>
<file>cli</file>
<!-- Exclude vendor and other dependencies -->
<exclude-pattern>*/vendor/*</exclude-pattern>
<exclude-pattern>*/node_modules/*</exclude-pattern>
<exclude-pattern>*/.git/*</exclude-pattern>
<!-- Use PSR-12 as base standard -->
<rule ref="PSR12">
<!-- CLI scripts mix declarations and side effects by design -->
<exclude name="PSR1.Files.SideEffects.FoundWithSymbols"/>
<!-- CLI scripts and utility files often lack namespaces -->
<exclude name="PSR1.Classes.ClassDeclaration.MissingNamespace"/>
<!-- Multiple helper classes per file in lib/ is intentional -->
<exclude name="PSR1.Classes.ClassDeclaration.MultipleClasses"/>
<!-- File header ordering is advisory -->
<exclude name="PSR12.Files.FileHeader.IncorrectOrder"/>
<!-- Heredoc closers must match body indentation (tabs) per PHP 7.3+ -->
<exclude name="Generic.WhiteSpace.DisallowTabIndent.TabsUsedHeredocCloser"/>
</rule>
<!-- Additional rules -->
<rule ref="Generic.Arrays.DisallowLongArraySyntax"/>
<rule ref="Generic.CodeAnalysis.EmptyStatement">
<!-- Allow empty catch blocks (used for intentional suppression) -->
<exclude name="Generic.CodeAnalysis.EmptyStatement.DetectedCatch"/>
</rule>
<rule ref="Generic.CodeAnalysis.UnconditionalIfStatement"/>
<rule ref="Generic.CodeAnalysis.UnnecessaryFinalModifier"/>
<rule ref="Generic.Files.LineLength">
<properties>
<property name="lineLimit" value="120"/>
<property name="absoluteLineLimit" value="150"/>
</properties>
</rule>
<rule ref="Generic.PHP.ForbiddenFunctions">
<properties>
<property name="forbiddenFunctions" type="array">
<element key="eval" value="null"/>
<element key="create_function" value="null"/>
<element key="var_dump" value="null"/>
<element key="print_r" value="null"/>
</property>
</properties>
</rule>
<rule ref="Squiz.PHP.CommentedOutCode"/>
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace"/>
<!-- Show progress and use colors -->
<arg value="p"/>
<arg name="colors"/>
<!-- Show sniff codes in all reports -->
<arg value="s"/>
</ruleset>