diff --git a/composer.json b/composer.json index ed000cf581b0c..01855d1ef424e 100644 --- a/composer.json +++ b/composer.json @@ -93,8 +93,9 @@ "phpmd/phpmd": "^2.8.0", "phpstan/phpstan": "^0.12.77", "phpunit/phpunit": "^9", - "sebastian/phpcpd": "~5.0.0", - "squizlabs/php_codesniffer": "~3.5.4" + "sebastian/phpcpd": "^6.0.3", + "squizlabs/php_codesniffer": "~3.5.4", + "symfony/finder": "^5.2" }, "suggest": { "ext-pcntl": "Need for run processes in parallel mode" diff --git a/composer.lock b/composer.lock index 8bb94e48f54b7..1c57987738d51 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6d8f6f4e3482e930d47cd89572d5c55a", + "content-hash": "e6843eb4e1dbc1570dfc9ea93962ebd7", "packages": [ { "name": "aws/aws-sdk-php", @@ -135,6 +135,12 @@ "brick", "math" ], + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], "time": "2021-01-20T22:51:39+00:00" }, { @@ -380,6 +386,20 @@ "ssl", "tls" ], + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], "time": "2021-01-12T12:10:35+00:00" }, { @@ -460,6 +480,20 @@ "dependency", "package" ], + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], "time": "2021-04-01T07:16:35+00:00" }, { @@ -521,6 +555,20 @@ "validation", "versioning" ], + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], "time": "2020-12-03T15:47:16+00:00" }, { @@ -581,6 +629,20 @@ "spdx", "validator" ], + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], "time": "2020-12-03T16:04:16+00:00" }, { @@ -626,6 +688,20 @@ "Xdebug", "performance" ], + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], "time": "2021-03-25T17:01:18+00:00" }, { @@ -1208,6 +1284,12 @@ "captcha", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-03-17T16:42:11+00:00" }, { @@ -1262,6 +1344,12 @@ "code", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2020-11-30T20:16:31+00:00" }, { @@ -1320,6 +1408,12 @@ "config", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-11T15:06:51+00:00" }, { @@ -1370,6 +1464,12 @@ "crypt", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-11T19:40:03+00:00" }, { @@ -1429,6 +1529,12 @@ "db", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-22T22:27:56+00:00" }, { @@ -1468,6 +1574,12 @@ "BSD-3-Clause" ], "description": "Replace zendframework and zfcampus packages with their Laminas Project equivalents.", + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-15T16:44:31+00:00" }, { @@ -1588,6 +1700,12 @@ "escaper", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2020-11-17T21:26:43+00:00" }, { @@ -1640,6 +1758,12 @@ "events", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-03-08T15:24:29+00:00" }, { @@ -1706,6 +1830,12 @@ "feed", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-04-01T19:26:09+00:00" }, { @@ -1774,6 +1904,12 @@ "filter", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-03-16T14:37:02+00:00" }, { @@ -1826,6 +1962,12 @@ "http client", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-18T21:58:11+00:00" }, { @@ -1897,6 +2039,12 @@ "i18n", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-04-07T21:10:50+00:00" }, { @@ -1945,6 +2093,12 @@ "json", "laminas" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-12T15:38:10+00:00" }, { @@ -1988,6 +2142,12 @@ "laminas", "loader" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-12T16:08:18+00:00" }, { @@ -2051,6 +2211,12 @@ "laminas", "mail" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-03-17T12:41:50+00:00" }, { @@ -2105,6 +2271,12 @@ "laminas", "math" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-16T15:46:01+00:00" }, { @@ -2153,6 +2325,12 @@ "laminas", "mime" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-16T17:40:06+00:00" }, { @@ -2287,6 +2465,12 @@ "laminas", "mvc" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2020-12-14T21:54:40+00:00" }, { @@ -2344,6 +2528,12 @@ "laminas", "routing" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2020-12-16T22:10:51+00:00" }, { @@ -2391,6 +2581,12 @@ "laminas", "server" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-04-08T13:10:08+00:00" }, { @@ -2464,6 +2660,12 @@ "service-manager", "servicemanager" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-03T08:44:41+00:00" }, { @@ -2532,6 +2734,12 @@ "laminas", "session" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2020-10-31T15:33:31+00:00" }, { @@ -2586,6 +2794,12 @@ "laminas", "soap" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-17T18:59:03+00:00" }, { @@ -2630,6 +2844,12 @@ "laminas", "stdlib" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2020-11-19T20:18:59+00:00" }, { @@ -2676,6 +2896,12 @@ "laminas", "text" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-17T21:24:58+00:00" }, { @@ -2721,6 +2947,12 @@ "laminas", "uri" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-17T21:53:05+00:00" }, { @@ -2799,6 +3031,12 @@ "laminas", "validator" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-01-24T20:45:49+00:00" }, { @@ -2889,6 +3127,12 @@ "laminas", "view" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-01-01T14:07:41+00:00" }, { @@ -2939,6 +3183,12 @@ "laminas", "zf" ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], "time": "2021-02-25T21:54:58+00:00" }, { @@ -3098,6 +3348,16 @@ } ], "description": "Mime-type detection for Flysystem", + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], "time": "2021-01-18T20:58:21+00:00" }, { @@ -3128,13 +3388,11 @@ "Magento\\Composer\\": "src" } }, - "notification-url": "https://packagist.org/downloads/", "license": [ "OSL-3.0", "AFL-3.0" ], - "description": "Magento composer library helps to instantiate Composer application and run composer commands.", - "time": "2020-06-15T17:52:31+00:00" + "description": "Magento composer library helps to instantiate Composer application and run composer commands." }, { "name": "magento/magento-composer-installer", @@ -3332,6 +3590,16 @@ "logging", "psr-3" ], + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], "time": "2020-12-14T12:56:38+00:00" }, { @@ -3855,6 +4123,20 @@ "x.509", "x509" ], + "funding": [ + { + "url": "https://github.com/terrafrost", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "type": "tidelift" + } + ], "time": "2021-04-06T13:56:45+00:00" }, { @@ -4360,6 +4642,16 @@ "parser", "validator" ], + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], "time": "2020-11-11T09:19:24+00:00" }, { @@ -4521,6 +4813,16 @@ "safe", "url" ], + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], "time": "2020-11-03T09:10:25+00:00" }, { @@ -4582,6 +4884,20 @@ ], "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-02-23T23:58:19+00:00" }, { @@ -4654,6 +4970,20 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-03-26T09:23:24+00:00" }, { @@ -4702,6 +5032,20 @@ ], "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-27T10:01:46+00:00" }, { @@ -4754,6 +5098,20 @@ ], "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-28T16:54:48+00:00" }, { @@ -4824,6 +5182,20 @@ ], "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-03-22T11:10:24+00:00" }, { @@ -4874,6 +5246,20 @@ ], "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2020-09-07T11:33:47+00:00" }, { @@ -4926,6 +5312,20 @@ ], "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-03-08T10:28:40+00:00" }, { @@ -4992,6 +5392,20 @@ ], "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-27T09:09:26+00:00" }, { @@ -5054,6 +5468,20 @@ "interoperability", "standards" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2020-07-06T13:19:58+00:00" }, { @@ -5099,6 +5527,20 @@ ], "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-03-28T14:30:26+00:00" }, { @@ -5143,6 +5585,20 @@ ], "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-02-15T18:55:04+00:00" }, { @@ -5205,6 +5661,20 @@ "interoperability", "standards" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2020-10-14T17:08:19+00:00" }, { @@ -5261,6 +5731,20 @@ ], "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-02-25T17:16:57+00:00" }, { @@ -5348,6 +5832,20 @@ ], "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-03-29T05:11:04+00:00" }, { @@ -5410,6 +5908,20 @@ "polyfill", "portable" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-07T16:49:33+00:00" }, { @@ -5480,6 +5992,20 @@ "portable", "shim" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-22T09:19:47+00:00" }, { @@ -5547,6 +6073,20 @@ "portable", "shim" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-22T09:19:47+00:00" }, { @@ -5610,6 +6150,20 @@ "portable", "shim" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-22T09:19:47+00:00" }, { @@ -5669,6 +6223,20 @@ "portable", "shim" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-07T16:49:33+00:00" }, { @@ -5731,6 +6299,20 @@ "portable", "shim" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-07T16:49:33+00:00" }, { @@ -5797,6 +6379,20 @@ "portable", "shim" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-07T16:49:33+00:00" }, { @@ -5841,6 +6437,20 @@ ], "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-27T09:09:26+00:00" }, { @@ -5903,6 +6513,20 @@ "interoperability", "standards" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2020-09-07T11:33:47+00:00" }, { @@ -5974,6 +6598,20 @@ "debug", "dump" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-03-28T09:42:18+00:00" }, { @@ -6020,6 +6658,12 @@ "javascript", "minifier" ], + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/tedivm/jshrink", + "type": "tidelift" + } + ], "time": "2020-11-30T18:10:21+00:00" }, { @@ -6421,6 +7065,12 @@ "jwt", "symfony" ], + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + } + ], "time": "2021-03-24T14:00:05+00:00" }, { @@ -6470,6 +7120,12 @@ "safe writer", "webimpress" ], + "funding": [ + { + "url": "https://github.com/michalbundyra", + "type": "github" + } + ], "time": "2020-08-25T07:21:11+00:00" }, { @@ -6522,6 +7178,12 @@ "api", "graphql" ], + "funding": [ + { + "url": "https://opencollective.com/webonyx-graphql-php", + "type": "open_collective" + } + ], "time": "2020-07-02T05:49:25+00:00" }, { @@ -6949,6 +7611,12 @@ "functional testing", "unit testing" ], + "funding": [ + { + "url": "https://opencollective.com/codeception", + "type": "open_collective" + } + ], "time": "2021-04-02T16:41:51+00:00" }, { @@ -7492,6 +8160,20 @@ "constructor", "instantiate" ], + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], "time": "2020-11-10T18:47:58+00:00" }, { @@ -7648,6 +8330,12 @@ } ], "description": "A tool to automatically fix PHP code style", + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], "time": "2021-04-06T18:37:33+00:00" }, { @@ -8709,6 +9397,12 @@ "object", "object graph" ], + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], "time": "2020-11-13T09:40:50+00:00" }, { @@ -9360,6 +10054,12 @@ "phpmd", "pmd" ], + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/phpmd/phpmd", + "type": "tidelift" + } + ], "time": "2020-09-23T22:06:32+00:00" }, { @@ -9415,6 +10115,16 @@ "php", "type" ], + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], "time": "2020-07-20T17:29:33+00:00" }, { @@ -9520,6 +10230,20 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpstan", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], "time": "2021-04-03T15:35:45+00:00" }, { @@ -9584,6 +10308,12 @@ "testing", "xunit" ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-05-23T08:02:54+00:00" }, { @@ -9634,6 +10364,12 @@ "filesystem", "iterator" ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-09-28T05:57:25+00:00" }, { @@ -9687,6 +10423,12 @@ "keywords": [ "process" ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-09-28T05:58:55+00:00" }, { @@ -9736,32 +10478,38 @@ "keywords": [ "template" ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-10-26T05:33:50+00:00" }, { "name": "phpunit/php-timer", - "version": "3.1.4", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258" + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/dc9368fae6ef2ffa57eba80a7410bcef81df6258", - "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -9785,7 +10533,13 @@ "keywords": [ "timer" ], - "time": "2020-04-20T06:00:37+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/php-token-stream", @@ -9834,51 +10588,57 @@ "keywords": [ "tokenizer" ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "abandoned": true, "time": "2020-08-04T08:28:15+00:00" }, { "name": "phpunit/phpunit", - "version": "9.1.5", + "version": "9.2.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1b570cd7edbe136055bf5f651857dc8af6b829d2" + "reference": "1c6a9e4312e209e659f1fce3ce88dd197c2448f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1b570cd7edbe136055bf5f651857dc8af6b829d2", - "reference": "1b570cd7edbe136055bf5f651857dc8af6b829d2", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1c6a9e4312e209e659f1fce3ce88dd197c2448f6", + "reference": "1c6a9e4312e209e659f1fce3ce88dd197c2448f6", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2.0", + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.9.1", + "myclabs/deep-copy": "^1.9.5", "phar-io/manifest": "^1.0.3", "phar-io/version": "^2.0.1", "php": "^7.3", - "phpspec/prophecy": "^1.8.1", - "phpunit/php-code-coverage": "^8.0.1", - "phpunit/php-file-iterator": "^3.0", - "phpunit/php-invoker": "^3.0", - "phpunit/php-text-template": "^2.0", - "phpunit/php-timer": "^3.1.4", - "sebastian/code-unit": "^1.0.2", - "sebastian/comparator": "^4.0", - "sebastian/diff": "^4.0", - "sebastian/environment": "^5.0.1", - "sebastian/exporter": "^4.0", + "phpspec/prophecy": "^1.10.3", + "phpunit/php-code-coverage": "^8.0.2", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-invoker": "^3.0.2", + "phpunit/php-text-template": "^2.0.2", + "phpunit/php-timer": "^5.0.1", + "sebastian/code-unit": "^1.0.5", + "sebastian/comparator": "^4.0.3", + "sebastian/diff": "^4.0.1", + "sebastian/environment": "^5.1.2", + "sebastian/exporter": "^4.0.2", "sebastian/global-state": "^4.0", - "sebastian/object-enumerator": "^4.0", - "sebastian/resource-operations": "^3.0", - "sebastian/type": "^2.0", - "sebastian/version": "^3.0" + "sebastian/object-enumerator": "^4.0.2", + "sebastian/resource-operations": "^3.0.2", + "sebastian/type": "^2.1.1", + "sebastian/version": "^3.0.1" }, "require-dev": { "ext-pdo": "*", @@ -9894,7 +10654,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.1-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -9923,7 +10683,17 @@ "testing", "xunit" ], - "time": "2020-05-22T13:54:05+00:00" + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-07-13T17:55:55+00:00" }, { "name": "psr/cache", @@ -9971,6 +10741,58 @@ ], "time": "2016-08-06T20:24:11+00:00" }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, { "name": "sebastian/code-unit", "version": "1.0.8", @@ -10015,6 +10837,12 @@ ], "description": "Collection of value objects that represent the PHP code units", "homepage": "https://github.com/sebastianbergmann/code-unit", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-10-26T13:08:54+00:00" }, { @@ -10060,6 +10888,12 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-09-28T05:30:19+00:00" }, { @@ -10124,6 +10958,12 @@ "compare", "equality" ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-10-26T15:49:45+00:00" }, { @@ -10180,6 +11020,12 @@ "unidiff", "unified diff" ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-10-26T13:10:38+00:00" }, { @@ -10233,6 +11079,12 @@ "environment", "hhvm" ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-09-28T05:52:38+00:00" }, { @@ -10300,6 +11152,12 @@ "export", "exporter" ], + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-09-28T05:24:23+00:00" }, { @@ -10448,6 +11306,12 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-10-26T13:12:34+00:00" }, { @@ -10493,29 +11357,35 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-10-26T13:14:26+00:00" }, { "name": "sebastian/phpcpd", - "version": "5.0.2", + "version": "6.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpcpd.git", - "reference": "8724382966b1861df4e12db915eaed2165e10bf3" + "reference": "f3683aa0db2e8e09287c2bb33a595b2873ea9176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/8724382966b1861df4e12db915eaed2165e10bf3", - "reference": "8724382966b1861df4e12db915eaed2165e10bf3", + "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/f3683aa0db2e8e09287c2bb33a595b2873ea9176", + "reference": "f3683aa0db2e8e09287c2bb33a595b2873ea9176", "shasum": "" }, "require": { "ext-dom": "*", - "php": "^7.3", - "phpunit/php-timer": "^3.0", - "sebastian/finder-facade": "^2.0", - "sebastian/version": "^3.0", - "symfony/console": "^4.0|^5.0" + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0", + "phpunit/php-timer": "^5.0", + "sebastian/cli-parser": "^1.0", + "sebastian/version": "^3.0" }, "bin": [ "phpcpd" @@ -10523,7 +11393,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "6.0-dev" } }, "autoload": { @@ -10544,7 +11414,13 @@ ], "description": "Copy/Paste Detector (CPD) for PHP code.", "homepage": "https://github.com/sebastianbergmann/phpcpd", - "time": "2020-02-22T06:03:17+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-12-07T05:39:23+00:00" }, { "name": "sebastian/recursion-context", @@ -10597,6 +11473,12 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-10-26T13:17:30+00:00" }, { @@ -10642,6 +11524,12 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-09-28T06:45:17+00:00" }, { @@ -10688,6 +11576,12 @@ ], "description": "Collection of value objects that represent the types of the PHP type system", "homepage": "https://github.com/sebastianbergmann/type", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-10-26T13:18:59+00:00" }, { @@ -10731,6 +11625,12 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-09-28T06:39:44+00:00" }, { @@ -10919,6 +11819,20 @@ "mime", "mime-type" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-03-12T13:18:39+00:00" }, { @@ -10971,6 +11885,20 @@ "configuration", "options" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-27T12:56:27+00:00" }, { @@ -11022,6 +11950,20 @@ "portable", "shim" ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2020-10-23T14:02:19+00:00" }, { @@ -11067,6 +12009,20 @@ ], "description": "Provides a way to profile code", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-27T10:15:41+00:00" }, { @@ -11125,6 +12081,20 @@ ], "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-03-06T07:59:01+00:00" }, { @@ -11205,6 +12175,12 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], "time": "2020-07-12T23:59:07+00:00" }, { @@ -11267,6 +12243,16 @@ "env", "environment" ], + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], "time": "2021-01-20T14:39:13+00:00" }, { diff --git a/dev/tests/static/framework/Magento/TestFramework/CodingStandard/Tool/CopyPasteDetector.php b/dev/tests/static/framework/Magento/TestFramework/CodingStandard/Tool/CopyPasteDetector.php index 04eca2efcdf21..61cb5a634d292 100644 --- a/dev/tests/static/framework/Magento/TestFramework/CodingStandard/Tool/CopyPasteDetector.php +++ b/dev/tests/static/framework/Magento/TestFramework/CodingStandard/Tool/CopyPasteDetector.php @@ -3,18 +3,30 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); -/** - * PHP Copy Paste Detector v1.4.0 tool wrapper - */ namespace Magento\TestFramework\CodingStandard\Tool; use Magento\TestFramework\CodingStandard\ToolInterface; +use SebastianBergmann\FileIterator\Facade; +use SebastianBergmann\PHPCPD\Detector\Detector; +use SebastianBergmann\PHPCPD\Detector\Strategy\DefaultStrategy; +use SebastianBergmann\PHPCPD\Log\PMD; +use SebastianBergmann\PHPCPD\Log\Text; +use Symfony\Component\Finder\Finder; +/** + * PHP Copy Paste Detector tool wrapper + */ class CopyPasteDetector implements ToolInterface, BlacklistInterface { /** - * Report file + * Minimum number of equal lines to identify a copy paste snippet + */ + private const MIN_LINES = 13; + + /** + * Destination file to write inspection report to * * @var string */ @@ -28,19 +40,17 @@ class CopyPasteDetector implements ToolInterface, BlacklistInterface private $blacklist; /** - * Constructor - * - * @param string $reportFile Destination file to write inspection report to + * @param string $reportFile */ - public function __construct($reportFile) + public function __construct(string $reportFile) { $this->reportFile = $reportFile; } /** - * {@inheritdoc} + * @inheritdoc */ - public function setBlackList(array $blackList) + public function setBlackList(array $blackList): void { $this->blacklist = $blackList; } @@ -52,57 +62,113 @@ public function setBlackList(array $blackList) * * @return bool */ - public function canRun() + public function canRun(): bool { - // exec() have to be here since this is test. - // phpcs:ignore Magento2.Security.InsecureFunction - exec($this->getCommand() . ' --version', $output, $exitCode); - return $exitCode === 0; + return class_exists(Detector::class) + && class_exists(Facade::class) + && class_exists(Finder::class); } /** * Run tool for files specified * * @param array $whiteList Files/directories to be inspected - * @return int + * @return bool + */ + public function run(array $whiteList): bool + { + $clones = (new Detector(new DefaultStrategy()))->copyPasteDetection( + (new Facade())->getFilesAsArray( + $whiteList, + '', + '', + $this->getExclude() + ), + self::MIN_LINES + ); + + (new PMD($this->reportFile))->processClones($clones); + (new Text)->printResult($clones, false); + + return count($clones) === 0; + } + + /** + * Get exclude params from blacklist * - * @SuppressWarnings(PHPMD.UnusedLocalVariable) + * @return string[] */ - public function run(array $whiteList) + private function getExclude(): array { + $exclude = []; $blacklistedDirs = []; $blacklistedFileNames = []; + $blacklistedPatterns = []; foreach ($this->blacklist as $file) { - $file = escapeshellarg(trim($file)); + $file = trim($file); if (!$file) { continue; } - $ext = pathinfo($file, PATHINFO_EXTENSION); - if ($ext != '') { - $blacklistedFileNames[] = $file; - } else { - $blacklistedDirs[] = '--exclude ' . $file . ' '; + $realPath = realpath(BP . '/' . $file); + if ($realPath === false) { + $ext = pathinfo($file, PATHINFO_EXTENSION); + if ($ext != '') { + $blacklistedFileNames[] = $file; + } else { + $blacklistedPatterns[] = $file; + } + continue; + } + + $exclude[] = [$realPath]; + $blacklistedDirs[] = $file; + } + + foreach ($blacklistedPatterns as $pattern) { + $files = $this->find($pattern, false, $blacklistedDirs); + if (empty($files)) { + continue; } + $exclude[] = $files; } - $command = $this->getCommand() . ' --log-pmd ' . escapeshellarg($this->reportFile) - . ' --names-exclude ' . join(',', $blacklistedFileNames) . ' --min-lines 13 ' . join(' ', $blacklistedDirs) - . ' ' . implode(' ', $whiteList); - // exec() have to be here since this is test. - // phpcs:ignore Magento2.Security.InsecureFunction - exec($command, $output, $exitCode); - return !(bool)$exitCode; + foreach ($blacklistedFileNames as $fileName) { + $files = $this->find($fileName, true, $blacklistedDirs); + if (empty($files)) { + continue; + } + $exclude[] = $files; + } + + return array_unique(array_merge(...$exclude)); } /** - * Get PHPCPD command + * Find all files by pattern * - * @return string + * @param string $pattern + * @param bool $searchFiles + * @param array $excludePaths + * @return array */ - private function getCommand() + private function find(string $pattern, bool $searchFiles, array $excludePaths): array { - $vendorDir = require BP . '/app/etc/vendor_path.php'; - return 'php ' . BP . '/' . $vendorDir . '/bin/phpcpd'; + $finder = new Finder(); + $finder->in(BP); + $finder->notPath($excludePaths); + if ($searchFiles) { + $finder->files(); + $finder->name($pattern); + } else { + $finder->path($pattern); + } + + $result = []; + foreach ($finder as $file) { + $result[] = $file->getRealPath(); + } + + return $result; } } diff --git a/dev/tests/static/testsuite/Magento/Test/Php/LiveCodeTest.php b/dev/tests/static/testsuite/Magento/Test/Php/LiveCodeTest.php index 65358cd785066..2df2b27c24fe3 100644 --- a/dev/tests/static/testsuite/Magento/Test/Php/LiveCodeTest.php +++ b/dev/tests/static/testsuite/Magento/Test/Php/LiveCodeTest.php @@ -359,10 +359,7 @@ public function testCopyPaste() $result = $copyPasteDetector->run([BP]); - $output = ""; - if (file_exists($reportFile)) { - $output = file_get_contents($reportFile); - } + $output = file_exists($reportFile) ? file_get_contents($reportFile) : ''; $this->assertTrue( $result, diff --git a/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist/common.txt b/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist/common.txt index fc8c0c17447d8..efc7e669b3605 100644 --- a/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist/common.txt +++ b/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist/common.txt @@ -1,220 +1,111 @@ -Magento/Adminhtml -Magento/Backend -Magento/Bundle -Magento/Catalog/Block/Product/ProductList -Magento/Catalog/Model/Category/Attribute/Source -Magento/Catalog/Model/Category/Indexer -Magento/Catalog/Model/Product -Magento/Core/Model/Resource/Design -Zend +app/code/Magento/Backend/Block/Widget/Grid/Massaction/AbstractMassaction.php +app/code/Magento/Backend/Block/Dashboard/Tab/Customers/Most.php +app/code/Magento/Backend/Test/Unit/Model/_files/ +app/code/Magento/Bundle +app/code/Magento/Catalog/Model/Product/Visibility.php +app/code/Magento/Catalog/Model/Product/Attribute/Source/Status.php +app/code/Magento/Catalog/Model/Category.php +app/code/Magento/Catalog/Model/ResourceModel/Product/Link/SaveHandler.php dev -Mysql -lib/internal/Magento/Framework/DB -sql -data -Magento/Paypal -Magento/Downloadable -Magento/Core/Model/Resource/Helper -Magento/Catalog/Block/Adminhtml -Magento/Catalog/Model/Resource/Collection -Magento/Catalog/Model/Resource/Product/Indexer -Magento/CatalogInventory/Model/Resource/Indexer/Stock -Magento/Sales/Model/Order -Magento/CatalogInventory/Model/Source -Magento/CatalogSearch/Model/Resource/Helper -Magento/CatalogSearch/Model/Resource/Advanced -Magento/CatalogSearch/Model/Resource/Search -Magento/Checkout/Block/Multishipping -Magento/Checkout/Model/Type -Magento/Catalog/Model/Template -Magento/Cms/Model -Magento/GiftMessage/Model -Magento/GroupedProduct/Model/Resource/Product/Type/Grouped -Magento/Sales/Block/Order -Magento/Sales/Controller/Adminhtml/Order -Magento/Sales/Model/Resource/Helper -Magento/Sales/Model/Resource/Order -Magento/Sales/Model/Service/Quote -Magento/Catalog/Block/Product -Magento/Catalog/Model/Resource/Product -Magento/Catalog/Model/Layer -Magento/Eav/Model/Entity/Collection -Magento/CatalogImportExport/Model/Export -Magento/CatalogImportExport/Model/Import -Magento/CatalogRule/Block/Adminhtml/Promo/Catalog/Edit/Tab -Magento/Checkout/Block/Onepage -Magento/Checkout/Service/V1/Data/Cart -app/code/Magento/Cms/Api/Data -Magento/Cms/Block/Adminhtml/Page/Edit -Magento/Core/Model/Design/Backend -Magento/Core/Model/Layout/File/Source/Override -Magento/Core/Model/Store -Magento/Store/Model -Magento/Cron/Model/Config/Backend/Product -Magento/Customer/Block/Account/Dashboard -Magento/Customer/Controller/Adminhtml/Index -Magento/Customer/Model/Config/Backend/Show -Magento/Customer/Model/Metadata -Magento/Customer/Model/Resource/Customer -Magento/Directory/Model -Magento/GiftMessage/Block/Adminhtml/Sales/Order -Magento/ImportExport/Model -Magento/Integration/Controller/Adminhtml -Magento/Newsletter/Block/Adminhtml/Template/Preview -Magento/Newsletter/Block/Adminhtml/Queue/Preview -Magento/Payment/Block/Form -Magento/Payment/Model/Method -Magento/Payment/Model/Config -Magento/ProductAlert/Model -Magento/Rating/Model -Magento/Reports/Block/Adminhtml -Magento/Reports/Block/Product/Widget -Magento/Reports/Controller/Adminhtml/Report -Magento/Reports/Model/Resource/Helper -Magento/Reports/Model/Resource -Magento/Review/Block -Magento/Review/Model/Resource/Review/Product -Magento/Rss/Block/Catalog -Magento/Rule -Magento/Sales/Block/Adminhtml/Order -Magento/Shipping/Block/Adminhtml/View -Magento/Sales/Model/Resource -Magento/Quote/Model/Quote/Address/Total -Magento/Sales/Model/Resource/Report/Order -Magento/SalesRule/Block/Adminhtml/Promo/Quote/Edit/Tab -Magento/Search/Block/Adminhtml/Dashboard -Magento/Shipping/Model/Carrier -Magento/Sitemap/Block/Adminhtml/Edit -Magento/Sitemap/Model/ -Magento/CatalogRule/Model -Magento/Rss/Controller/Adminhtml/Feed -Magento/Tax/Block/Checkout -Magento/Tax/Model/Sales/Pdf -Magento/Tax/Model/Config/Price -Magento/Tax/Api/Data -Magento/Usps/Model -Magento/Webapi/Block/Adminhtml -Magento/Webapi/Model -Magento/Widget/Model/Widget/Instance -Magento/Wishlist/Block -Magento/Wishlist/Model -lib/internal/Magento/Framework/Archive -lib/internal/Magento/Framework/HTTP/Client -lib/internal/Magento/Framework/Acl -lib/internal/Magento/Framework/Convert -lib/internal/Magento/Framework/App/Config -Magento/Cron/Model -Magento/SalesRule/Model/Resource/Report/Rule -Magento/SalesRule/Model/Resource/Rule -Magento/Theme/Block/Adminhtml/System/Design/Theme/Edit -Magento/User/Block/User/Edit +lib/internal/Magento/Framework/DB/Select/RendererProxy.php +lib/internal/Magento/Framework/DB/Query/Generator.php +app/code/Magento/Paypal/Model/Method/Agreement.php +app/code/Magento/Paypal/Test/Unit/Model/_files/additional_info_data.php +app/code/Magento/Downloadable/Model/Link.php +app/code/Magento/Downloadable/Model/Sales/Order/Pdf/Items/Creditmemo.php +app/code/Magento/Downloadable/Model/ResourceModel/Link/Collection.php +app/code/Magento/Downloadable/Ui/DataProvider/Product/Form/Modifier/Links.php +app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Crosssell.php +app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Related.php +app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Upsell.php +app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Edit/Tab/Advanced.php +app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Sortby/Available.php +app/code/Magento/Catalog/Model/Layer/Filter/Dynamic/Auto.php +app/code/Magento/Sales/Model/Order/Pdf/ +app/code/Magento/Sales/Model/Order/CreditmemoRepository.php +app/code/Magento/Sales/Model/Order/Email/Container/ +app/code/Magento/Sales/Model/Order/Invoice.php +app/code/Magento/Sales/Model/Order/Invoice/Item.php +app/code/Magento/Sales/Model/Order/Creditmemo/Item.php +app/code/Magento/Sales/Model/Order/ShipmentRepository.php +app/code/Magento/Sales/Model/ResourceModel/Order/Creditmemo/Relation/Refund.php +app/code/Magento/Sales/Model/Order/Shipment/Sender/EmailSender.php +app/code/Magento/Sales/Model/Order/Invoice/Sender/EmailSender.php +app/code/Magento/Sales/Model/Order/Email/Sender/CreditmemoSender.php +app/code/Magento/Cms/Model/ResourceModel/Page/Grid/Collection.php +app/code/Magento/Shipping/Block/Order/Shipment.php +app/code/Magento/Sales/Block/Order/Creditmemo.php +app/code/Magento/Sales/Block/Order/Invoice.php +app/code/Magento/Sales/Block/Order/PrintOrder/Creditmemo.php +app/code/Magento/Sales/Controller/Adminhtml/Order/Creditmemo/NewAction.php +app/code/Magento/AdvancedCheckout/Controller/Adminhtml/Index/ConfigureQuoteItems.php +app/code/Magento/AdvancedPricingImportExport/Model/Export/AdvancedPricing.php +app/code/Magento/Cron/Model/Config/Backend/Product/Alert.php +app/code/Magento/Customer/Controller/Adminhtml/Address/Viewfile.php +app/code/Magento/Customer/Model/Metadata/Form/AbstractData.php +app/code/Magento/GiftMessage/Block/Adminhtml/Sales/Order/View/Items.php +app/code/Magento/ImportExport/Model/Export/Entity/AbstractEntity.php +app/code/Magento/ImportExport/Model/Import/Entity/AbstractEntity.php +app/code/Magento/Newsletter/Block/Adminhtml/Queue/Preview/Form.php +app/code/Magento/ProductAlert/Model/Observer.php +app/code/Magento/Reports/Block/Adminhtml/Sales/Invoiced/Grid.php +app/code/Magento/Reports/Model/ResourceModel/Customer/Totals/Collection.php +app/code/Magento/Review/Block/Customer/View.php +app/code/Magento/Rule/Test/Mftf/Helper/RuleHelper.php +app/code/Magento/Sales/Block/Adminhtml/Order/Status/NewStatus/Form.php +app/code/Magento/Sales/Model/ResourceModel/Collection/AbstractCollection.php +app/code/Magento/Sales/Model/ResourceModel/Report/ +app/code/Magento/Search/Block/Adminhtml/Dashboard/Last.php +app/code/Magento/Shipping/Model/Carrier/AbstractCarrierOnline.php +app/code/Magento/CatalogRule/Model/ResourceModel/SaveHandler.php +lib/internal/Magento/Framework/HTTP/Client/Socket.php +lib/internal/Magento/Framework/App/Config/Scope/Validator.php +app/code/Magento/Cron/Model/Schedule.php generated/code -Magento/Newsletter/Block/Adminhtml/Template/Grid/Renderer -Magento/Newsletter/Model/Template/Filter -Magento/Newsletter/Model/Resource/Subscriber -Magento/Tax/Service/V1/Data -Magento/CatalogInventory/Model/Resource/Stock/Item -lib/internal/Magento/Framework/Filesystem/Driver -Magento/OfflineShipping/Model/Carrier -Magento/Usps/Model/Carrier -Magento/Dhl/Model -Magento/Shipping/Model -Magento/Ui -Magento/Sales/Service/V1 -Magento/Sales/Api -Magento/Eav/Api/Data -Magento/Customer/Api/Data -Magento/Quote/Api/Data -Magento/Catalog/Api/Data -Magento/Sales/Spi -Magento/Shipping/Controller/Adminhtml/Order/Shipment +lib/internal/Magento/Framework/Filesystem/Driver/File/Mime.php +app/code/Magento/Shipping/Model/Rate/PackageResult.php +app/code/Magento/Ui/DataProvider/AbstractDataProvider.php +app/code/Magento/Ui/Config/Converter/Url.php +app/code/Magento/Ui/Config/Converter/Buttons.php +app/code/Magento/Ui/Controller/Adminhtml/Index/Render.php +app/code/Magento/Sales/Api/Data/CreditmemoItemInterface.php vendor -Magento/CatalogSearch/Model/Resource/Fulltext -Magento/CatalogSearch/Model/Indexer -lib/internal/Magento/Framework/Data -lib/internal/Magento/Framework/Service -app/code/Magento/CatalogInventory/Api/Data -app/code/Magento/Sales/Model/Spi -Magento/Catalog/Model/ProductLink -Magento/GroupedProduct/Model/Resource/Product/Type/Grouped -lib/internal/Magento/Framework/Interception/ObjectManager/Config -app/code/Magento/OfflinePayments/Model -Magento/Weee/Model/Resource -Magento/Theme/Model/Design/Backend -Magento/Core/Model/Resource/Layout/Link -Magento/Theme/Model/Resource/Design -Magento/Integration/Block/Adminhtml/Integration/Edit/Tab -Magento/Config/Model/Config/Backend -Magento/Backup/Model/Config/Backend -Magento/Catalog/Setup -Magento/CatalogInventory/Setup -Magento/Checkout/Setup -Magento/Customer/Setup -Magento/Eav/Setup -Magento/Quote/Setup -Magento/Reports/Setup -Magento/Sales/Setup -Magento/SalesRule/Setup -Magento/Eav/Setup +lib/internal/Magento/Framework/DataObject/Copy/Config/Data/Proxy.php +app/code/Magento/Catalog/Setup/Patch/Data/UpgradeWebsiteAttributes.php +app/code/Magento/CatalogUrlRewrite/Setup/Recurring.php +app/code/Magento/Checkout/Setup/Patch/Data/PrepareInitialCheckoutConfiguration.php +app/code/Magento/ConfigurableProduct/Setup/Recurring.php +app/code/Magento/Sales/Setup/SalesSetup.php +app/code/Magento/Weee/Setup/Recurring.php +app/code/Magento/Wishlist/Setup/Recurring.php setup/src/Magento/Setup/Fixtures -Magento/ConfigurableProduct/Setup -Magento/Weee/Setup -Magento/Wishlist/Setup -Magento/CatalogUrlRewrite/Setup -Magento/AdvancedSalesRule/Setup -Magento/VisualMerchandiser/Setup -Magento/Catalog/Model -Magento/Catalog/Ui/Component/Listing -Magento/ConfigurableProduct/Block/Adminhtml/Product/Edit/Tab/Variations/Config -Magento/Payment/Gateway/Data/Order -Magento/ProductAlert/Controller/Unsubscribe -Magento/Reports/Model/ResourceModel/Customer/Orders -Magento/Sales/Model/ResourceModel/Report -Magento/SalesRule/Model -Magento/Search/Ui/Component/Listing/Column/Scope -Magento/Tax/Model/Calculation -Magento/Vault/Model/Ui -Magento/GroupedProduct/Model/ResourceModel/Product/Indexer/Price -Magento/AdvancedSalesRule/Model/Rule/Condition/Product -Magento/CmsStaging/Controller/Adminhtml/Block/Update -Magento/Customer/Block/Widget -Magento/Persistent/Observer -Magento/Elasticsearch/Model/Adapter/Container -Magento/Elasticsearch/SearchAdapter -Magento/Staging/Model/Entity/DataProvider -Magento/CatalogStaging/Model/Update/Grid -Magento/Eav/Model/Api/SearchCriteria/CollectionProcessor -Magento/Framework/App/AreaList -Magento/Framework/App/Route/ConfigInterface -Magento/Framework/DataObject/Copy/Config/Data -Magento/Framework/Backup/Filesystem/Iterator -Magento/Theme/Model/Indexer/Design -Magento/Framework/EntityManager/Db -Magento/Framework/Mview/Config/Data -Magento/Framework/View/File/Collector/Override -Magento/Framework/MessageQueue/Consumer/Config/ConsumerConfigItem -Magento/Framework/MessageQueue/Publisher/Config/PublisherConfigItem -Magento/Framework/MessageQueue/Topology/Config/ExchangeConfigItem -IntegrationConfig.php +app/code/Magento/Catalog/Model/Indexer/Category/Product/Action/Rows.php +app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Price/Query/BaseFinalPrice.php +app/code/Magento/Catalog/Model/Attribute/Backend/ConsumerWebsiteAssign.php +app/code/Magento/Catalog/Ui/Component/Listing/ +app/code/Magento/Payment/Gateway/Data/Order/AddressAdapter.php +app/code/Magento/SalesRule/Model/CouponRepository.php +app/code/Magento/SalesRule/Test/Unit/Model/Rule/Metadata/_files/MetaData.php +app/code/Magento/Tax/Model/Calculation/UnitBaseCalculator.php +app/code/Magento/Customer/Block/Widget/ +app/code/Magento/Persistent/Observer/EmulateCustomerObserver.php +app/code/Magento/Eav/Model/Api/SearchCriteria/CollectionProcessor/FilterProcessor.php +lib/internal/Magento/Framework/App/AreaList/Proxy.php +lib/internal/Magento/Framework/App/Route/ConfigInterface/Proxy.php +lib/internal/Magento/Framework/Backup/Filesystem/Iterator/Filter.php +app/code/Magento/Theme/Model/Indexer/Design/Config.php +lib/internal/Magento/Framework/Mview/Config/Data/Proxy.php +lib/internal/Magento/Framework/View/File/Collector/Override +lib/internal/Magento/Framework/MessageQueue/Consumer/Config/ConsumerConfigItem/ +lib/internal/Magento/Framework/MessageQueue/Publisher/Config/PublisherConfigItem/Iterator.php +lib/internal/Magento/Framework/MessageQueue/Topology/Config/ExchangeConfigItem/Iterator.php +app/code/Magento/Integration/Model/IntegrationConfig.php *Test.php -setup/performance-toolkit/aggregate-report -Magento/MessageQueue/Setup -Magento/Elasticsearch/Elasticsearch5 Test/_files -Magento/InventoryCatalogAdminUi/Controller/Adminhtml -Magento/InventoryConfigurableProductIndexer/Indexer -Magento/InventoryGroupedProductIndexer/Indexer -Magento/Customer/Model/FileUploaderDataResolver.php -Magento/Customer/Model/Customer/DataProvider.php -Magento/InventoryShippingAdminUi/Ui/DataProvider -Magento/Elasticsearch6/Model/Client -Magento/CatalogSearch/Model/ResourceModel/Fulltext -Magento/Elasticsearch/Model/Layer/Search -Magento/Elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/FieldName/Resolver -Magento/Elasticsearch6/Model/Client -Magento/Config/App/Config/Type -Magento/InventoryReservationCli/Test/Integration -Magento/InventoryAdminUi/Controller/Adminhtml -Magento/Newsletter/Model/Queue -Magento/Framework/Mail/Template -Magento/CheckoutAgreements/Model/Checkout/Plugin +Test/Unit/_files +Test/Integration/_files +app/code/Magento/Elasticsearch6/Model/Client/Elasticsearch.php +app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldMapper/Product/FieldProvider/FieldType/Resolver/CompositeResolver.php +app/code/Magento/Elasticsearch/Model/Layer/Search/ItemCollectionProvider.php +app/code/Magento/Newsletter/Model/Queue/TransportBuilder.php +app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/attribute/steps/bulk.phtml diff --git a/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist/inventory.txt b/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist/inventory.txt new file mode 100644 index 0000000000000..0a12e975e097e --- /dev/null +++ b/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist/inventory.txt @@ -0,0 +1,11 @@ +app/code/Magento/InventoryBundleProductIndexer/Indexer/SelectBuilder.php +app/code/Magento/InventoryConfigurableProductIndexer/Indexer/SelectBuilder.php +app/code/Magento/InventoryCatalogAdminUi/Controller/Adminhtml/Source/BulkAssignPost.php +app/code/Magento/InventoryBundleProductIndexer/Indexer/SourceItem/SourceItemIndexer.php +app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdSkuAndQty.php +app/code/Magento/InventoryBundleProductIndexer/Indexer/SourceItem/SiblingSkuListInStockProvider.php +app/code/Magento/InventoryInStorePickupWebapiExtension/Model/Rest/Swagger/Generator.php +app/code/Magento/InventoryAdminUi/Controller/Adminhtml/Source/MassDisable.php +app/code/Magento/InventoryBundleProductIndexer/Indexer/StockIndexer.php +app/code/Magento/InventoryBundleProductIndexer/Indexer/SelectBuilder.php +app/code/Magento/InventoryConfigurableProductIndexer/Indexer/SourceItem/SiblingSkuListInStockProvider.php