From fb80aec3e8d5897b5e4d1d5727ca0775dd4e08ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 13 Nov 2018 13:07:16 +0100 Subject: [PATCH] Enhancement: Implement AbstractOrFinalRule --- CHANGELOG.md | 26 +- README.md | 19 + composer.json | 5 +- composer.lock | 2449 +++++++++-------- phpstan.neon | 3 + src/.gitkeep | 0 src/Classes/AbstractOrFinalRule.php | 49 + test/AutoReview/TestCodeTest.php | 5 +- .../Classes/AbstractOrFinalRuleTest.php | 82 + .../Classes/Fixture/AbstractClass.php | 18 + .../AbstractClassWithAnonymousClass.php | 27 + .../Classes/Fixture/ExampleInterface.php | 18 + .../Classes/Fixture/ExampleTrait.php | 18 + .../Classes/Fixture/FinalClass.php | 18 + .../Fixture/FinalClassWithAnonymousClass.php | 27 + .../Fixture/NeitherAbstractNorFinalClass.php | 18 + .../Fixture/TraitWithAnonymousClass.php | 27 + .../Fixture/script-with-anonymous-class.php | 18 + test/Unit/Classes/AbstractOrFinalRuleTest.php | 145 + 19 files changed, 1726 insertions(+), 1246 deletions(-) delete mode 100644 src/.gitkeep create mode 100644 src/Classes/AbstractOrFinalRule.php create mode 100644 test/Integration/Classes/AbstractOrFinalRuleTest.php create mode 100644 test/Integration/Classes/Fixture/AbstractClass.php create mode 100644 test/Integration/Classes/Fixture/AbstractClassWithAnonymousClass.php create mode 100644 test/Integration/Classes/Fixture/ExampleInterface.php create mode 100644 test/Integration/Classes/Fixture/ExampleTrait.php create mode 100644 test/Integration/Classes/Fixture/FinalClass.php create mode 100644 test/Integration/Classes/Fixture/FinalClassWithAnonymousClass.php create mode 100644 test/Integration/Classes/Fixture/NeitherAbstractNorFinalClass.php create mode 100644 test/Integration/Classes/Fixture/TraitWithAnonymousClass.php create mode 100644 test/Integration/Classes/Fixture/script-with-anonymous-class.php create mode 100644 test/Unit/Classes/AbstractOrFinalRuleTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e6f38f4..c17d45c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,28 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## Unreleased -### Added - -* - -### Changed - -* +For a full diff see (https://github.com/localheinz/phpstan-rules/compare/0.1.0...HEAD). -### Deprecated +## [`0.1.0`](https://github.com/localheinz/phpstan-rules/releases/tag/0.3.0) -* +For a full diff see [`362c7ea...0.1.0`](https://github.com/localheinz/phpstan-rules/compare/362c7ea...0.1.0). -### Removed - -* - -### Fixed - -* +### Added -### Security +* added `Classes\AbstractOrFinalRule`, which reports an error when a non-anonymous + class is neither `abstract` nor `final`, ([#1](https://github.com/localheinz/phpstan-rules/pull/#1)), by [@localheinz](https://github.com/localheinz) -* diff --git a/README.md b/README.md index ecbdb57f..04c5c089 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,25 @@ Run $ composer require localheinz/phpstan-rules ``` +## Rules + +This package provides the following rules for use with [`phpstan/phpstan`](https://github.com/phpstan/phpstan): + +* [`Localheinz\PHPStan\Rules\Classes\AbstractOrFinal`](https://github.com/localheinz/phpstan-rules#classesabstractorfinal) + +### `Classes\AbstractOrFinal` + +This rule reports an error when a non-anonymous class is neither `abstract` nor `final`. + +## Usage + +Add the rule of your choice to your `phpstan.neon`: + +```neon +rules: + - Localheinz\PHPStan\Rules\Classes\AbstractOrFinalRule +``` + ## Changelog Please have a look at [`CHANGELOG.md`](CHANGELOG.md). diff --git a/composer.json b/composer.json index c9cb0e10..33cad5a2 100644 --- a/composer.json +++ b/composer.json @@ -15,14 +15,15 @@ } ], "require": { - "php": "^7.1" + "php": "^7.1", + "nikic/php-parser": "^4.1.0", + "phpstan/phpstan": "~0.10.5" }, "require-dev": { "infection/infection": "~0.11.1", "localheinz/composer-normalize": "~0.9.0", "localheinz/php-cs-fixer-config": "~1.15.0", "localheinz/test-util": "~0.7.0", - "phpstan/phpstan": "~0.10.5", "phpstan/phpstan-strict-rules": "~0.10.1", "phpunit/phpunit": "^7.4.3" }, diff --git a/composer.lock b/composer.lock index 68ff4d5b..442625fa 100644 --- a/composer.lock +++ b/composer.lock @@ -4,42 +4,33 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ffb4d75dac4523dc1c837fa63f1ae785", - "packages": [], - "packages-dev": [ + "content-hash": "abf6c66c6a34023b477f33888374511a", + "packages": [ { - "name": "composer/ca-bundle", - "version": "1.1.3", + "name": "composer/xdebug-handler", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660", - "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/b8e9745fb9b06ea6664d8872c4505fb16df4611c", + "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c", "shasum": "" }, "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", - "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { - "Composer\\CaBundle\\": "src" + "Composer\\XdebugHandler\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -48,41 +39,37 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "description": "Restarts a process without xdebug.", "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" + "Xdebug", + "performance" ], - "time": "2018-10-18T06:09:13+00:00" + "time": "2018-08-31T19:07:57+00:00" }, { - "name": "composer/semver", - "version": "1.4.2", + "name": "jean85/pretty-package-versions", + "version": "1.2", "source": { "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/75c7effcf3f77501d0e0caa75111aff4daa0dd48", + "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0" + "ocramius/package-versions": "^1.2.0", + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { @@ -92,7 +79,7 @@ }, "autoload": { "psr-4": { - "Composer\\Semver\\": "src" + "Jean85\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -101,571 +88,581 @@ ], "authors": [ { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "A wrapper for ocramius/package-versions to get pretty versions strings", "keywords": [ - "semantic", - "semver", - "validation", - "versioning" + "composer", + "package", + "release", + "versions" ], - "time": "2016-08-30T16:08:34+00:00" + "time": "2018-06-13T13:22:40+00:00" }, { - "name": "composer/xdebug-handler", - "version": "1.3.0", + "name": "nette/bootstrap", + "version": "v2.4.6", "source": { "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c" + "url": "https://github.com/nette/bootstrap.git", + "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/b8e9745fb9b06ea6664d8872c4505fb16df4611c", - "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c", + "url": "https://api.github.com/repos/nette/bootstrap/zipball/268816e3f1bb7426c3a4ceec2bd38a036b532543", + "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0" + "nette/di": "~2.4.7", + "nette/utils": "~2.4", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "latte/latte": "~2.2", + "nette/application": "~2.3", + "nette/caching": "~2.3", + "nette/database": "~2.3", + "nette/forms": "~2.3", + "nette/http": "~2.4.0", + "nette/mail": "~2.3", + "nette/robot-loader": "^2.4.2 || ^3.0", + "nette/safe-stream": "~2.2", + "nette/security": "~2.3", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4.1" + }, + "suggest": { + "nette/robot-loader": "to use Configurator::createRobotLoader()", + "tracy/tracy": "to use Configurator::enableTracy()" }, "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" ], "authors": [ { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "Restarts a process without xdebug.", + "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.", + "homepage": "https://nette.org", "keywords": [ - "Xdebug", - "performance" + "bootstrapping", + "configurator", + "nette" ], - "time": "2018-08-31T19:07:57+00:00" + "time": "2018-05-17T12:52:20+00:00" }, { - "name": "doctrine/annotations", - "version": "v1.6.0", + "name": "nette/di", + "version": "v2.4.14", "source": { "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + "url": "https://github.com/nette/di.git", + "reference": "923da3e2c0aa53162ef455472c0ac7787b096c5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "url": "https://api.github.com/repos/nette/di/zipball/923da3e2c0aa53162ef455472c0ac7787b096c5a", + "reference": "923da3e2c0aa53162ef455472c0ac7787b096c5a", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", - "php": "^7.1" + "ext-tokenizer": "*", + "nette/neon": "^2.3.3 || ~3.0.0", + "nette/php-generator": "^2.6.1 || ~3.0.0", + "nette/utils": "^2.4.3 || ~3.0.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/bootstrap": "<2.4", + "nette/nette": "<2.2" }, "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "^6.4" + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "2.4-dev" } }, "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" ], "authors": [ { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", + "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.", + "homepage": "https://nette.org", "keywords": [ - "annotations", - "docblock", - "parser" + "compiled", + "di", + "dic", + "factory", + "ioc", + "nette", + "static" ], - "time": "2017-12-06T07:11:42+00:00" + "time": "2018-09-17T15:47:40+00:00" }, { - "name": "doctrine/instantiator", - "version": "1.1.0", + "name": "nette/finder", + "version": "v2.4.2", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "url": "https://github.com/nette/finder.git", + "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/nette/finder/zipball/ee951a656cb8ac622e5dd33474a01fd2470505a0", + "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0", "shasum": "" }, "require": { - "php": "^7.1" + "nette/utils": "~2.4", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" }, "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "2.4-dev" } }, "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "description": "🔍 Nette Finder: find files and directories with an intuitive API.", + "homepage": "https://nette.org", "keywords": [ - "constructor", - "instantiate" + "filesystem", + "glob", + "iterator", + "nette" ], - "time": "2017-07-22T11:58:36+00:00" + "time": "2018-06-28T11:49:23+00:00" }, { - "name": "doctrine/lexer", - "version": "v1.0.1", + "name": "nette/neon", + "version": "v2.4.3", "source": { "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "url": "https://github.com/nette/neon.git", + "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/nette/neon/zipball/5e72b1dd3e2d34f0863c5561139a19df6a1ef398", + "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398", "shasum": "" }, "require": { - "php": ">=5.3.2" + "ext-iconv": "*", + "ext-json": "*", + "php": ">=5.6.0" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.4-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" ], "authors": [ { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "description": "🍸 Nette NEON: encodes and decodes NEON file format.", + "homepage": "http://ne-on.org", "keywords": [ - "lexer", - "parser" + "export", + "import", + "neon", + "nette", + "yaml" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2018-03-21T12:12:21+00:00" }, { - "name": "friendsofphp/php-cs-fixer", - "version": "v2.13.0", + "name": "nette/php-generator", + "version": "v3.0.5", "source": { "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "7136aa4e0c5f912e8af82383775460d906168a10" + "url": "https://github.com/nette/php-generator.git", + "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/7136aa4e0c5f912e8af82383775460d906168a10", - "reference": "7136aa4e0c5f912e8af82383775460d906168a10", + "url": "https://api.github.com/repos/nette/php-generator/zipball/ea90209c2e8a7cd087b2742ca553c047a8df5eff", + "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff", "shasum": "" }, "require": { - "composer/semver": "^1.4", - "composer/xdebug-handler": "^1.2", - "doctrine/annotations": "^1.2", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^5.6 || >=7.0 <7.3", - "php-cs-fixer/diff": "^1.3", - "symfony/console": "^3.2 || ^4.0", - "symfony/event-dispatcher": "^3.0 || ^4.0", - "symfony/filesystem": "^3.0 || ^4.0", - "symfony/finder": "^3.0 || ^4.0", - "symfony/options-resolver": "^3.0 || ^4.0", - "symfony/polyfill-php70": "^1.0", - "symfony/polyfill-php72": "^1.4", - "symfony/process": "^3.0 || ^4.0", - "symfony/stopwatch": "^3.0 || ^4.0" + "nette/utils": "^2.4.2 || ~3.0.0", + "php": ">=7.0" }, "conflict": { - "hhvm": "*" + "nette/nette": "<2.2" }, "require-dev": { - "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", - "justinrainbow/json-schema": "^5.0", - "keradus/cli-executor": "^1.1", - "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.1", - "php-cs-fixer/accessible-object": "^1.0", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.0.1", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.0.1", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1", - "phpunitgoodpractices/traits": "^1.5.1", - "symfony/phpunit-bridge": "^4.0" - }, - "suggest": { - "ext-mbstring": "For handling non-UTF8 characters in cache signature.", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", - "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", + "type": "library", "extra": { "branch-alias": { - "dev-master": "2.13-dev" + "dev-master": "3.0-dev" } }, "autoload": { - "psr-4": { - "PhpCsFixer\\": "src/" - }, "classmap": [ - "tests/Test/AbstractFixerTestCase.php", - "tests/Test/AbstractIntegrationCaseFactory.php", - "tests/Test/AbstractIntegrationTestCase.php", - "tests/Test/Assert/AssertTokensTrait.php", - "tests/Test/IntegrationCase.php", - "tests/Test/IntegrationCaseFactory.php", - "tests/Test/IntegrationCaseFactoryInterface.php", - "tests/Test/InternalIntegrationCaseFactory.php", - "tests/TestCase.php" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" ], "authors": [ { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "A tool to automatically fix PHP code style", - "time": "2018-08-23T13:15:44+00:00" + "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.2 features.", + "homepage": "https://nette.org", + "keywords": [ + "code", + "nette", + "php", + "scaffolding" + ], + "time": "2018-08-09T14:32:27+00:00" }, { - "name": "fzaninotto/faker", - "version": "v1.8.0", + "name": "nette/robot-loader", + "version": "v3.1.0", "source": { "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" + "url": "https://github.com/nette/robot-loader.git", + "reference": "fc76c70e740b10f091e502b2e393d0be912f38d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", - "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", + "url": "https://api.github.com/repos/nette/robot-loader/zipball/fc76c70e740b10f091e502b2e393d0be912f38d4", + "reference": "fc76c70e740b10f091e502b2e393d0be912f38d4", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "ext-tokenizer": "*", + "nette/finder": "^2.3 || ^3.0", + "nette/utils": "^2.4 || ^3.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" }, "require-dev": { - "ext-intl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "squizlabs/php_codesniffer": "^1.5" + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "3.1-dev" } }, "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" ], "authors": [ { - "name": "François Zaninotto" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "Faker is a PHP library that generates fake data for you.", + "description": "🍀 Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.", + "homepage": "https://nette.org", "keywords": [ - "data", - "faker", - "fixtures" + "autoload", + "class", + "interface", + "nette", + "trait" ], - "time": "2018-07-12T10:23:15+00:00" + "time": "2018-08-13T14:19:06+00:00" }, { - "name": "infection/infection", - "version": "0.11.1", + "name": "nette/utils", + "version": "v2.5.3", "source": { "type": "git", - "url": "https://github.com/infection/infection.git", - "reference": "a354c5d5865d9dfe2f58a5ef2ea9a9f2358c83a6" + "url": "https://github.com/nette/utils.git", + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infection/infection/zipball/a354c5d5865d9dfe2f58a5ef2ea9a9f2358c83a6", - "reference": "a354c5d5865d9dfe2f58a5ef2ea9a9f2358c83a6", + "url": "https://api.github.com/repos/nette/utils/zipball/17b9f76f2abd0c943adfb556e56f2165460b15ce", + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce", "shasum": "" }, "require": { - "composer/xdebug-handler": "^1.3", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "justinrainbow/json-schema": "^5.2", - "nikic/php-parser": "^4.1", - "ocramius/package-versions": "^1.2", - "padraic/phar-updater": "^1.0.4", - "php": "^7.1", - "pimple/pimple": "^3.2", - "sebastian/diff": "^1.4 || ^2.0 || ^3.0", - "symfony/console": "^3.2 || ^4.0", - "symfony/filesystem": "^3.2 || ^4.0", - "symfony/finder": "^3.2 || ^4.0", - "symfony/process": "^3.2 || ^4.0", - "symfony/yaml": "^3.2 || ^4.0", - "webmozart/assert": "^1.3" + "php": ">=5.6.0" }, "conflict": { - "symfony/console": "=3.4.16 || =4.1.5", - "symfony/process": "3.4.2" + "nette/nette": "<2.2" }, "require-dev": { - "mockery/mockery": "^1.1", - "phpunit/phpunit": "^6" + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize() and toAscii()", + "ext-intl": "for script transliteration in Strings::webalize() and toAscii()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" }, - "bin": [ - "bin/infection" - ], "type": "library", - "autoload": { - "psr-4": { - "Infection\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" } }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/loader.php" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" ], "authors": [ { - "name": "Maks Rafalko", - "email": "maks.rafalko@gmail.com", - "homepage": "https://twitter.com/maks_rafalko" - }, - { - "name": "Gert de Pagter", - "homepage": "https://github.com/BackEndTea" - }, - { - "name": "Théo FIDRY", - "email": "theo.fidry@gmail.com", - "homepage": "https://twitter.com/tfidry" - }, - { - "name": "Oleg Zhulnev", - "homepage": "https://github.com/sidz" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" }, { - "name": "Alexey Kopytko", - "email": "alexey@kopytko.com", - "homepage": "https://www.alexeykopytko.com" + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "Infection is a Mutation Testing framework for PHP. The mutation adequacy score can be used to measure the effectiveness of a test set in terms of its ability to detect faults.", + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", "keywords": [ - "coverage", - "mutant", - "mutation framework", - "mutation testing", - "testing", - "unit testing" + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" ], - "time": "2018-11-13T04:22:01+00:00" + "time": "2018-09-18T10:22:16+00:00" }, { - "name": "jean85/pretty-package-versions", - "version": "1.2", + "name": "nikic/php-parser", + "version": "v4.1.0", "source": { "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "d0230c5c77a7e3cfa69446febf340978540958c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/75c7effcf3f77501d0e0caa75111aff4daa0dd48", - "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/d0230c5c77a7e3cfa69446febf340978540958c0", + "reference": "d0230c5c77a7e3cfa69446febf340978540958c0", "shasum": "" }, "require": { - "ocramius/package-versions": "^1.2.0", - "php": "^7.0" + "ext-tokenizer": "*", + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^6.5 || ^7.0" }, + "bin": [ + "bin/php-parse" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "4.1-dev" } }, "autoload": { "psr-4": { - "Jean85\\": "src/" + "PhpParser\\": "lib/PhpParser" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" + "name": "Nikita Popov" } ], - "description": "A wrapper for ocramius/package-versions to get pretty versions strings", + "description": "A PHP parser written in PHP", "keywords": [ - "composer", - "package", - "release", - "versions" + "parser", + "php" ], - "time": "2018-06-13T13:22:40+00:00" + "time": "2018-10-10T09:24:14+00:00" }, { - "name": "justinrainbow/json-schema", - "version": "5.2.7", + "name": "ocramius/package-versions", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "8560d4314577199ba51bf2032f02cd1315587c23" + "url": "https://github.com/Ocramius/PackageVersions.git", + "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8560d4314577199ba51bf2032f02cd1315587c23", - "reference": "8560d4314577199ba51bf2032f02cd1315587c23", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f", + "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f", "shasum": "" }, "require": { - "php": ">=5.3.3" + "composer-plugin-api": "^1.0.0", + "php": "^7.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" + "composer/composer": "^1.6.3", + "ext-zip": "*", + "infection/infection": "^0.7.1", + "phpunit/phpunit": "^7.0.0" }, - "bin": [ - "bin/validate-json" - ], - "type": "library", + "type": "composer-plugin", "extra": { + "class": "PackageVersions\\Installer", "branch-alias": { - "dev-master": "5.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "JsonSchema\\": "src/JsonSchema/" + "PackageVersions\\": "src/PackageVersions" } }, "notification-url": "https://packagist.org/downloads/", @@ -674,163 +671,154 @@ ], "authors": [ { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" } ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "time": "2018-02-14T22:26:30+00:00" + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "time": "2018-02-05T13:05:30+00:00" }, { - "name": "localheinz/classy", - "version": "0.3.0", + "name": "phpstan/phpdoc-parser", + "version": "0.3", "source": { "type": "git", - "url": "https://github.com/localheinz/classy.git", - "reference": "8f1413f01a464f88521eac735f0e62b02da9ac67" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "ed3223362174b8067729930439e139794e9e514a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/localheinz/classy/zipball/8f1413f01a464f88521eac735f0e62b02da9ac67", - "reference": "8f1413f01a464f88521eac735f0e62b02da9ac67", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ed3223362174b8067729930439e139794e9e514a", + "reference": "ed3223362174b8067729930439e139794e9e514a", "shasum": "" }, "require": { - "php": "^7.0" + "php": "~7.1" }, "require-dev": { - "localheinz/php-cs-fixer-config": "~1.6.2", - "localheinz/test-util": "0.2.2", - "phpbench/phpbench": "0.13.0", - "phpunit/phpunit": "^6.4.1" + "consistence/coding-standard": "^2.0.0", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "phing/phing": "^2.16.0", + "phpstan/phpstan": "^0.10@dev", + "phpunit/phpunit": "^6.3", + "slevomat/coding-standard": "^3.3.0", + "symfony/process": "^3.4 || ^4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.3-dev" + } + }, "autoload": { "psr-4": { - "Localheinz\\Classy\\": "src/" + "PHPStan\\PhpDocParser\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Andreas Möller", - "email": "am@localheinz.com" - } - ], - "description": "Provides a way to collect classy constructs from source or a directory.", - "time": "2017-10-24T14:31:40+00:00" + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "time": "2018-06-20T17:48:01+00:00" }, { - "name": "localheinz/composer-normalize", - "version": "0.9.0", + "name": "phpstan/phpstan", + "version": "0.10.5", "source": { "type": "git", - "url": "https://github.com/localheinz/composer-normalize.git", - "reference": "cd7c78c32ca8352e842f4cd8423e7091af27e87f" + "url": "https://github.com/phpstan/phpstan.git", + "reference": "c6a8cd1fe08a23b9d101a55ffa9ff6b91d71ef5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/localheinz/composer-normalize/zipball/cd7c78c32ca8352e842f4cd8423e7091af27e87f", - "reference": "cd7c78c32ca8352e842f4cd8423e7091af27e87f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c6a8cd1fe08a23b9d101a55ffa9ff6b91d71ef5d", + "reference": "c6a8cd1fe08a23b9d101a55ffa9ff6b91d71ef5d", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1.0", - "localheinz/json-normalizer": "0.6.0", - "php": "^7.1", - "sebastian/diff": "^2.0.1 || ^3.0.0", - "symfony/console": "^2.5.0 || ^3.0.0 || ^4.0.0" + "composer/xdebug-handler": "^1.3.0", + "jean85/pretty-package-versions": "^1.0.3", + "nette/bootstrap": "^2.4 || ^3.0", + "nette/di": "^2.4.7 || ^3.0", + "nette/robot-loader": "^3.0.1", + "nette/utils": "^2.4.5 || ^3.0", + "nikic/php-parser": "^4.0.2", + "php": "~7.1", + "phpstan/phpdoc-parser": "^0.3", + "symfony/console": "~3.2 || ~4.0", + "symfony/finder": "~3.2 || ~4.0" }, "require-dev": { - "composer/composer": "^1.1.0", - "infection/infection": "^0.8.1", - "localheinz/php-cs-fixer-config": "~1.15.0", - "localheinz/test-util": "0.6.1", - "mikey179/vfsstream": "^1.6.5", - "phpstan/phpstan": "~0.9.2", - "phpstan/phpstan-strict-rules": "^0.9.0", - "phpunit/phpunit": "^6.5.7 || ^7.1.5" + "brianium/paratest": "^2.0", + "consistence/coding-standard": "^3.5", + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4", + "ext-gd": "*", + "ext-intl": "*", + "ext-mysqli": "*", + "ext-zip": "*", + "jakub-onderka/php-parallel-lint": "^1.0", + "localheinz/composer-normalize": "~0.9.0", + "phing/phing": "^2.16.0", + "phpstan/phpstan-deprecation-rules": "^0.10.2", + "phpstan/phpstan-php-parser": "^0.10", + "phpstan/phpstan-phpunit": "^0.10", + "phpstan/phpstan-strict-rules": "^0.10", + "phpunit/phpunit": "^7.0", + "slevomat/coding-standard": "^4.7.2" }, - "type": "composer-plugin", + "bin": [ + "bin/phpstan" + ], + "type": "library", "extra": { - "class": "Localheinz\\Composer\\Normalize\\NormalizePlugin" + "branch-alias": { + "dev-master": "0.10-dev" + } }, "autoload": { "psr-4": { - "Localheinz\\Composer\\Normalize\\": "src/" + "PHPStan\\": [ + "src/", + "build/PHPStan" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Andreas Möller", - "email": "am@localheinz.com" - } - ], - "description": "Provides a composer plugin for normalizing composer.json.", - "homepage": "https://github.com/localheinz/composer-normalize", - "keywords": [ - "composer", - "normalize", - "normalizer", - "plugin" - ], - "time": "2018-10-10T12:39:27+00:00" + "description": "PHPStan - PHP Static Analysis Tool", + "time": "2018-10-20T17:24:55+00:00" }, { - "name": "localheinz/json-normalizer", - "version": "0.6.0", + "name": "psr/log", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/localheinz/json-normalizer.git", - "reference": "f280f0b8125c7c26b2f8047fa84bfe14de785d84" + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/localheinz/json-normalizer/zipball/f280f0b8125c7c26b2f8047fa84bfe14de785d84", - "reference": "f280f0b8125c7c26b2f8047fa84bfe14de785d84", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", "shasum": "" }, "require": { - "justinrainbow/json-schema": "^4.0.0 || ^5.0.0", - "localheinz/json-printer": "^2.0.0", - "php": "^7.1" - }, - "require-dev": { - "infection/infection": "~0.8.1", - "localheinz/php-cs-fixer-config": "~1.13.1", - "localheinz/test-util": "0.6.1", - "phpbench/phpbench": "~0.14.0", - "phpspec/prophecy": "^1.7.1", - "phpunit/phpunit": "^7.1.1" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Localheinz\\Json\\Normalizer\\": "src/" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -839,47 +827,68 @@ ], "authors": [ { - "name": "Andreas Möller", - "email": "am@localheinz.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Provides normalizers for normalizing JSON documents.", - "homepage": "https://github.com/localheinz/json-normalizer", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "json", - "normalizer" + "log", + "psr", + "psr-3" ], - "time": "2018-04-07T08:03:24+00:00" + "time": "2016-10-10T12:19:37+00:00" }, { - "name": "localheinz/json-printer", - "version": "2.0.0", + "name": "symfony/console", + "version": "v4.1.7", "source": { "type": "git", - "url": "https://github.com/localheinz/json-printer.git", - "reference": "1a350fd94544df716d1c75ef107d34057f80ac7a" + "url": "https://github.com/symfony/console.git", + "reference": "432122af37d8cd52fba1b294b11976e0d20df595" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/localheinz/json-printer/zipball/1a350fd94544df716d1c75ef107d34057f80ac7a", - "reference": "1a350fd94544df716d1c75ef107d34057f80ac7a", + "url": "https://api.github.com/repos/symfony/console/zipball/432122af37d8cd52fba1b294b11976e0d20df595", + "reference": "432122af37d8cd52fba1b294b11976e0d20df595", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" }, "require-dev": { - "infection/infection": "~0.8.1", - "localheinz/php-cs-fixer-config": "~1.13.1", - "localheinz/test-util": "0.6.1", - "phpbench/phpbench": "~0.14.0", - "phpunit/phpunit": "^6.5.7" + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "psr/log-implementation": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, "autoload": { "psr-4": { - "Localheinz\\Json\\Printer\\": "src/" - } + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -887,45 +896,48 @@ ], "authors": [ { - "name": "Andreas Möller", - "email": "am@localheinz.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a JSON printer, allowing for flexible indentation.", - "homepage": "https://github.com/localheinz/json-printer", - "keywords": [ - "formatter", - "json", - "printer" - ], - "time": "2018-04-06T22:10:47+00:00" + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-10-31T09:30:44+00:00" }, { - "name": "localheinz/php-cs-fixer-config", - "version": "1.15.0", + "name": "symfony/finder", + "version": "v4.1.7", "source": { "type": "git", - "url": "https://github.com/localheinz/php-cs-fixer-config.git", - "reference": "bdd00adc049d4e78f1abea54ed6b01fa0de200df" + "url": "https://github.com/symfony/finder.git", + "reference": "1f17195b44543017a9c9b2d437c670627e96ad06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/localheinz/php-cs-fixer-config/zipball/bdd00adc049d4e78f1abea54ed6b01fa0de200df", - "reference": "bdd00adc049d4e78f1abea54ed6b01fa0de200df", + "url": "https://api.github.com/repos/symfony/finder/zipball/1f17195b44543017a9c9b2d437c670627e96ad06", + "reference": "1f17195b44543017a9c9b2d437c670627e96ad06", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": "^2.13.0", - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.25" + "php": "^7.1.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, "autoload": { "psr-4": { - "Localheinz\\PhpCsFixer\\Config\\": "src" - } + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -933,691 +945,1018 @@ ], "authors": [ { - "name": "Andreas Möller", - "email": "am@localheinz.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a configuration factory and multiple rule sets for friendsofphp/php-cs-fixer.", - "homepage": "https://github.com/localheinz/php-cs-fixer-config", - "time": "2018-08-23T14:47:20+00:00" + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2018-10-03T08:47:56+00:00" }, { - "name": "localheinz/test-util", - "version": "0.7.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.10.0", "source": { "type": "git", - "url": "https://github.com/localheinz/test-util.git", - "reference": "340d168a637f33e9f0d41e8c950c7e1e8bb6b19f" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/localheinz/test-util/zipball/340d168a637f33e9f0d41e8c950c7e1e8bb6b19f", - "reference": "340d168a637f33e9f0d41e8c950c7e1e8bb6b19f", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", "shasum": "" }, "require": { - "fzaninotto/faker": "^1.7.1", - "localheinz/classy": "0.3.0", - "php": "^7.1" + "php": ">=5.3.3" }, - "require-dev": { - "infection/infection": "~0.8.2", - "localheinz/php-cs-fixer-config": "~1.14.0", - "phpstan/phpstan": "~0.9.2", - "phpstan/phpstan-phpunit": "~0.9.4", - "phpstan/phpstan-strict-rules": "~0.9.0", - "phpunit/phpunit": "^6.0.0 || ^7.0.0" + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", - "autoload": { - "psr-4": { - "Localheinz\\Test\\Util\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" } }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Andreas Möller", - "email": "am@localheinz.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides utilities for tests.", - "homepage": "https://github.com/localheinz/test-util", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", "keywords": [ - "assertion", - "faker", - "phpunit", - "test" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], - "time": "2018-06-25T06:22:47+00:00" - }, + "time": "2018-09-21T13:07:52+00:00" + } + ], + "packages-dev": [ { - "name": "myclabs/deep-copy", - "version": "1.8.1", + "name": "composer/ca-bundle", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "url": "https://github.com/composer/ca-bundle.git", + "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660", + "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660", "shasum": "" }, "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] + "Composer\\CaBundle\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" ], - "time": "2018-06-11T23:09:50+00:00" + "time": "2018-10-18T06:09:13+00:00" }, { - "name": "nette/bootstrap", - "version": "v2.4.6", + "name": "composer/semver", + "version": "1.4.2", "source": { "type": "git", - "url": "https://github.com/nette/bootstrap.git", - "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543" + "url": "https://github.com/composer/semver.git", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/bootstrap/zipball/268816e3f1bb7426c3a4ceec2bd38a036b532543", - "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543", + "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", "shasum": "" }, "require": { - "nette/di": "~2.4.7", - "nette/utils": "~2.4", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" + "php": "^5.3.2 || ^7.0" }, "require-dev": { - "latte/latte": "~2.2", - "nette/application": "~2.3", - "nette/caching": "~2.3", - "nette/database": "~2.3", - "nette/forms": "~2.3", - "nette/http": "~2.4.0", - "nette/mail": "~2.3", - "nette/robot-loader": "^2.4.2 || ^3.0", - "nette/safe-stream": "~2.2", - "nette/security": "~2.3", - "nette/tester": "~2.0", - "tracy/tracy": "^2.4.1" - }, - "suggest": { - "nette/robot-loader": "to use Configurator::createRobotLoader()", - "tracy/tracy": "to use Configurator::enableTracy()" + "phpunit/phpunit": "^4.5 || ^5.0.5", + "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "1.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Composer\\Semver\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" + "MIT" ], "authors": [ { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" }, { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" } ], - "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.", - "homepage": "https://nette.org", + "description": "Semver library that offers utilities, version constraint parsing and validation.", "keywords": [ - "bootstrapping", - "configurator", - "nette" + "semantic", + "semver", + "validation", + "versioning" ], - "time": "2018-05-17T12:52:20+00:00" + "time": "2016-08-30T16:08:34+00:00" }, { - "name": "nette/di", - "version": "v2.4.14", + "name": "doctrine/annotations", + "version": "v1.6.0", "source": { "type": "git", - "url": "https://github.com/nette/di.git", - "reference": "923da3e2c0aa53162ef455472c0ac7787b096c5a" + "url": "https://github.com/doctrine/annotations.git", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/di/zipball/923da3e2c0aa53162ef455472c0ac7787b096c5a", - "reference": "923da3e2c0aa53162ef455472c0ac7787b096c5a", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "nette/neon": "^2.3.3 || ~3.0.0", - "nette/php-generator": "^2.6.1 || ~3.0.0", - "nette/utils": "^2.4.3 || ~3.0.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/bootstrap": "<2.4", - "nette/nette": "<2.2" + "doctrine/lexer": "1.*", + "php": "^7.1" }, "require-dev": { - "nette/tester": "^2.0", - "tracy/tracy": "^2.3" + "doctrine/cache": "1.*", + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "1.6.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" + "MIT" ], "authors": [ { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" + "name": "Roman Borschel", + "email": "roman@code-factory.org" }, { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.", - "homepage": "https://nette.org", + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", "keywords": [ - "compiled", - "di", - "dic", - "factory", - "ioc", - "nette", - "static" + "annotations", + "docblock", + "parser" ], - "time": "2018-09-17T15:47:40+00:00" + "time": "2017-12-06T07:11:42+00:00" }, { - "name": "nette/finder", - "version": "v2.4.2", + "name": "doctrine/instantiator", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/nette/finder.git", - "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0" - }, + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/finder/zipball/ee951a656cb8ac622e5dd33474a01fd2470505a0", - "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "nette/utils": "~2.4", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" + "php": "^7.1" }, "require-dev": { - "nette/tester": "~2.0", - "tracy/tracy": "^2.3" + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" + "MIT" ], "authors": [ { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" } ], - "description": "🔍 Nette Finder: find files and directories with an intuitive API.", - "homepage": "https://nette.org", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", "keywords": [ - "filesystem", - "glob", - "iterator", - "nette" + "constructor", + "instantiate" ], - "time": "2018-06-28T11:49:23+00:00" + "time": "2017-07-22T11:58:36+00:00" }, { - "name": "nette/neon", - "version": "v2.4.3", + "name": "doctrine/lexer", + "version": "v1.0.1", "source": { "type": "git", - "url": "https://github.com/nette/neon.git", - "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398" + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/neon/zipball/5e72b1dd3e2d34f0863c5561139a19df6a1ef398", - "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", "shasum": "" }, "require": { - "ext-iconv": "*", - "ext-json": "*", - "php": ">=5.6.0" - }, - "require-dev": { - "nette/tester": "~2.0", - "tracy/tracy": "^2.3" + "php": ">=5.3.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" + "MIT" ], "authors": [ { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" + "name": "Roman Borschel", + "email": "roman@code-factory.org" }, { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "🍸 Nette NEON: encodes and decodes NEON file format.", - "homepage": "http://ne-on.org", + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", "keywords": [ - "export", - "import", - "neon", - "nette", - "yaml" + "lexer", + "parser" ], - "time": "2018-03-21T12:12:21+00:00" + "time": "2014-09-09T13:34:57+00:00" }, { - "name": "nette/php-generator", - "version": "v3.0.5", + "name": "friendsofphp/php-cs-fixer", + "version": "v2.13.0", "source": { "type": "git", - "url": "https://github.com/nette/php-generator.git", - "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff" + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "7136aa4e0c5f912e8af82383775460d906168a10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/ea90209c2e8a7cd087b2742ca553c047a8df5eff", - "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/7136aa4e0c5f912e8af82383775460d906168a10", + "reference": "7136aa4e0c5f912e8af82383775460d906168a10", "shasum": "" }, "require": { - "nette/utils": "^2.4.2 || ~3.0.0", - "php": ">=7.0" + "composer/semver": "^1.4", + "composer/xdebug-handler": "^1.2", + "doctrine/annotations": "^1.2", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^5.6 || >=7.0 <7.3", + "php-cs-fixer/diff": "^1.3", + "symfony/console": "^3.2 || ^4.0", + "symfony/event-dispatcher": "^3.0 || ^4.0", + "symfony/filesystem": "^3.0 || ^4.0", + "symfony/finder": "^3.0 || ^4.0", + "symfony/options-resolver": "^3.0 || ^4.0", + "symfony/polyfill-php70": "^1.0", + "symfony/polyfill-php72": "^1.4", + "symfony/process": "^3.0 || ^4.0", + "symfony/stopwatch": "^3.0 || ^4.0" }, "conflict": { - "nette/nette": "<2.2" + "hhvm": "*" }, "require-dev": { - "nette/tester": "^2.0", - "tracy/tracy": "^2.3" + "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", + "justinrainbow/json-schema": "^5.0", + "keradus/cli-executor": "^1.1", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.1", + "php-cs-fixer/accessible-object": "^1.0", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.0.1", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.0.1", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1", + "phpunitgoodpractices/traits": "^1.5.1", + "symfony/phpunit-bridge": "^4.0" }, - "type": "library", + "suggest": { + "ext-mbstring": "For handling non-UTF8 characters in cache signature.", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", + "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.13-dev" } }, "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, "classmap": [ - "src/" + "tests/Test/AbstractFixerTestCase.php", + "tests/Test/AbstractIntegrationCaseFactory.php", + "tests/Test/AbstractIntegrationTestCase.php", + "tests/Test/Assert/AssertTokensTrait.php", + "tests/Test/IntegrationCase.php", + "tests/Test/IntegrationCaseFactory.php", + "tests/Test/IntegrationCaseFactoryInterface.php", + "tests/Test/InternalIntegrationCaseFactory.php", + "tests/TestCase.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" + "MIT" ], "authors": [ { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" }, { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.2 features.", - "homepage": "https://nette.org", - "keywords": [ - "code", - "nette", - "php", - "scaffolding" - ], - "time": "2018-08-09T14:32:27+00:00" + "description": "A tool to automatically fix PHP code style", + "time": "2018-08-23T13:15:44+00:00" }, { - "name": "nette/robot-loader", - "version": "v3.1.0", + "name": "fzaninotto/faker", + "version": "v1.8.0", "source": { "type": "git", - "url": "https://github.com/nette/robot-loader.git", - "reference": "fc76c70e740b10f091e502b2e393d0be912f38d4" + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/robot-loader/zipball/fc76c70e740b10f091e502b2e393d0be912f38d4", - "reference": "fc76c70e740b10f091e502b2e393d0be912f38d4", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "nette/finder": "^2.3 || ^3.0", - "nette/utils": "^2.4 || ^3.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" + "php": "^5.3.3 || ^7.0" }, "require-dev": { - "nette/tester": "^2.0", - "tracy/tracy": "^2.3" + "ext-intl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "squizlabs/php_codesniffer": "^1.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "1.8-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Faker\\": "src/Faker/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" + "MIT" ], "authors": [ { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" + "name": "François Zaninotto" } ], - "description": "🍀 Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.", - "homepage": "https://nette.org", + "description": "Faker is a PHP library that generates fake data for you.", "keywords": [ - "autoload", - "class", - "interface", - "nette", - "trait" + "data", + "faker", + "fixtures" ], - "time": "2018-08-13T14:19:06+00:00" + "time": "2018-07-12T10:23:15+00:00" }, { - "name": "nette/utils", - "version": "v2.5.3", + "name": "infection/infection", + "version": "0.11.1", "source": { "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce" + "url": "https://github.com/infection/infection.git", + "reference": "a354c5d5865d9dfe2f58a5ef2ea9a9f2358c83a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/17b9f76f2abd0c943adfb556e56f2165460b15ce", - "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce", + "url": "https://api.github.com/repos/infection/infection/zipball/a354c5d5865d9dfe2f58a5ef2ea9a9f2358c83a6", + "reference": "a354c5d5865d9dfe2f58a5ef2ea9a9f2358c83a6", "shasum": "" }, "require": { - "php": ">=5.6.0" + "composer/xdebug-handler": "^1.3", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "justinrainbow/json-schema": "^5.2", + "nikic/php-parser": "^4.1", + "ocramius/package-versions": "^1.2", + "padraic/phar-updater": "^1.0.4", + "php": "^7.1", + "pimple/pimple": "^3.2", + "sebastian/diff": "^1.4 || ^2.0 || ^3.0", + "symfony/console": "^3.2 || ^4.0", + "symfony/filesystem": "^3.2 || ^4.0", + "symfony/finder": "^3.2 || ^4.0", + "symfony/process": "^3.2 || ^4.0", + "symfony/yaml": "^3.2 || ^4.0", + "webmozart/assert": "^1.3" }, "conflict": { - "nette/nette": "<2.2" + "symfony/console": "=3.4.16 || =4.1.5", + "symfony/process": "3.4.2" }, "require-dev": { - "nette/tester": "~2.0", - "tracy/tracy": "^2.3" + "mockery/mockery": "^1.1", + "phpunit/phpunit": "^6" }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize() and toAscii()", - "ext-intl": "for script transliteration in Strings::webalize() and toAscii()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" + "bin": [ + "bin/infection" + ], + "type": "library", + "autoload": { + "psr-4": { + "Infection\\": "src/" + } }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Maks Rafalko", + "email": "maks.rafalko@gmail.com", + "homepage": "https://twitter.com/maks_rafalko" + }, + { + "name": "Gert de Pagter", + "homepage": "https://github.com/BackEndTea" + }, + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com", + "homepage": "https://twitter.com/tfidry" + }, + { + "name": "Oleg Zhulnev", + "homepage": "https://github.com/sidz" + }, + { + "name": "Alexey Kopytko", + "email": "alexey@kopytko.com", + "homepage": "https://www.alexeykopytko.com" + } + ], + "description": "Infection is a Mutation Testing framework for PHP. The mutation adequacy score can be used to measure the effectiveness of a test set in terms of its ability to detect faults.", + "keywords": [ + "coverage", + "mutant", + "mutation framework", + "mutation testing", + "testing", + "unit testing" + ], + "time": "2018-11-13T04:22:01+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.7", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "8560d4314577199ba51bf2032f02cd1315587c23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8560d4314577199ba51bf2032f02cd1315587c23", + "reference": "8560d4314577199ba51bf2032f02cd1315587c23", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "5.0.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ], - "files": [ - "src/loader.php" - ] + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" + "MIT" ], "authors": [ { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" }, { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" } ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", "keywords": [ - "array", - "core", - "datetime", - "images", "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" + "schema" + ], + "time": "2018-02-14T22:26:30+00:00" + }, + { + "name": "localheinz/classy", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/localheinz/classy.git", + "reference": "8f1413f01a464f88521eac735f0e62b02da9ac67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/localheinz/classy/zipball/8f1413f01a464f88521eac735f0e62b02da9ac67", + "reference": "8f1413f01a464f88521eac735f0e62b02da9ac67", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "localheinz/php-cs-fixer-config": "~1.6.2", + "localheinz/test-util": "0.2.2", + "phpbench/phpbench": "0.13.0", + "phpunit/phpunit": "^6.4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Localheinz\\Classy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Möller", + "email": "am@localheinz.com" + } + ], + "description": "Provides a way to collect classy constructs from source or a directory.", + "time": "2017-10-24T14:31:40+00:00" + }, + { + "name": "localheinz/composer-normalize", + "version": "0.9.0", + "source": { + "type": "git", + "url": "https://github.com/localheinz/composer-normalize.git", + "reference": "cd7c78c32ca8352e842f4cd8423e7091af27e87f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/localheinz/composer-normalize/zipball/cd7c78c32ca8352e842f4cd8423e7091af27e87f", + "reference": "cd7c78c32ca8352e842f4cd8423e7091af27e87f", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0", + "localheinz/json-normalizer": "0.6.0", + "php": "^7.1", + "sebastian/diff": "^2.0.1 || ^3.0.0", + "symfony/console": "^2.5.0 || ^3.0.0 || ^4.0.0" + }, + "require-dev": { + "composer/composer": "^1.1.0", + "infection/infection": "^0.8.1", + "localheinz/php-cs-fixer-config": "~1.15.0", + "localheinz/test-util": "0.6.1", + "mikey179/vfsstream": "^1.6.5", + "phpstan/phpstan": "~0.9.2", + "phpstan/phpstan-strict-rules": "^0.9.0", + "phpunit/phpunit": "^6.5.7 || ^7.1.5" + }, + "type": "composer-plugin", + "extra": { + "class": "Localheinz\\Composer\\Normalize\\NormalizePlugin" + }, + "autoload": { + "psr-4": { + "Localheinz\\Composer\\Normalize\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Möller", + "email": "am@localheinz.com" + } + ], + "description": "Provides a composer plugin for normalizing composer.json.", + "homepage": "https://github.com/localheinz/composer-normalize", + "keywords": [ + "composer", + "normalize", + "normalizer", + "plugin" + ], + "time": "2018-10-10T12:39:27+00:00" + }, + { + "name": "localheinz/json-normalizer", + "version": "0.6.0", + "source": { + "type": "git", + "url": "https://github.com/localheinz/json-normalizer.git", + "reference": "f280f0b8125c7c26b2f8047fa84bfe14de785d84" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/localheinz/json-normalizer/zipball/f280f0b8125c7c26b2f8047fa84bfe14de785d84", + "reference": "f280f0b8125c7c26b2f8047fa84bfe14de785d84", + "shasum": "" + }, + "require": { + "justinrainbow/json-schema": "^4.0.0 || ^5.0.0", + "localheinz/json-printer": "^2.0.0", + "php": "^7.1" + }, + "require-dev": { + "infection/infection": "~0.8.1", + "localheinz/php-cs-fixer-config": "~1.13.1", + "localheinz/test-util": "0.6.1", + "phpbench/phpbench": "~0.14.0", + "phpspec/prophecy": "^1.7.1", + "phpunit/phpunit": "^7.1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Localheinz\\Json\\Normalizer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Möller", + "email": "am@localheinz.com" + } + ], + "description": "Provides normalizers for normalizing JSON documents.", + "homepage": "https://github.com/localheinz/json-normalizer", + "keywords": [ + "json", + "normalizer" + ], + "time": "2018-04-07T08:03:24+00:00" + }, + { + "name": "localheinz/json-printer", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/localheinz/json-printer.git", + "reference": "1a350fd94544df716d1c75ef107d34057f80ac7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/localheinz/json-printer/zipball/1a350fd94544df716d1c75ef107d34057f80ac7a", + "reference": "1a350fd94544df716d1c75ef107d34057f80ac7a", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "infection/infection": "~0.8.1", + "localheinz/php-cs-fixer-config": "~1.13.1", + "localheinz/test-util": "0.6.1", + "phpbench/phpbench": "~0.14.0", + "phpunit/phpunit": "^6.5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Localheinz\\Json\\Printer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Möller", + "email": "am@localheinz.com" + } + ], + "description": "Provides a JSON printer, allowing for flexible indentation.", + "homepage": "https://github.com/localheinz/json-printer", + "keywords": [ + "formatter", + "json", + "printer" + ], + "time": "2018-04-06T22:10:47+00:00" + }, + { + "name": "localheinz/php-cs-fixer-config", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://github.com/localheinz/php-cs-fixer-config.git", + "reference": "bdd00adc049d4e78f1abea54ed6b01fa0de200df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/localheinz/php-cs-fixer-config/zipball/bdd00adc049d4e78f1abea54ed6b01fa0de200df", + "reference": "bdd00adc049d4e78f1abea54ed6b01fa0de200df", + "shasum": "" + }, + "require": { + "friendsofphp/php-cs-fixer": "^2.13.0", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.25" + }, + "type": "library", + "autoload": { + "psr-4": { + "Localheinz\\PhpCsFixer\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], - "time": "2018-09-18T10:22:16+00:00" + "authors": [ + { + "name": "Andreas Möller", + "email": "am@localheinz.com" + } + ], + "description": "Provides a configuration factory and multiple rule sets for friendsofphp/php-cs-fixer.", + "homepage": "https://github.com/localheinz/php-cs-fixer-config", + "time": "2018-08-23T14:47:20+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.1.0", + "name": "localheinz/test-util", + "version": "0.7.0", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "d0230c5c77a7e3cfa69446febf340978540958c0" + "url": "https://github.com/localheinz/test-util.git", + "reference": "340d168a637f33e9f0d41e8c950c7e1e8bb6b19f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/d0230c5c77a7e3cfa69446febf340978540958c0", - "reference": "d0230c5c77a7e3cfa69446febf340978540958c0", + "url": "https://api.github.com/repos/localheinz/test-util/zipball/340d168a637f33e9f0d41e8c950c7e1e8bb6b19f", + "reference": "340d168a637f33e9f0d41e8c950c7e1e8bb6b19f", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" + "fzaninotto/faker": "^1.7.1", + "localheinz/classy": "0.3.0", + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.5 || ^7.0" + "infection/infection": "~0.8.2", + "localheinz/php-cs-fixer-config": "~1.14.0", + "phpstan/phpstan": "~0.9.2", + "phpstan/phpstan-phpunit": "~0.9.4", + "phpstan/phpstan-strict-rules": "~0.9.0", + "phpunit/phpunit": "^6.0.0 || ^7.0.0" }, - "bin": [ - "bin/php-parse" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "Localheinz\\Test\\Util\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "Andreas Möller", + "email": "am@localheinz.com" } ], - "description": "A PHP parser written in PHP", + "description": "Provides utilities for tests.", + "homepage": "https://github.com/localheinz/test-util", "keywords": [ - "parser", - "php" + "assertion", + "faker", + "phpunit", + "test" ], - "time": "2018-10-10T09:24:14+00:00" + "time": "2018-06-25T06:22:47+00:00" }, { - "name": "ocramius/package-versions", - "version": "1.3.0", + "name": "myclabs/deep-copy", + "version": "1.8.1", "source": { "type": "git", - "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f", - "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0.0", - "php": "^7.1.0" + "php": "^7.1" }, - "require-dev": { - "composer/composer": "^1.6.3", - "ext-zip": "*", - "infection/infection": "^0.7.1", - "phpunit/phpunit": "^7.0.0" + "replace": { + "myclabs/deep-copy": "self.version" }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "2.0.x-dev" - } + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" }, + "type": "library", "autoload": { "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2018-02-05T13:05:30+00:00" + "time": "2018-06-11T23:09:50+00:00" }, { "name": "padraic/humbug_get_contents", @@ -2118,155 +2457,40 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev" - } - }, - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2018-08-05T17:53:17+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "0.3", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "ed3223362174b8067729930439e139794e9e514a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ed3223362174b8067729930439e139794e9e514a", - "reference": "ed3223362174b8067729930439e139794e9e514a", - "shasum": "" - }, - "require": { - "php": "~7.1" - }, - "require-dev": { - "consistence/coding-standard": "^2.0.0", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "phing/phing": "^2.16.0", - "phpstan/phpstan": "^0.10@dev", - "phpunit/phpunit": "^6.3", - "slevomat/coding-standard": "^3.3.0", - "symfony/process": "^3.4 || ^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.3-dev" - } - }, - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "time": "2018-06-20T17:48:01+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "0.10.5", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "c6a8cd1fe08a23b9d101a55ffa9ff6b91d71ef5d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c6a8cd1fe08a23b9d101a55ffa9ff6b91d71ef5d", - "reference": "c6a8cd1fe08a23b9d101a55ffa9ff6b91d71ef5d", - "shasum": "" - }, - "require": { - "composer/xdebug-handler": "^1.3.0", - "jean85/pretty-package-versions": "^1.0.3", - "nette/bootstrap": "^2.4 || ^3.0", - "nette/di": "^2.4.7 || ^3.0", - "nette/robot-loader": "^3.0.1", - "nette/utils": "^2.4.5 || ^3.0", - "nikic/php-parser": "^4.0.2", - "php": "~7.1", - "phpstan/phpdoc-parser": "^0.3", - "symfony/console": "~3.2 || ~4.0", - "symfony/finder": "~3.2 || ~4.0" - }, - "require-dev": { - "brianium/paratest": "^2.0", - "consistence/coding-standard": "^3.5", - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4", - "ext-gd": "*", - "ext-intl": "*", - "ext-mysqli": "*", - "ext-zip": "*", - "jakub-onderka/php-parallel-lint": "^1.0", - "localheinz/composer-normalize": "~0.9.0", - "phing/phing": "^2.16.0", - "phpstan/phpstan-deprecation-rules": "^0.10.2", - "phpstan/phpstan-php-parser": "^0.10", - "phpstan/phpstan-phpunit": "^0.10", - "phpstan/phpstan-strict-rules": "^0.10", - "phpunit/phpunit": "^7.0", - "slevomat/coding-standard": "^4.7.2" - }, - "bin": [ - "bin/phpstan" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.10-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { - "psr-4": { - "PHPStan\\": [ - "src/", - "build/PHPStan" - ] + "psr-0": { + "Prophecy\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHPStan - PHP Static Analysis Tool", - "time": "2018-10-20T17:24:55+00:00" + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpstan/phpstan-strict-rules", @@ -2749,53 +2973,6 @@ ], "time": "2017-02-14T16:28:37+00:00" }, - { - "name": "psr/log", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2016-10-10T12:19:37+00:00" - }, { "name": "sebastian/code-unit-reverse-lookup", "version": "1.0.1", @@ -3359,74 +3536,6 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2016-10-03T07:35:21+00:00" }, - { - "name": "symfony/console", - "version": "v4.1.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "432122af37d8cd52fba1b294b11976e0d20df595" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/432122af37d8cd52fba1b294b11976e0d20df595", - "reference": "432122af37d8cd52fba1b294b11976e0d20df595", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0" - }, - "suggest": { - "psr/log-implementation": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2018-10-31T09:30:44+00:00" - }, { "name": "symfony/event-dispatcher", "version": "v4.1.3", @@ -3540,55 +3649,6 @@ "homepage": "https://symfony.com", "time": "2018-10-30T13:18:25+00:00" }, - { - "name": "symfony/finder", - "version": "v4.1.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "1f17195b44543017a9c9b2d437c670627e96ad06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/1f17195b44543017a9c9b2d437c670627e96ad06", - "reference": "1f17195b44543017a9c9b2d437c670627e96ad06", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2018-10-03T08:47:56+00:00" - }, { "name": "symfony/options-resolver", "version": "v4.1.7", @@ -3701,65 +3761,6 @@ ], "time": "2018-08-06T14:22:27+00:00" }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2018-09-21T13:07:52+00:00" - }, { "name": "symfony/polyfill-php70", "version": "v1.9.0", diff --git a/phpstan.neon b/phpstan.neon index 96d0543a..154efcba 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,2 +1,5 @@ includes: - vendor/phpstan/phpstan-strict-rules/rules.neon + +rules: + - Localheinz\PHPStan\Rules\Classes\AbstractOrFinalRule diff --git a/src/.gitkeep b/src/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/src/Classes/AbstractOrFinalRule.php b/src/Classes/AbstractOrFinalRule.php new file mode 100644 index 00000000..ed5eaf84 --- /dev/null +++ b/src/Classes/AbstractOrFinalRule.php @@ -0,0 +1,49 @@ +namespacedName) + || $node->isAbstract() + || $node->isFinal() + ) { + return []; + } + + return [ + \sprintf( + 'Class "%s" should be marked as abstract or final.', + $node->namespacedName + ), + ]; + } +} diff --git a/test/AutoReview/TestCodeTest.php b/test/AutoReview/TestCodeTest.php index 77581af0..9fb693da 100644 --- a/test/AutoReview/TestCodeTest.php +++ b/test/AutoReview/TestCodeTest.php @@ -13,6 +13,7 @@ namespace Localheinz\PHPStan\Rules\Test\AutoReview; +use Localheinz\PHPStan\Rules\Test\Integration; use Localheinz\Test\Util\Helper; use PHPUnit\Framework; @@ -25,6 +26,8 @@ final class TestCodeTest extends Framework\TestCase public function testTestClassesAreAbstractOrFinal(): void { - $this->assertClassesAreAbstractOrFinal(__DIR__ . '/..'); + $this->assertClassesAreAbstractOrFinal(__DIR__ . '/..', [ + Integration\Classes\Fixture\NeitherAbstractNorFinalClass::class, + ]); } } diff --git a/test/Integration/Classes/AbstractOrFinalRuleTest.php b/test/Integration/Classes/AbstractOrFinalRuleTest.php new file mode 100644 index 00000000..a21e59b2 --- /dev/null +++ b/test/Integration/Classes/AbstractOrFinalRuleTest.php @@ -0,0 +1,82 @@ +analyse( + [ + __DIR__ . '/Fixture/ExampleInterface.php', + __DIR__ . '/Fixture/ExampleTrait.php', + ], + [] + ); + } + + public function testAbstractOrFinalClasses(): void + { + $this->analyse( + [ + __DIR__ . '/Fixture/AbstractClass.php', + __DIR__ . '/Fixture/FinalClass.php', + ], + [] + ); + } + + public function testConstructsWithAnonymousClasses(): void + { + $this->analyse( + [ + __DIR__ . '/Fixture/AbstractClassWithAnonymousClass.php', + __DIR__ . '/Fixture/FinalClassWithAnonymousClass.php', + __DIR__ . '/Fixture/script-with-anonymous-class.php', + __DIR__ . '/Fixture/TraitWithAnonymousClass.php', + ], + [] + ); + } + + public function testNeitherAbstractNorFinalClass(): void + { + $this->analyse( + [ + __DIR__ . '/Fixture/NeitherAbstractNorFinalClass.php', + ], + [ + [ + \sprintf( + 'Class "%s" should be marked as abstract or final.', + Fixture\NeitherAbstractNorFinalClass::class + ), + 16, + ], + ] + ); + } + + protected function getRule(): Rule + { + return new AbstractOrFinalRule(); + } +} diff --git a/test/Integration/Classes/Fixture/AbstractClass.php b/test/Integration/Classes/Fixture/AbstractClass.php new file mode 100644 index 00000000..85f60547 --- /dev/null +++ b/test/Integration/Classes/Fixture/AbstractClass.php @@ -0,0 +1,18 @@ +assertClassImplementsInterface(Rules\Rule::class, AbstractOrFinalRule::class); + } + + public function testGetNodeTypeReturnsClass(): void + { + $rule = new AbstractOrFinalRule(); + + $this->assertSame(Node\Stmt\Class_::class, $rule->getNodeType()); + } + + public function testProcessNodeReturnsEmptyArrayWhenClassHasNoNamespacedName(): void + { + $node = $this->prophesize(Node\Stmt\Class_::class); + + $rule = new AbstractOrFinalRule(); + + $errors = $rule->processNode( + $node->reveal(), + $this->prophesize(Analyser\Scope::class)->reveal() + ); + + $this->assertEmpty($errors); + } + + public function testProcessNodeReturnsEmptyArrayWhenClassIsAbstract(): void + { + $node = $this->prophesize(Node\Stmt\Class_::class); + + $node->namespacedName = $this->faker()->word; + + $node + ->isAbstract() + ->shouldBeCalled() + ->willReturn(true); + + $rule = new AbstractOrFinalRule(); + + $errors = $rule->processNode( + $node->reveal(), + $this->prophesize(Analyser\Scope::class)->reveal() + ); + + $this->assertEmpty($errors); + } + + public function testProcessNodeReturnsEmptyArrayWhenClassIsFinal(): void + { + $node = $this->prophesize(Node\Stmt\Class_::class); + + $node->namespacedName = $this->faker()->word; + + $node + ->isAbstract() + ->shouldBeCalled() + ->willReturn(false); + + $node + ->isFinal() + ->shouldBeCalled() + ->willReturn(true); + + $rule = new AbstractOrFinalRule(); + + $errors = $rule->processNode( + $node->reveal(), + $this->prophesize(Analyser\Scope::class)->reveal() + ); + + $this->assertEmpty($errors); + } + + public function testProcessNodeReturnsEmptyArrayWhenClassIsNeitherAbstractNorFinal(): void + { + $fullyQualifiedClassName = $this->faker()->word; + + $node = $this->prophesize(Node\Stmt\Class_::class); + + $node + ->isAbstract() + ->shouldBeCalled() + ->willReturn(false); + + $node + ->isFinal() + ->shouldBeCalled() + ->willReturn(false); + + $node->namespacedName = $fullyQualifiedClassName; + + $rule = new AbstractOrFinalRule(); + + $errors = $rule->processNode( + $node->reveal(), + $this->prophesize(Analyser\Scope::class)->reveal() + ); + + $this->assertCount(1, $errors); + + $error = \array_shift($errors); + + $expected = \sprintf( + 'Class "%s" should be marked as abstract or final.', + $fullyQualifiedClassName + ); + + $this->assertSame($expected, $error); + } + + protected function getRule(): Rule + { + return new AbstractOrFinalRule(); + } +}