1<?xml version="1.0"?>
2<ruleset name="Observium ruleset">
3    <description>Observium rules for PHP CodeSniffer</description>
4
5    <arg value="sp"/>
6    <arg name="extensions" value="php"/>
7
8    <file>.</file>
9
10    <!-- <arg name="report" value="xml"/>
11    <arg name="report-file" value="phpcs-report.xml"/> -->
12
13    <!-- Exclude unused code. -->
14    <exclude-pattern>*/attic/*</exclude-pattern>
15    <!-- Exclude devel code. -->
16    <exclude-pattern>*/devel/*</exclude-pattern>
17    <!-- Exclude Composer vendor directory. -->
18    <exclude-pattern>*/vendor/*</exclude-pattern>
19    <!-- Weathermap exclude -->
20    <exclude-pattern>*/weathermap/*</exclude-pattern>
21
22    <!-- Strip the filepaths down to the relevant bit. -->
23    <arg name="basepath" value="./"/>
24
25    <!-- Check up to 8 files simultanously. -->
26    <arg name="parallel" value="8"/>
27
28    <!-- PHPCompatibility standard path -->
29    <!-- <config name="installed_paths" value="tests/php-compatibility"/> -->
30
31    <!-- Check for cross-version support for PHP 5.6 and higher. -->
32    <config name="testVersion" value="5.6-"/>
33
34    <!-- Run against the PHPCompatibility ruleset -->
35    <rule ref="PHPCompatibility">
36        <exclude-pattern>irc\.php$</exclude-pattern>
37        <exclude-pattern>*/weathermap/*</exclude-pattern>
38        <!-- <exclude-pattern>libs/pear/*</exclude-pattern> -->
39        <!-- random_bytes() already exist by compatibility lib -->
40        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.random_bytesFound"/>
41        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.random_intFound"/>
42    </rule>
43
44    <!-- Whitelist the mysql_to_rfc3339() and mysql_another_function() functions. -->
45    <rule ref="PHPCompatibility.Extensions.RemovedExtensions">
46        <properties>
47            <property name="functionWhitelist" type="array" value="mysql_authenticate,mysql_auth_can_logout,mysql_auth_can_change_password,mysql_auth_change_password,mysql_auth_usermanagement,mysql_adduser,mysql_auth_user_exists,mysql_auth_username_by_id,mysql_auth_user_level,mysql_auth_user_id,mysql_deluser,mysql_auth_user_list,mysql_auth_user_info"/>
48        </properties>
49    </rule>
50
51    <!-- random_compat lib -->
52    <rule ref="PHPCompatibility.Classes.NewClasses.typeerrorFound">
53        <exclude-pattern>libs/random_compat/*</exclude-pattern>
54    </rule>
55    <rule ref="PHPCompatibility.Classes.NewClasses.errorFound">
56        <exclude-pattern>libs/random_compat/*</exclude-pattern>
57    </rule>
58    <rule ref="PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecated">
59        <exclude-pattern>libs/random_compat/*</exclude-pattern>
60    </rule>
61    <rule ref="PHPCompatibility.FunctionUse.RemovedFunctions.mcrypt_create_ivDeprecatedRemoved">
62        <exclude-pattern>libs/random_compat/*</exclude-pattern>
63        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
64    </rule>
65    <rule ref="PHPCompatibility.Constants.RemovedConstants.mcrypt_dev_urandomDeprecatedRemoved">
66        <exclude-pattern>libs/random_compat/*</exclude-pattern>
67        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
68    </rule>
69
70    <!-- pear chap lib excludes -->
71    <rule ref="PHPCompatibility.FunctionUse.RemovedFunctions.mcrypt_module_openDeprecatedRemoved">
72        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
73    </rule>
74    <rule ref="PHPCompatibility.Constants.RemovedConstants.mcrypt_desDeprecatedRemoved">
75        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
76    </rule>
77    <rule ref="PHPCompatibility.FunctionUse.RemovedFunctions.mcrypt_enc_get_iv_sizeDeprecatedRemoved">
78        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
79    </rule>
80    <rule ref="PHPCompatibility.Constants.RemovedConstants.mcrypt_randDeprecatedRemoved">
81        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
82    </rule>
83    <rule ref="PHPCompatibility.FunctionUse.RemovedFunctions.mcrypt_generic_initDeprecatedRemoved">
84        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
85    </rule>
86    <rule ref="PHPCompatibility.FunctionUse.RemovedFunctions.mcrypt_genericDeprecatedRemoved">
87        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
88    </rule>
89    <rule ref="PHPCompatibility.FunctionUse.RemovedFunctions.mcrypt_generic_deinitDeprecatedRemoved">
90        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
91    </rule>
92    <rule ref="PHPCompatibility.FunctionUse.RemovedFunctions.mcrypt_module_closeDeprecatedRemoved">
93        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
94    </rule>
95
96    <!-- pear net socket excludes -->
97    <rule ref="PHPCompatibility.IniDirectives.RemovedIniDirectives.track_errorsDeprecated">
98        <exclude-pattern>libs/pear/Net/Socket\.php</exclude-pattern>
99    </rule>
100    <rule ref="PHPCompatibility.Variables.RemovedPredefinedGlobalVariables.php_errormsgDeprecated">
101        <exclude-pattern>libs/pear/Net/Socket\.php</exclude-pattern>
102    </rule>
103    <rule ref="PHPCompatibility.FunctionUse.NewFunctions.error_clear_lastFound">
104        <exclude-pattern>libs/pear/Net/Socket\.php</exclude-pattern>
105    </rule>
106
107    <!-- Exclude shiff on specific patterns -->
108    <rule ref="PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection">
109        <exclude-pattern>includes/common\.inc\.php</exclude-pattern>
110        <exclude-pattern>libs/Fabiang/Xmpp/*</exclude-pattern>
111    </rule>
112    <rule ref="PHPCompatibility.Miscellaneous.ValidIntegers.HexNumericStringFound">
113        <exclude-pattern>tests/*</exclude-pattern>
114        <exclude-pattern>libs/pear/*</exclude-pattern>
115    </rule>
116    <rule ref="PHPCompatibility.IniDirectives.RemovedIniDirectives.magic_quotes_runtimeDeprecatedRemoved">
117        <exclude-pattern>libs/pear/Mail/mime*</exclude-pattern>
118    </rule>
119    <rule ref="PHPCompatibility.Constants.NewConstants.json_preserve_zero_fractionFound">
120        <exclude-pattern>includes/definitions\.inc\.php</exclude-pattern>
121    </rule>
122    <rule ref="PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved">
123        <exclude-pattern>includes/db/mysql\.inc\.php</exclude-pattern>
124    </rule>
125    <rule ref="PHPCompatibility.IniDirectives.RemovedIniDirectives.session_hash_functionRemoved">
126        <exclude-pattern>html/includes/authenticate\.inc\.php</exclude-pattern>
127    </rule>
128    <rule ref="PHPCompatibility.Constants.NewConstants.sodium_crypto_secretbox_keybytesFound">
129        <exclude-pattern>tests/IncludesEncryptTest\.php</exclude-pattern>
130        <exclude-pattern>includes/encrypt\.inc\.php</exclude-pattern>
131    </rule>
132    <rule ref="PHPCompatibility.Constants.NewConstants.sodium_crypto_secretbox_noncebytesFound">
133        <exclude-pattern>tests/IncludesEncryptTest\.php</exclude-pattern>
134        <exclude-pattern>includes/encrypt\.inc\.php</exclude-pattern>
135    </rule>
136    <rule ref="PHPCompatibility.FunctionUse.NewFunctions.sodium_padFound">
137        <exclude-pattern>tests/IncludesEncryptTest\.php</exclude-pattern>
138        <exclude-pattern>includes/encrypt\.inc\.php</exclude-pattern>
139    </rule>
140    <rule ref="PHPCompatibility.FunctionUse.NewFunctions.sodium_crypto_secretboxFound">
141        <exclude-pattern>tests/IncludesEncryptTest\.php</exclude-pattern>
142        <exclude-pattern>includes/encrypt\.inc\.php</exclude-pattern>
143    </rule>
144    <rule ref="PHPCompatibility.Classes.NewClasses.sodiumexceptionFound">
145        <exclude-pattern>tests/IncludesEncryptTest\.php</exclude-pattern>
146        <exclude-pattern>includes/encrypt\.inc\.php</exclude-pattern>
147    </rule>
148    <rule ref="PHPCompatibility.FunctionUse.NewFunctions.sodium_crypto_secretbox_openFound">
149        <exclude-pattern>tests/IncludesEncryptTest\.php</exclude-pattern>
150        <exclude-pattern>includes/encrypt\.inc\.php</exclude-pattern>
151    </rule>
152    <rule ref="PHPCompatibility.Extensions.RemovedExtensions.mcryptDeprecatedRemoved">
153        <exclude-pattern>tests/IncludesEncryptTest\.php</exclude-pattern>
154        <exclude-pattern>includes/encrypt\.inc\.php</exclude-pattern>
155        <exclude-pattern>libs/random_compat/*</exclude-pattern>
156        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
157    </rule>
158    <rule ref="PHPCompatibility.FunctionUse.RemovedFunctions.mcrypt_encryptDeprecatedRemoved">
159        <exclude-pattern>tests/IncludesEncryptTest\.php</exclude-pattern>
160        <exclude-pattern>includes/encrypt\.inc\.php</exclude-pattern>
161        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
162    </rule>
163    <rule ref="PHPCompatibility.FunctionUse.RemovedFunctions.mcrypt_decryptDeprecatedRemoved">
164        <exclude-pattern>tests/IncludesEncryptTest\.php</exclude-pattern>
165        <exclude-pattern>includes/encrypt\.inc\.php</exclude-pattern>
166        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
167    </rule>
168    <rule ref="PHPCompatibility.Constants.RemovedConstants.mcrypt_rijndael_256DeprecatedRemoved">
169        <exclude-pattern>tests/IncludesEncryptTest\.php</exclude-pattern>
170        <exclude-pattern>includes/encrypt\.inc\.php</exclude-pattern>
171        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
172    </rule>
173    <rule ref="PHPCompatibility.Constants.RemovedConstants.mcrypt_mode_ecbDeprecatedRemoved">
174        <exclude-pattern>tests/IncludesEncryptTest\.php</exclude-pattern>
175        <exclude-pattern>includes/encrypt\.inc\.php</exclude-pattern>
176        <exclude-pattern>libs/pear/Crypt/CHAP\.php</exclude-pattern>
177    </rule>
178
179
180    <!-- Run against a second ruleset -->
181    <!-- <rule ref="PSR2"/> -->
182
183</ruleset>
184