1<?xml version="1.0"?>
2<ruleset
3    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4    xsi:noNamespaceSchemaLocation="vendor/squizlabs/php_codesniffer/phpcs.xsd"
5>
6    <arg name="basepath" value="."/>
7    <arg name="extensions" value="php"/>
8    <arg name="parallel" value="80"/>
9    <arg name="cache" value=".phpcs-cache"/>
10    <arg name="colors"/>
11    <arg value="nps"/>
12
13    <file>src/</file>
14    <file>tests/</file>
15
16    <rule ref="Doctrine">
17        <exclude name="Generic.Formatting.SpaceAfterNot"/>
18        <exclude name="Generic.Formatting.MultipleStatementAlignment"/>
19
20        <exclude name="Squiz.Arrays.ArrayDeclaration.KeySpecified"/>
21        <exclude name="Squiz.Commenting.FunctionComment.SpacingAfterParamType"/>
22
23        <exclude name="SlevomatCodingStandard.Classes.SuperfluousAbstractClassNaming"/>
24        <exclude name="SlevomatCodingStandard.Classes.SuperfluousInterfaceNaming"/>
25        <exclude name="SlevomatCodingStandard.Classes.SuperfluousExceptionNaming"/>
26
27        <exclude name="SlevomatCodingStandard.ControlStructures.DisallowYodaComparison.DisallowedYodaComparison"/>
28        <exclude name="SlevomatCodingStandard.ControlStructures.AssignmentInCondition.AssignmentInCondition"/>
29        <exclude name="SlevomatCodingStandard.ControlStructures.EarlyExit"/>
30
31        <exclude name="SlevomatCodingStandard.Commenting.RequireOneLinePropertyDocComment"/>
32
33        <exclude name="SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingTraversableParameterTypeHintSpecification"/>
34        <exclude name="SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingTraversableReturnTypeHintSpecification"/>
35        <exclude name="SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingTraversablePropertyTypeHintSpecification"/>
36    </rule>
37
38    <rule ref="SlevomatCodingStandard.ControlStructures.RequireYodaComparison"/>
39
40     <rule ref="SlevomatCodingStandard.Commenting.ForbiddenAnnotations">
41        <properties>
42            <property
43                name="forbiddenAnnotations"
44                type="array"
45                value="
46                    @api,
47                    @category,
48                    @copyright,
49                    @created,
50                    @license,
51                    @package,
52                    @since,
53                    @subpackage,
54                    @version
55                "
56            />
57        </properties>
58    </rule>
59
60
61    <rule ref="SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly">
62        <properties>
63            <property name="allowFallbackGlobalConstants" type="boolean" value="true"/>
64            <property name="allowFallbackGlobalFunctions" type="boolean" value="true"/>
65            <property name="allowFullyQualifiedGlobalClasses" type="boolean" value="true"/>
66            <property name="allowFullyQualifiedGlobalConstants" type="boolean" value="true"/>
67            <property name="allowFullyQualifiedGlobalFunctions" type="boolean" value="true"/>
68            <property name="allowFullyQualifiedNameForCollidingClasses" type="boolean" value="false"/>
69            <property name="allowFullyQualifiedNameForCollidingConstants" type="boolean" value="false"/>
70            <property name="allowFullyQualifiedNameForCollidingFunctions" type="boolean" value="false"/>
71            <property name="searchAnnotations" type="boolean" value="true"/>
72        </properties>
73    </rule>
74
75     <rule ref="SlevomatCodingStandard.TypeHints.ReturnTypeHintSpacing">
76        <properties>
77            <property name="spacesCountBeforeColon" value="0"/>
78        </properties>
79    </rule>
80
81    <rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses">
82        <exclude-pattern>tests/*</exclude-pattern>
83    </rule>
84
85    <rule ref="PSR2.Classes.PropertyDeclaration.Multiple">
86        <exclude-pattern>tests/*</exclude-pattern>
87    </rule>
88
89    <rule ref="Squiz.Classes.ClassFileName.NoMatch">
90        <exclude-pattern>tests/*</exclude-pattern>
91    </rule>
92
93    <rule ref="SlevomatCodingStandard.TypeHints.TypeHintDeclaration">
94        <exclude-pattern>tests/*</exclude-pattern>
95    </rule>
96    <rule ref="SlevomatCodingStandard.Classes.UnusedPrivateElements">
97        <exclude-pattern>tests/*</exclude-pattern>
98    </rule>
99
100    <rule ref="SlevomatCodingStandard.Commenting.DocCommentSpacing">
101        <properties>
102            <property name="annotationsGroups" type="array">
103                <element value="
104                    @Annotation,
105                    @Target,
106                "/>
107                <element value="
108                    @internal,
109                    @deprecated,
110                "/>
111                <element value="@author"/>
112                <element value="
113                    @link,
114                    @see,
115                    @uses,
116                "/>
117                <element value="
118                    @Serializer\,
119                    @ORM\,
120                    @ODM\,
121                "/>
122                <element value="@param"/>
123                <element value="@return"/>
124                <element value="@throws"/>
125            </property>
126        </properties>
127    </rule>
128</ruleset>
129