diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 53bdd051fd..27df074f87 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -124,16 +124,16 @@ OK (60 tests, 6 assertions)
### Unit Testing conventions
-If you look inside the `WordPress/Tests` subdirectory, you'll see the structure mimics the `WordPress/Sniffs` subdirectory structure. For example, the `WordPress/Sniffs/PHP/POSIXFunctionsSniff.php` sniff has its unit test class defined in `WordPress/Tests/PHP/POSIXFunctionsUnitTest.php` which checks the `WordPress/Tests/PHP/POSIXFunctionsUnitTest.inc` test case file. See the file naming convention?
+If you look inside the `WordPress/Tests` subdirectory, you'll see the structure mimics the `WordPress/Sniffs` subdirectory structure. For example, the `WordPress/Sniffs/PHP/TypeCastsSniff.php` sniff has its unit test class defined in `WordPress/Tests/PHP/TypeCastsUnitTest.php` which checks the `WordPress/Tests/PHP/TypeCastsUnitTest.inc` test case file. See the file naming convention?
-Lets take a look at what's inside `POSIXFunctionsUnitTest.php`:
+Lets take a look at what's inside `TypeCastsUnitTest.php`:
```php
namespace WordPressCS\WordPress\Tests\PHP;
use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest;
-final class POSIXFunctionsUnitTest extends AbstractSniffUnitTest {
+final class TypeCastsUnitTest extends AbstractSniffUnitTest {
/**
* Returns the lines where errors should occur.
@@ -142,13 +142,12 @@ final class POSIXFunctionsUnitTest extends AbstractSniffUnitTest {
*/
public function getErrorList() {
return array(
+ 10 => 1,
+ 11 => 1,
13 => 1,
- 16 => 1,
- 18 => 1,
- 20 => 1,
- 22 => 1,
- 24 => 1,
26 => 1,
+ 27 => 1,
+ 28 => 1,
);
}
@@ -156,39 +155,41 @@ final class POSIXFunctionsUnitTest extends AbstractSniffUnitTest {
}
```
-Also note the class name convention. The method `getErrorList()` MUST return an array of line numbers indicating errors (when running `phpcs`) found in `WordPress/Tests/PHP/POSIXFunctionsUnitTest.inc`. Similarly, the `getWarningList()` method must return an array of line numbers with the number of expected warnings.
+Also note the class name convention. The method `getErrorList()` MUST return an array of line numbers indicating errors (when running `phpcs`) found in `WordPress/Tests/PHP/TypeCastsUnitTest.inc`. Similarly, the `getWarningList()` method must return an array of line numbers with the number of expected warnings.
If you run the following from the root directory of your WordPressCS clone:
```sh
-$ "vendor/bin/phpcs" --standard=Wordpress -s ./WordPress/Tests/PHP/POSIXFunctionsUnitTest.inc --sniffs=WordPress.PHP.POSIXFunctions
-...
---------------------------------------------------------------------------------
-FOUND 7 ERRORS AFFECTING 7 LINES
---------------------------------------------------------------------------------
- 13 | ERROR | ereg() has been deprecated since PHP 5.3 and removed in PHP 7.0,
- | | please use preg_match() instead.
- | | (WordPress.PHP.POSIXFunctions.ereg_ereg)
- 16 | ERROR | eregi() has been deprecated since PHP 5.3 and removed in PHP 7.0,
- | | please use preg_match() instead.
- | | (WordPress.PHP.POSIXFunctions.ereg_eregi)
- 18 | ERROR | ereg_replace() has been deprecated since PHP 5.3 and removed in
- | | PHP 7.0, please use preg_replace() instead.
- | | (WordPress.PHP.POSIXFunctions.ereg_replace_ereg_replace)
- 20 | ERROR | eregi_replace() has been deprecated since PHP 5.3 and removed in
- | | PHP 7.0, please use preg_replace() instead.
- | | (WordPress.PHP.POSIXFunctions.ereg_replace_eregi_replace)
- 22 | ERROR | split() has been deprecated since PHP 5.3 and removed in PHP 7.0,
- | | please use explode(), str_split() or preg_split() instead.
- | | (WordPress.PHP.POSIXFunctions.split_split)
- 24 | ERROR | spliti() has been deprecated since PHP 5.3 and removed in PHP
- | | 7.0, please use explode(), str_split() or preg_split()
- | | instead. (WordPress.PHP.POSIXFunctions.split_spliti)
- 26 | ERROR | sql_regcase() has been deprecated since PHP 5.3 and removed in
- | | PHP 7.0, please use preg_match() instead.
- | | (WordPress.PHP.POSIXFunctions.ereg_sql_regcase)
---------------------------------------------------------------------------------
+$ "vendor/bin/phpcs" --standard=Wordpress -s ./WordPress/Tests/PHP/TypeCastsUnitTest.inc --sniffs=WordPress.PHP.TypeCasts
...
+----------------------------------------------------------------------------------------------------
+FOUND 6 ERRORS AND 4 WARNINGS AFFECTING 10 LINES
+----------------------------------------------------------------------------------------------------
+ 10 | ERROR | [x] Normalized type keywords must be used; expected "(float)" but found "(double)"
+ | | (WordPress.PHP.TypeCasts.DoubleRealFound)
+ 11 | ERROR | [x] Normalized type keywords must be used; expected "(float)" but found "(real)"
+ | | (WordPress.PHP.TypeCasts.DoubleRealFound)
+ 13 | ERROR | [ ] Using the "(unset)" cast is forbidden as the type cast is removed in PHP 8.0.
+ | | Use the "unset()" language construct instead.
+ | | (WordPress.PHP.TypeCasts.UnsetFound)
+ 15 | WARNING | [ ] Using binary casting is strongly discouraged. Found: "(binary)"
+ | | (WordPress.PHP.TypeCasts.BinaryFound)
+ 16 | WARNING | [ ] Using binary casting is strongly discouraged. Found: "b"
+ | | (WordPress.PHP.TypeCasts.BinaryFound)
+ 17 | WARNING | [ ] Using binary casting is strongly discouraged. Found: "b"
+ | | (WordPress.PHP.TypeCasts.BinaryFound)
+ 26 | ERROR | [x] Normalized type keywords must be used; expected "(float)" but found "(double)"
+ | | (WordPress.PHP.TypeCasts.DoubleRealFound)
+ 27 | ERROR | [x] Normalized type keywords must be used; expected "(float)" but found "(real)"
+ | | (WordPress.PHP.TypeCasts.DoubleRealFound)
+ 28 | ERROR | [ ] Using the "(unset)" cast is forbidden as the type cast is removed in PHP 8.0.
+ | | Use the "unset()" language construct instead.
+ | | (WordPress.PHP.TypeCasts.UnsetFound)
+ 29 | WARNING | [ ] Using binary casting is strongly discouraged. Found: "(binary)"
+ | | (WordPress.PHP.TypeCasts.BinaryFound)
+----------------------------------------------------------------------------------------------------
+PHPCBF CAN FIX THE 4 MARKED SNIFF VIOLATIONS AUTOMATICALLY
+----------------------------------------------------------------------------------------------------
```
You'll see the line number and number of ERRORs we need to return in the `getErrorList()` method.
diff --git a/WordPress-Core/ruleset.xml b/WordPress-Core/ruleset.xml
index f97bd73d90..c8f1bedfae 100644
--- a/WordPress-Core/ruleset.xml
+++ b/WordPress-Core/ruleset.xml
@@ -827,10 +827,6 @@
Ref: https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/#regular-expressions
#############################################################################
-->
-
-
-
diff --git a/WordPress/Sniffs/PHP/POSIXFunctionsSniff.php b/WordPress/Sniffs/PHP/POSIXFunctionsSniff.php
index 72f77ad551..a6fedf78a9 100644
--- a/WordPress/Sniffs/PHP/POSIXFunctionsSniff.php
+++ b/WordPress/Sniffs/PHP/POSIXFunctionsSniff.php
@@ -9,6 +9,7 @@
namespace WordPressCS\WordPress\Sniffs\PHP;
+use PHP_CodeSniffer\Sniffs\DeprecatedSniff;
use WordPressCS\WordPress\AbstractFunctionRestrictionsSniff;
/**
@@ -22,8 +23,37 @@
* `WordPress.VIP.RestrictedFunctions` and the
* `WordPress.PHP.DiscouragedPHPFunctions` sniffs.
* @since 0.13.0 Class name changed: this class is now namespaced.
+ *
+ * @deprecated 3.3.0 Use the PHPCompatibility standard instead.
*/
-final class POSIXFunctionsSniff extends AbstractFunctionRestrictionsSniff {
+final class POSIXFunctionsSniff extends AbstractFunctionRestrictionsSniff implements DeprecatedSniff {
+
+ /**
+ * Provide the version number in which the sniff was deprecated.
+ *
+ * @return string
+ */
+ public function getDeprecationVersion() {
+ return 'WordPressCS v3.3.0';
+ }
+
+ /**
+ * Provide the version number in which the sniff will be removed.
+ *
+ * @return string
+ */
+ public function getRemovalVersion() {
+ return 'WordPressCS v4.0.0';
+ }
+
+ /**
+ * Provide a custom message to display with the deprecation.
+ *
+ * @return string
+ */
+ public function getDeprecationMessage() {
+ return 'To scan for PHP cross-version compatibility issues, use the PHPCompatibility standard instead.';
+ }
/**
* Groups of functions to restrict.
diff --git a/WordPress/ruleset.xml b/WordPress/ruleset.xml
index 6eb7ad8d9e..dc3f56a88b 100644
--- a/WordPress/ruleset.xml
+++ b/WordPress/ruleset.xml
@@ -8,6 +8,15 @@
-->
-
+
+
+
+