├── LICENSE ├── README.md └── composer.json /LICENSE: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. 166 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![License](https://img.shields.io/github/license/PHPCompatibility/PHPCompatibilityAll?color=00a7a7)](https://github.com/PHPCompatibility/PHPCompatibilityAll/blob/master/LICENSE) 2 | [![Build Status](https://github.com/PHPCompatibility/PHPCompatibilityAll/actions/workflows/validate.yml/badge.svg?branch=master)](https://github.com/PHPCompatibility/PHPCompatibilityAll/actions/workflows/validate.yml) 3 | 4 | # PHPCompatibilityAll 5 | 6 | Convenience package to install all the external PHP_CodeSniffer rulesets which the [PHPCompatibility organisation](https://github.com/PHPCompatibility) maintains, in one go using Composer. 7 | 8 | 9 | ## What's included in this package ? 10 | 11 | ### Base ruleset 12 | 13 | - [![PHPCompatibility Current Version](https://img.shields.io/packagist/v/phpcompatibility/php-compatibility?label=stable)](https://packagist.org/packages/phpcompatibility/php-compatibility) [PHPCompatibility](https://github.com/PHPCompatibility/PHPCompatibility) - External PHP_CodeSniffer standard to check your codebase for PHP cross-version compatibility. 14 | 15 | ### Framework/CMS specific rulesets 16 | 17 | - [![PHPCompatibilityJoomla Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-joomla?label=stable)](https://packagist.org/packages/PHPCompatibility/phpcompatibility-joomla) [PHPCompatibilityJoomla](https://github.com/PHPCompatibility/PHPCompatibilityJoomla) - PHPCompatibility ruleset specific for Joomla projects. 18 | - [![PHPCompatibilityWP Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-wp?label=stable)](https://packagist.org/packages/PHPCompatibility/phpcompatibility-wp) [PHPCompatibilityWP](https://github.com/PHPCompatibility/PHPCompatibilityWP) - PHPCompatibility ruleset specific for WordPress projects. 19 | 20 | ### Polyfill provider specific rulesets 21 | - [![PHPCompatibilityPasswordCompat Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-passwordcompat?label=stable)](https://packagist.org/packages/phpcompatibility/phpcompatibility-passwordcompat) [PHPCompatibilityPasswordCompat](https://github.com/PHPCompatibility/PHPCompatibilityPasswordCompat) - PHPCompatibility ruleset specific for projects which use @ircmaxell's [`password_compat`](https://github.com/ircmaxell/password_compat) polyfill library. 22 | - [![PHPCompatibilityParagonie Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-paragonie?label=stable)](https://packagist.org/packages/phpcompatibility/phpcompatibility-paragonie) [PHPCompatibilityParagonie](https://github.com/PHPCompatibility/PHPCompatibilityParagonie) - PHPCompatibility rulesets for projects using either the Paragonie [`random_compat`](https://github.com/paragonie/random_compat) or the Paragonie [`sodium_compat`](https://github.com/paragonie/sodium_compat) polyfill library, or both. 23 | - [![PHPCompatibilitySymfony Current Version](https://img.shields.io/packagist/v/phpcompatibility/phpcompatibility-symfony?label=stable)](https://packagist.org/packages/phpcompatibility/phpcompatibility-symfony) [PHPCompatibilitySymfony](https://github.com/PHPCompatibility/PHPCompatibilitySymfony) - PHPCompatibility rulesets for projects using any of the [PHP polyfill libraries](https://github.com/symfony?utf8=?&q=polyfill) provided by the Symfony project. 24 | For more details about the available rulesets, please check out the [README of the PHPCompatibilitySymfony](https://github.com/PHPCompatibility/PHPCompatibilitySymfony/blob/master/README.md) repository. 25 | 26 | 27 | ## Requirements 28 | 29 | * PHP 5.3+ for use with [PHP_CodeSniffer](https://github.com/PHPCSStandards/PHP_CodeSniffer) 2.3.0+. 30 | * PHP 5.4+ for use with [PHP_CodeSniffer](https://github.com/PHPCSStandards/PHP_CodeSniffer) 3.0.2+. 31 | * [Composer](https://getcomposer.org/) 32 | 33 | Use the latest stable release of PHP_CodeSniffer for the best results. 34 | The minimum _recommended_ version of PHP_CodeSniffer is version 2.6.0. 35 | 36 | 37 | ## Installation instructions 38 | 39 | If you don't have a Composer plugin installed to manage the `installed_paths` setting for PHP_CodeSniffer, run the following from the command-line: 40 | ```bash 41 | composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true 42 | composer require --dev dealerdirect/phpcodesniffer-composer-installer:"^0.7" phpcompatibility/phpcompatibility-all:"*" 43 | ``` 44 | 45 | If you already have a Composer PHP_CodeSniffer plugin installed, run: 46 | ```bash 47 | composer require --dev phpcompatibility/phpcompatibility-all:"*" 48 | ``` 49 | 50 | Next, run: 51 | ```bash 52 | vendor/bin/phpcs -i 53 | ``` 54 | If all went well, you will now see that the `PHPCompatibility`, `PHPCompatibilityJoomla`, `PHPCompatibilityWP` and a number of polyfill related standards are installed for PHP_CodeSniffer. 55 | 56 | 57 | ## How to use 58 | 59 | Now you can use any of the following commands to inspect your code: 60 | ```bash 61 | ./vendor/bin/phpcs -p . --standard=PHPCompatibility 62 | ./vendor/bin/phpcs -p . --standard=PHPCompatibilityJoomla 63 | ./vendor/bin/phpcs -p . --standard=PHPCompatibilityWP 64 | ./vendor/bin/phpcs -p . --standard=PHPCompatibilityPasswordCompat 65 | ./vendor/bin/phpcs -p . --standard=PHPCompatibilityParagonieRandomCompat 66 | ./vendor/bin/phpcs -p . --standard=PHPCompatibilityParagonieSodiumCompat 67 | ./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP54 68 | ./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP73 69 | ...etc... 70 | 71 | # You can also combine the standards if your project uses several: 72 | ./vendor/bin/phpcs -p . --standard=PHPCompatibilityPasswordCompat,PHPCompatibilitySymfonyPolyfillPHP70,PHPCompatibilityWP 73 | ``` 74 | 75 | By default, you will only receive notifications about deprecated and/or removed PHP features. 76 | 77 | To get the most out of the PHPCompatibility standards, you should specify a `testVersion` to check against. That will enable the checks for both deprecated/removed PHP features as well as the detection of code using new PHP features. 78 | 79 | * You can run the checks for just one specific PHP version by adding `--runtime-set testVersion 5.5` to your command line command. 80 | * You can also specify a range of PHP versions that your code needs to support. In this situation, compatibility issues that affect any of the PHP versions in that range will be reported: `--runtime-set testVersion 5.3-5.5`. 81 | * Since PHPCompatibility 7.1.3, you can omit one part of the range if you want to support everything above or below a particular version, i.e. use `--runtime-set testVersion 7.0-` to run all the checks for PHP 7.0 and above. 82 | 83 | For example: 84 | ```bash 85 | # For a Joomla project which should be compatible with PHP 5.3 up to and including PHP 7.0: 86 | ./vendor/bin/phpcs -p . --standard=PHPCompatibilityJoomla --runtime-set testVersion 5.3-7.0 87 | 88 | # For a project using both the Paragonie Sodium Compat polyfill as well as the Symfony PHP 7.1 polyfill and which should be compatible with PHP 5.4 and higher: 89 | ./vendor/bin/phpcs -p . --standard=PHPCompatibilityParagonieSodiumCompat,PHPCompatibilitySymfonyPolyfillPHP71 --runtime-set testVersion 5.4- 90 | ``` 91 | 92 | For more detailed information, see the README of the main [PHPCompatibility](https://github.com/PHPCompatibility/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions) standard. 93 | 94 | 95 | ### Testing PHP files only 96 | 97 | By default PHP_CodeSniffer will analyse PHP, JavaScript and CSS files. As the PHPCompatibility sniffs only target PHP code, you can make the run slightly faster by telling PHP_CodeSniffer to only check PHP files, like so: 98 | ```bash 99 | ./vendor/bin/phpcs -p . --standard=PHPCompatibilitySymfonyPolyfillPHP56 --extensions=php --runtime-set testVersion 5.3- 100 | ``` 101 | 102 | ## License 103 | 104 | All code within the PHPCompatibility organisation is released under the GNU Lesser General Public License (LGPL). 105 | For more information, visit https://www.gnu.org/copyleft/lesser.html 106 | 107 | 108 | ## Changelog 109 | 110 | ### 1.1.4 - 2025-01-16 111 | 112 | This is a maintenance release. 113 | 114 | - The recommended version of the [Composer PHPCS plugin] is now `^1.0.0`. 115 | - README: Fixed some broken badges. 116 | - General housekeeping and maintenance. Including a contribution by [@fredden]. 117 | 118 | ### 1.1.3 - 2022-10-30 119 | 120 | - README: Updated the installation instructions for [compatibility with Composer >= 2.2][composer22announce]. 121 | - Composer: The package will now identify itself as a static analysis tool. Thanks [@GaryJones]! 122 | - Other housekeeping and minor documentation updates. 123 | 124 | [composer22announce]: https://blog.packagist.com/composer-2-2/#more-secure-plugin-execution 125 | 126 | ### 1.1.2 - 2021-02-16 127 | 128 | - The recommended version of the [Composer PHPCS plugin] is now `^0.7.0`, which offers compatibility with Composer 2.0. 129 | - The rulesets are now also tested against PHP 7.4 and 8.0. 130 | Note: full PHP 7.4 support is only available in combination with PHP_CodeSniffer >= 3.5.6. 131 | Note: runtime PHP 8.0 support is only available in combination with PHP_CodeSniffer >= 3.5.7, full support is expected in PHP_CodeSniffer 3.6.0. 132 | 133 | ### 1.1.1 - 2019-08-29 134 | 135 | - The recommended version of the [Composer PHPCS plugin] is now `^0.5.0`. 136 | - The rulesets are now also tested against PHP 7.3. 137 | Note: full PHP 7.3 support is only available in combination with PHP_CodeSniffer 2.9.2 or 3.3.1+ due to an incompatibility within PHP_CodeSniffer itself. 138 | 139 | ### 1.1.0 - 2018-10-07 140 | 141 | - Added the new PHPCompatibilityPasswordCompat, PHPCompatibilityParagonie, PHPCompatibilitySymfony rulesets. 142 | 143 | ### 1.0.0 - 2018-07-17 144 | 145 | Initial release containing the PHPCompatibility, PHPCompatibilityJoomla and PHPCompatibilityWP rulesets. 146 | 147 | [Composer PHPCS plugin]: https://github.com/PHPCSStandards/composer-installer 148 | 149 | [@fredden]: https://github.com/fredden 150 | [@GaryJones]: https://github.com/GaryJones 151 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "phpcompatibility/phpcompatibility-all", 3 | "description" : "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues and opportunities to modernize code in PHP projects.", 4 | "type" : "phpcodesniffer-standard", 5 | "keywords" : [ "compatibility", "phpcs", "standards", "static analysis", "joomla", "wordpress", "polyfills", "paragonie", "password_compat", "symfony" ], 6 | "homepage" : "http://phpcompatibility.com/", 7 | "license" : "LGPL-3.0-or-later", 8 | "authors" : [ { 9 | "name" : "Wim Godden", 10 | "role" : "lead" 11 | }, 12 | { 13 | "name" : "Juliette Reinders Folmer", 14 | "role" : "lead" 15 | } ], 16 | "support" : { 17 | "issues" : "https://github.com/PHPCompatibility/PHPCompatibilityAll/issues", 18 | "source" : "https://github.com/PHPCompatibility/PHPCompatibilityAll", 19 | "security": "https://github.com/PHPCompatibility/PHPCompatibilityAll/security/policy" 20 | }, 21 | "require" : { 22 | "phpcompatibility/php-compatibility" : "*", 23 | "phpcompatibility/phpcompatibility-wp" : "*", 24 | "phpcompatibility/phpcompatibility-joomla" : "*", 25 | "phpcompatibility/phpcompatibility-paragonie" : "*", 26 | "phpcompatibility/phpcompatibility-passwordcompat" : "*", 27 | "phpcompatibility/phpcompatibility-symfony" : "*" 28 | }, 29 | "suggest" : { 30 | "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", 31 | "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." 32 | }, 33 | "prefer-stable": true, 34 | "config": { 35 | "lock": false 36 | } 37 | } 38 | --------------------------------------------------------------------------------