<?xml version="1.0"?> <ruleset name="WordPress Coding Standards"> <description>Apply WordPress Coding Standards to all Core files</description> <rule ref="WordPress-Core"/> <rule ref="WordPress.CodeAnalysis.EmptyStatement"/> <!-- These rules are being set as warnings instead of errors, so we can error check the entire codebase. --> <rule ref="WordPress.PHP.YodaConditions.NotYoda"> <type>warning</type> </rule> <rule ref="WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase"> <type>warning</type> </rule> <rule ref="WordPress.DB.PreparedSQL.InterpolatedNotPrepared"> <type>warning</type> </rule> <rule ref="WordPress.DB.PreparedSQL.NotPrepared"> <type>warning</type> </rule> <rule ref="WordPress.Files.FileName.InvalidClassFileName"> <type>warning</type> </rule> <rule ref="WordPress.NamingConventions.ValidVariableName"> <properties> <property name="customPropertiesWhitelist" type="array"> <!-- From database structure queries --> <element value="Collation"/> <element value="Column_name"/> <element value="Default"/> <element value="Extra"/> <element value="Field"/> <element value="Index_type"/> <element value="Key"/> <element value="Key_name"/> <element value="Msg_text"/> <element value="Non_unique"/> <element value="Null"/> <element value="Sub_part"/> <element value="Type"/> <!-- From plugin/theme data --> <element value="authorAndUri"/> <element value="Name"/> <element value="Version"/> <!-- From the result of wp_xmlrpc_server::wp_getPageList() --> <element value="dateCreated"/> <!-- From DOMDocument --> <element value="childNodes"/> <element value="formatOutput"/> <element value="nodeName"/> <element value="nodeType"/> <element value="parentNode"/> <element value="preserveWhiteSpace"/> <element value="textContent"/> <!-- From PHPMailer --> <element value="AltBody"/> <element value="Body"/> <element value="CharSet"/> <element value="ContentType"/> <element value="Encoding"/> <element value="Hostname"/> <element value="mailHeader"/> <element value="MIMEBody"/> <element value="MIMEHeader"/> <element value="Sender"/> <element value="Subject"/> <!-- From PHPUnit_Util_Getopt --> <element value="longOptions"/> <!-- From POP3 --> <element value="ERROR"/> <!-- From ZipArchive --> <element value="numFiles"/> </property> </properties> </rule> <arg name="extensions" value="php"/> <!-- Strip the filepaths down to the relevant bit. --> <arg name="basepath" value="./"/> <!-- Check up to 20 files simultaneously. --> <arg name="parallel" value="20"/> <!-- Show sniff codes in all reports --> <arg value="ps"/> <file>.</file> <!-- Exclude the build folder in the current directory, as Travis puts the checkout in a build directory. --> <exclude-pattern type="relative">^build/*</exclude-pattern> <!-- Directories and third party library exclusions --> <exclude-pattern>/node_modules/*</exclude-pattern> <exclude-pattern>/vendor/*</exclude-pattern> <exclude-pattern>/src/wp-admin/includes/class-ftp*</exclude-pattern> <exclude-pattern>/src/wp-admin/includes/class-pclzip\.php</exclude-pattern> <exclude-pattern>/src/wp-admin/includes/deprecated\.php</exclude-pattern> <exclude-pattern>/src/wp-admin/includes/ms-deprecated\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/atomlib\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-IXR\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-json\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-phpass\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-phpmailer\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-pop3\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-requests\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-simplepie\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-smtp\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-snoopy\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-wp-block-parser\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/deprecated\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/ms-deprecated\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/pluggable-deprecated\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/rss\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/blocks/*</exclude-pattern> <exclude-pattern>/src/wp-includes/ID3/*</exclude-pattern> <exclude-pattern>/src/wp-includes/IXR/*</exclude-pattern> <exclude-pattern>/src/wp-includes/js/*</exclude-pattern> <exclude-pattern>/src/wp-includes/random_compat/*</exclude-pattern> <exclude-pattern>/src/wp-includes/Requests/*</exclude-pattern> <exclude-pattern>/src/wp-includes/SimplePie/*</exclude-pattern> <exclude-pattern>/src/wp-includes/Text/*</exclude-pattern> <exclude-pattern>/src/wp-includes/sodium_compat/*</exclude-pattern> <exclude-pattern>/tests/phpunit/includes/speed-trap-listener\.php</exclude-pattern> <!-- Test data and fixtures --> <exclude-pattern>/tests/phpunit/build*</exclude-pattern> <exclude-pattern>/tests/phpunit/data/*</exclude-pattern> <exclude-pattern>/tools/*</exclude-pattern> <!-- Whitelist the WP DB Class and related tests for usage of direct database access functions. --> <rule ref="WordPress.DB.RestrictedFunctions"> <exclude-pattern>/src/wp-includes/wp-db\.php</exclude-pattern> <exclude-pattern>/tests/phpunit/tests/db/charset\.php</exclude-pattern> </rule> <!-- Whitelist the WP DB related tests for issues with prepared SQL placeholders (as the handling of those are being tested). --> <rule ref="WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare"> <exclude-pattern>/tests/phpunit/tests/db\.php</exclude-pattern> </rule> <rule ref="WordPress.DB.PreparedSQLPlaceholders.UnsupportedPlaceholder"> <exclude-pattern>/tests/phpunit/tests/db\.php</exclude-pattern> </rule> <rule ref="WordPress.DB.PreparedSQLPlaceholders.UnescapedLiteral"> <exclude-pattern>/tests/phpunit/tests/db\.php</exclude-pattern> </rule> <rule ref="WordPress.DB.PreparedSQL.NotPrepared"> <exclude-pattern>/tests/phpunit/tests/admin/includesSchema\.php</exclude-pattern> <exclude-pattern>/tests/phpunit/tests/multisite/site\.php</exclude-pattern> </rule> <!-- Whitelist the I18n functions file from issues identified by the I18n sniff (such as calling the low-level translate() function). --> <rule ref="WordPress.WP.I18n"> <exclude-pattern>/src/wp-includes/l10n\.php</exclude-pattern> <exclude-pattern>/tests/phpunit/tests/l10n\.php</exclude-pattern> <exclude-pattern>/tests/phpunit/tests/l10n/loadTextdomainJustInTime\.php</exclude-pattern> </rule> <!-- Translator comments aren't needed in unit tests. --> <rule ref="WordPress.WP.I18n.MissingTranslatorsComment"> <exclude-pattern>/tests/*</exclude-pattern> </rule> <rule ref="Generic.Functions.FunctionCallArgumentSpacing"> <exclude-pattern>/wp-config\.php</exclude-pattern> <exclude-pattern>/wp-config-sample\.php</exclude-pattern> <exclude-pattern>/wp-tests-config\.php</exclude-pattern> <exclude-pattern>/wp-tests-config-sample\.php</exclude-pattern> </rule> <!-- Exclude checking of line endings when reporting errors, but fix them when running phpcbf. Git and SVN manage these pretty well cross-platform as "native". Whitelist configuration files. --> <rule ref="Generic.Files.LineEndings"> <exclude-pattern>/wp-config\.php</exclude-pattern> <exclude-pattern>/wp-config-sample\.php</exclude-pattern> <exclude phpcs-only="true" name="Generic.Files.LineEndings"/> </rule> <!-- WPCS1620: template.php isn't a template tag file. --> <rule ref="WordPress.Files.FileName.InvalidTemplateTagFileName"> <exclude-pattern>/src/wp-includes/template\.php</exclude-pattern> </rule> <!-- WPCS1621: These files are expected to use _ instead of -. --> <rule ref="WordPress.Files.FileName.NotHyphenatedLowercase"> <exclude-pattern>/src/_index\.php</exclude-pattern> <exclude-pattern>/src/wp-admin/_index\.php</exclude-pattern> <exclude-pattern>/src/wp-content/themes/twentythirteen/taxonomy-post_format\.php</exclude-pattern> <exclude-pattern>/src/wp-content/themes/twentyfourteen/taxonomy-post_format\.php</exclude-pattern> </rule> <!-- Whitelist test classes for select sniffs. --> <rule ref="WordPress.Files.FileName"> <properties> <property name="custom_test_class_whitelist" type="array"> <!-- Test case parent classes --> <element value="WP_UnitTestCase"/> <element value="WP_Ajax_UnitTestCase"/> <element value="WP_Canonical_UnitTestCase"/> <element value="WP_Test_REST_TestCase"/> <element value="WP_Test_REST_Controller_Testcase"/> <element value="WP_Test_REST_Post_Type_Controller_Testcase"/> <element value="WP_XMLRPC_UnitTestCase"/> <element value="WP_Filesystem_UnitTestCase"/> <element value="WP_Image_UnitTestCase"/> <element value="WP_HTTP_UnitTestCase"/> <element value="WP_Tests_Image_Resize_UnitTestCase"/> <element value="WP_Import_UnitTestCase"/> <element value="Tests_Query_Conditionals"/> <!-- Mock classes --> <element value="Spy_REST_Server"/> <element value="WP_REST_Test_Controller"/> <element value="WP_Image_Editor_Mock"/> <element value="WP_Filesystem_MockFS"/> <element value="MockPHPMailer"/> <element value="MockAction"/> <element value="WP_Object_Cache"/> <!-- PHPUnit helpers --> <element value="TracTickets"/> <element value="WP_PHPUnit_Util_Getopt"/> <element value="PHPUnit_Util_Test"/> <element value="WPProfiler"/> <element value="SpeedTrapListener"/> <element value="PHPUnit_Framework_Exception"/> </property> </properties> </rule> <rule ref="WordPress.PHP.NoSilencedErrors"> <properties> <property name="custom_whitelist" type="array"> <element value="ssh2_connect"/> <element value="ssh2_auth_password"/> <element value="ssh2_auth_pubkey_file"/> <element value="ftp_ssl_connect"/> <element value="ftp_connect"/> <element value="ftp_get_option"/> <element value="ftp_set_option"/> <element value="disk_free_space"/> <element value="getimagesize"/> <element value="iptcparse"/> <element value="exif_read_data"/> <element value="gzinflate"/> <element value="gzuncompress"/> <element value="gzdecode"/> </property> </properties> </rule> <!-- Assignments in while conditions are a valid method of looping over iterables --> <rule ref="WordPress.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition"> <exclude-pattern>*</exclude-pattern> </rule> <!-- Exclude the unit tests from select sniffs. --> <rule ref="WordPress.Files.FileName.NotHyphenatedLowercase"> <exclude-pattern>/tests/phpunit/tests/*</exclude-pattern> </rule> <rule ref="PEAR.NamingConventions.ValidClassName.Invalid"> <exclude-pattern>/tests/phpunit/tests/*</exclude-pattern> </rule> <!-- Exclude some old classes that can't be renamed, as it would break back compat --> <rule ref="PEAR.NamingConventions.ValidClassName.Invalid"> <exclude-pattern>/src/wp-admin/includes/class-wp-filesystem-ftpsockets\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-wp-oembed\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-wp-oembed-controller\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-wp-xmlrpc-server\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-wp-text-diff-renderer-inline\.php</exclude-pattern> </rule> <rule ref="PEAR.NamingConventions.ValidClassName.StartWithCapital"> <exclude-pattern>/src/wp-admin/includes/class-wp-list-table-compat\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-wp-editor\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-wp-xmlrpc-server\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/wp-db\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-wp-dependency\.php</exclude-pattern> </rule> <!-- Exclude some incorrectly named files that won't be renamed. --> <rule ref="WordPress.Files.FileName.InvalidClassFileName"> <exclude-pattern>/src/wp-admin/includes/class-wp-list-table-compat\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-wp-dependency\.php</exclude-pattern> <exclude-pattern>/src/wp-includes/class-wp-editor\.php</exclude-pattern> <exclude-pattern>/src/wp-content/themes/twentyeleven/inc/widgets\.php</exclude-pattern> <exclude-pattern>/src/wp-content/themes/twentyfourteen/inc/widgets\.php</exclude-pattern> <exclude-pattern>/src/wp-content/themes/twentyfourteen/inc/featured-content\.php</exclude-pattern> </rule> </ruleset>