diff --git a/config/versions.yaml b/config/versions.yaml new file mode 100644 index 000000000..c1f23297e --- /dev/null +++ b/config/versions.yaml @@ -0,0 +1,66 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: false + + # controllers are imported separately to make sure they're public + # and have a tag that allows actions to type-hint services + Pimcore\Bundle\StudioBackendBundle\Version\Controller\: + resource: '../src/Version/Controller' + public: true + tags: [ 'controller.service_arguments' ] + + Pimcore\Bundle\StudioBackendBundle\Version\RepositoryInterface: + class: Pimcore\Bundle\StudioBackendBundle\Version\Repository + + Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\VersionHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\VersionHydrator + + # Hydrators + Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\AssetVersionHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\AssetVersionHydrator + + Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\DataObjectVersionHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\DataObjectVersionHydrator + + Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\DocumentVersionHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\DocumentVersionHydrator + + # Publishers + Pimcore\Bundle\StudioBackendBundle\Version\Publisher\AssetVersionPublisherInterface: + class: Pimcore\Bundle\StudioBackendBundle\Version\Publisher\AssetVersionPublisher + + Pimcore\Bundle\StudioBackendBundle\Version\Publisher\DataObjectVersionPublisherInterface: + class: Pimcore\Bundle\StudioBackendBundle\Version\Publisher\DataObjectVersionPublisher + + Pimcore\Bundle\StudioBackendBundle\Version\Publisher\DocumentVersionPublisherInterface: + class: Pimcore\Bundle\StudioBackendBundle\Version\Publisher\DocumentVersionPublisher + + # Services + Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\VersionHydratorServiceInterface: + class: Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\VersionHydratorService + arguments: + $versionHydratorLocator: '@listing.version_hydrator.service_locator' + + Pimcore\Bundle\StudioBackendBundle\Version\Publisher\VersionPublisherServiceInterface: + class: Pimcore\Bundle\StudioBackendBundle\Version\Publisher\VersionPublisherService + arguments: + $versionPublisherLocator: '@version.element_publisher.service_locator' + + #Service Locator + listing.version_hydrator.service_locator: + class: Symfony\Component\DependencyInjection\ServiceLocator + tags: [ 'container.service_locator' ] + arguments: + - Pimcore\Model\Asset: '@Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\AssetVersionHydratorInterface' + Pimcore\Model\DataObject: '@Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\DataObjectVersionHydratorInterface' + Pimcore\Model\Document: '@Pimcore\Bundle\StudioBackendBundle\Version\Hydrator\DocumentVersionHydratorInterface' + + version.element_publisher.service_locator: + class: Symfony\Component\DependencyInjection\ServiceLocator + tags: [ 'container.service_locator' ] + arguments: + - Pimcore\Model\Asset: '@Pimcore\Bundle\StudioBackendBundle\Version\Publisher\AssetVersionPublisherInterface' + Pimcore\Model\DataObject: '@Pimcore\Bundle\StudioBackendBundle\Version\Publisher\DataObjectVersionPublisherInterface' + Pimcore\Model\Document: '@Pimcore\Bundle\StudioBackendBundle\Version\Publisher\DocumentVersionPublisherInterface' \ No newline at end of file diff --git a/public/js/swagger-ui/swagger-initializer.js b/public/js/swagger-ui/swagger-initializer.js index 754a89415..ab456360d 100644 --- a/public/js/swagger-ui/swagger-initializer.js +++ b/public/js/swagger-ui/swagger-initializer.js @@ -6,6 +6,10 @@ window.onload = function() { url: dataUrl, dom_id: '#swagger-ui', deepLinking: true, + operationsSorter: function(a, b) { + const order = ['POST', 'GET', 'PUT', 'PATCH', 'DELETE']; + return order.indexOf(a.get("method").toUpperCase()) - order.indexOf(b.get("method").toUpperCase()); + }, presets: [ SwaggerUIBundle.presets.apis, ], diff --git a/qodana.sarif.json b/qodana.sarif.json index 461afd6fd..eee408b67 100644 --- a/qodana.sarif.json +++ b/qodana.sarif.json @@ -228,6 +228,24 @@ } ] }, + { + "id": "Symfony/Service", + "name": "Service", + "relationships": [ + { + "target": { + "id": "Symfony", + "index": 14, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "PHP/Php Inspections (EA Extended)/Control Flow", "name": "Control Flow", @@ -246,6 +264,24 @@ } ] }, + { + "id": "Symfony/Route", + "name": "Route", + "relationships": [ + { + "target": { + "id": "Symfony", + "index": 14, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "PHP/Control flow", "name": "Control flow", @@ -465,13 +501,13 @@ ] }, { - "id": "PHP/Undefined symbols", - "name": "Undefined symbols", + "id": "JavaScript and TypeScript/ES2015 migration aids", + "name": "ES2015 migration aids", "relationships": [ { "target": { - "id": "PHP", - "index": 0, + "id": "JavaScript and TypeScript", + "index": 10, "toolComponent": { "name": "QDPHP" } @@ -483,13 +519,13 @@ ] }, { - "id": "JavaScript and TypeScript/ES2015 migration aids", - "name": "ES2015 migration aids", + "id": "PHP/Undefined symbols", + "name": "Undefined symbols", "relationships": [ { "target": { - "id": "JavaScript and TypeScript", - "index": 10, + "id": "PHP", + "index": 0, "toolComponent": { "name": "QDPHP" } @@ -529,7 +565,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -623,7 +659,7 @@ { "target": { "id": "CSS", - "index": 42, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -718,6 +754,10 @@ } ] }, + { + "id": "XML", + "name": "XML" + }, { "id": "JavaScript and TypeScript/Control flow issues", "name": "Control flow issues", @@ -736,10 +776,6 @@ } ] }, - { - "id": "XML", - "name": "XML" - }, { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", "name": "Potentially undesirable code constructs", @@ -765,7 +801,7 @@ { "target": { "id": "CSS", - "index": 42, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -892,24 +928,6 @@ } ] }, - { - "id": "Symfony/Route", - "name": "Route", - "relationships": [ - { - "target": { - "id": "Symfony", - "index": 14, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, { "id": "RegExp", "name": "RegExp" @@ -954,24 +972,6 @@ "id": "Joomla!", "name": "Joomla!" }, - { - "id": "Symfony/Service", - "name": "Service", - "relationships": [ - { - "target": { - "id": "Symfony", - "index": 14, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, { "id": "PHP/Refactoring opportunities", "name": "Refactoring opportunities", @@ -991,13 +991,13 @@ ] }, { - "id": "CSS/Probable bugs", - "name": "Probable bugs", + "id": "JavaScript and TypeScript/TypeScript", + "name": "TypeScript", "relationships": [ { "target": { - "id": "CSS", - "index": 42, + "id": "JavaScript and TypeScript", + "index": 10, "toolComponent": { "name": "QDPHP" } @@ -1009,13 +1009,13 @@ ] }, { - "id": "JavaScript and TypeScript/TypeScript", - "name": "TypeScript", + "id": "CSS/Probable bugs", + "name": "Probable bugs", "relationships": [ { "target": { - "id": "JavaScript and TypeScript", - "index": 10, + "id": "CSS", + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -1331,13 +1331,13 @@ ] }, { - "id": "PHP/Quality tools", - "name": "Quality tools", + "id": "JavaScript and TypeScript/Function metrics", + "name": "Function metrics", "relationships": [ { "target": { - "id": "PHP", - "index": 0, + "id": "JavaScript and TypeScript", + "index": 10, "toolComponent": { "name": "QDPHP" } @@ -1349,13 +1349,13 @@ ] }, { - "id": "JavaScript and TypeScript/Function metrics", - "name": "Function metrics", + "id": "PHP/Quality tools", + "name": "Quality tools", "relationships": [ { "target": { - "id": "JavaScript and TypeScript", - "index": 10, + "id": "PHP", + "index": 0, "toolComponent": { "name": "QDPHP" } @@ -1631,7 +1631,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -1664,7 +1664,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -1697,7 +1697,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -1730,7 +1730,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Compatibility", - "index": 28, + "index": 30, "toolComponent": { "name": "QDPHP" } @@ -1763,7 +1763,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -1796,7 +1796,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -1895,7 +1895,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -1961,7 +1961,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -1994,7 +1994,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Compatibility", - "index": 28, + "index": 30, "toolComponent": { "name": "QDPHP" } @@ -2027,7 +2027,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -2060,7 +2060,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -2126,7 +2126,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Confusing constructs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -2192,7 +2192,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -2225,7 +2225,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -2258,7 +2258,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -2291,7 +2291,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -2324,7 +2324,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 60, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -2357,7 +2357,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -2369,19 +2369,19 @@ ] }, { - "id": "SecurityAdvisoriesInspection", + "id": "RedundantElseClauseInspection", "shortDescription": { - "text": "Security advisories for Composer packages" + "text": "Redundant 'else' keyword" }, "fullDescription": { "text": "Documentation can be found here", - "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/security.md#security-advisories)" + "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/control-flow.md#redundant-else-keyword)" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "SecurityAdvisoriesInspection", + "suppressToolId": "RedundantElseClauseInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -2389,8 +2389,8 @@ "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)/Security", - "index": 9, + "id": "PHP/Php Inspections (EA Extended)/Control Flow", + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -2402,19 +2402,19 @@ ] }, { - "id": "RedundantElseClauseInspection", + "id": "SecurityAdvisoriesInspection", "shortDescription": { - "text": "Redundant 'else' keyword" + "text": "Security advisories for Composer packages" }, "fullDescription": { "text": "Documentation can be found here", - "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/control-flow.md#redundant-else-keyword)" + "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/security.md#security-advisories)" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "RedundantElseClauseInspection", + "suppressToolId": "SecurityAdvisoriesInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -2422,8 +2422,8 @@ "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "id": "PHP/Php Inspections (EA Extended)/Security", + "index": 9, "toolComponent": { "name": "QDPHP" } @@ -2456,7 +2456,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -2522,7 +2522,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -2555,7 +2555,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -2588,7 +2588,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -2621,7 +2621,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 60, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -2720,7 +2720,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -2753,7 +2753,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -2852,7 +2852,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -2885,7 +2885,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -2918,7 +2918,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 60, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -2984,7 +2984,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 60, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -3017,7 +3017,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -3050,7 +3050,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -3116,7 +3116,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -3149,7 +3149,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 60, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -3215,7 +3215,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -3314,7 +3314,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -3347,7 +3347,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -3380,7 +3380,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -3413,7 +3413,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -3446,7 +3446,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -3479,7 +3479,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -3512,7 +3512,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -3545,7 +3545,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -3644,7 +3644,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 60, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -3743,7 +3743,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -3809,7 +3809,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -3875,7 +3875,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -3908,7 +3908,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -3974,7 +3974,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -4040,7 +4040,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 60, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -4073,7 +4073,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -4106,7 +4106,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -4172,7 +4172,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -4205,7 +4205,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -4238,7 +4238,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -4304,7 +4304,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -4337,7 +4337,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Compatibility", - "index": 28, + "index": 30, "toolComponent": { "name": "QDPHP" } @@ -4370,7 +4370,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Confusing constructs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -4403,7 +4403,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 60, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -4436,7 +4436,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -4469,7 +4469,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -4502,7 +4502,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -4568,7 +4568,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -4634,7 +4634,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -4733,7 +4733,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -4766,7 +4766,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -4799,7 +4799,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 60, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -4832,7 +4832,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -4865,7 +4865,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -4964,7 +4964,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -5030,7 +5030,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -5063,7 +5063,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -5096,7 +5096,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -5129,7 +5129,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Compatibility", - "index": 28, + "index": 30, "toolComponent": { "name": "QDPHP" } @@ -5228,7 +5228,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -5261,7 +5261,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -5294,7 +5294,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -5327,7 +5327,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -5393,7 +5393,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -5492,7 +5492,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -5558,7 +5558,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Confusing constructs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -5591,7 +5591,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -5624,7 +5624,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -5756,7 +5756,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -5789,7 +5789,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -5822,7 +5822,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -5888,7 +5888,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -5954,7 +5954,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -6086,7 +6086,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -6152,7 +6152,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -6185,7 +6185,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -6251,7 +6251,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -6284,7 +6284,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -6383,7 +6383,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -6449,7 +6449,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -6482,7 +6482,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -6548,7 +6548,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -6560,28 +6560,28 @@ ] }, { - "id": "ArrayUniqueCanBeUsedInspection", + "id": "AliasFunctionsUsageInspection", "shortDescription": { - "text": "'array_unique(...)' can be used" + "text": "Alias functions usage" }, "fullDescription": { "text": "Documentation can be found here", - "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/control-flow.md#array_unique-can-be-used)" + "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/language-level-migration.md#alias-functions-usage)" }, "defaultConfiguration": { "enabled": true, - "level": "note", + "level": "warning", "parameters": { - "suppressToolId": "ArrayUniqueCanBeUsedInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "AliasFunctionsUsageInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "id": "PHP/Php Inspections (EA Extended)/Language level migration", + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -6593,28 +6593,28 @@ ] }, { - "id": "AliasFunctionsUsageInspection", + "id": "ArrayUniqueCanBeUsedInspection", "shortDescription": { - "text": "Alias functions usage" + "text": "'array_unique(...)' can be used" }, "fullDescription": { "text": "Documentation can be found here", - "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/language-level-migration.md#alias-functions-usage)" + "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/control-flow.md#array_unique-can-be-used)" }, "defaultConfiguration": { "enabled": true, - "level": "warning", + "level": "note", "parameters": { - "suppressToolId": "AliasFunctionsUsageInspection", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "ArrayUniqueCanBeUsedInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "id": "PHP/Php Inspections (EA Extended)/Control Flow", + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -6647,7 +6647,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -6680,7 +6680,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Confusing constructs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -6713,7 +6713,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -6746,7 +6746,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -6779,7 +6779,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Confusing constructs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -6845,7 +6845,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -6977,7 +6977,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -7010,7 +7010,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 40, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -7043,7 +7043,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -7208,7 +7208,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -7241,7 +7241,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -7274,7 +7274,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -7307,7 +7307,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -7340,7 +7340,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 45, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -7373,7 +7373,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -7847,7 +7847,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -7880,7 +7880,7 @@ { "target": { "id": "PHP/PHPDoc/Code style", - "index": 18, + "index": 20, "toolComponent": { "name": "QDPHP" } @@ -7946,7 +7946,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -7979,7 +7979,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -8012,7 +8012,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -8045,7 +8045,7 @@ { "target": { "id": "PHP/Symfony", - "index": 35, + "index": 37, "toolComponent": { "name": "QDPHP" } @@ -8078,7 +8078,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -8243,7 +8243,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -8276,7 +8276,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -8441,7 +8441,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -8540,7 +8540,7 @@ { "target": { "id": "PHP/PHPDoc/Code style", - "index": 18, + "index": 20, "toolComponent": { "name": "QDPHP" } @@ -8573,7 +8573,7 @@ { "target": { "id": "PHP/Unused symbols", - "index": 48, + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -8606,7 +8606,7 @@ { "target": { "id": "PHP/Composer", - "index": 50, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -8969,7 +8969,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -9035,7 +9035,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -9068,7 +9068,7 @@ { "target": { "id": "PHP/Composer", - "index": 50, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -9101,7 +9101,7 @@ { "target": { "id": "PHP/Unused symbols", - "index": 48, + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -9365,7 +9365,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -9398,7 +9398,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -9629,7 +9629,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -9893,7 +9893,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -9926,7 +9926,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -10091,7 +10091,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -10157,7 +10157,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -10223,7 +10223,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -10586,7 +10586,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -10652,7 +10652,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -10685,7 +10685,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -10784,7 +10784,7 @@ { "target": { "id": "PHP/PHPDoc/Code style", - "index": 18, + "index": 20, "toolComponent": { "name": "QDPHP" } @@ -10850,7 +10850,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -10916,7 +10916,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -10961,19 +10961,19 @@ ] }, { - "id": "PhpDocSignatureIsNotCompleteInspection", + "id": "PhpAutovivificationOnFalseValuesInspection", "shortDescription": { - "text": "PHPDoc comment signature is not complete" + "text": "Automatic conversion of 'false' to array is deprecated" }, "fullDescription": { - "text": "Reports the PHPDoc comments that contain at least one '@param' or '@return' tag but are missing some of the '@param' or '@return' tags for parameters or return types specified in the function/method declaration.", - "markdown": "Reports the PHPDoc comments that contain at least one `@param` or `@return` tag but are missing some of the `@param` or `@return` tags for parameters or return types specified in the function/method declaration." + "text": "Reports automatic conversions of 'false' values to arrays. Such expressions are deprecated starting from PHP 8.1. See Deprecate autovivification on false for details.", + "markdown": "Reports automatic conversions of `false` values to arrays. Such expressions are deprecated starting from PHP 8.1.\n\n\nSee [Deprecate autovivification on false](https://wiki.php.net/rfc/autovivification_false) for details." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpDocSignatureIsNotCompleteInspection", + "suppressToolId": "PhpAutovivificationOnFalseValuesInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -10981,8 +10981,8 @@ "relationships": [ { "target": { - "id": "PHP/PHPDoc/Code style", - "index": 18, + "id": "PHP/Code style", + "index": 5, "toolComponent": { "name": "QDPHP" } @@ -10994,19 +10994,19 @@ ] }, { - "id": "PhpAutovivificationOnFalseValuesInspection", + "id": "PhpDocSignatureIsNotCompleteInspection", "shortDescription": { - "text": "Automatic conversion of 'false' to array is deprecated" + "text": "PHPDoc comment signature is not complete" }, "fullDescription": { - "text": "Reports automatic conversions of 'false' values to arrays. Such expressions are deprecated starting from PHP 8.1. See Deprecate autovivification on false for details.", - "markdown": "Reports automatic conversions of `false` values to arrays. Such expressions are deprecated starting from PHP 8.1.\n\n\nSee [Deprecate autovivification on false](https://wiki.php.net/rfc/autovivification_false) for details." + "text": "Reports the PHPDoc comments that contain at least one '@param' or '@return' tag but are missing some of the '@param' or '@return' tags for parameters or return types specified in the function/method declaration.", + "markdown": "Reports the PHPDoc comments that contain at least one `@param` or `@return` tag but are missing some of the `@param` or `@return` tags for parameters or return types specified in the function/method declaration." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpAutovivificationOnFalseValuesInspection", + "suppressToolId": "PhpDocSignatureIsNotCompleteInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -11014,8 +11014,8 @@ "relationships": [ { "target": { - "id": "PHP/Code style", - "index": 5, + "id": "PHP/PHPDoc/Code style", + "index": 20, "toolComponent": { "name": "QDPHP" } @@ -11114,7 +11114,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -11180,7 +11180,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -11213,7 +11213,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -11257,39 +11257,6 @@ } ] }, - { - "id": "PhpDangerousArrayInitializationInspection", - "shortDescription": { - "text": "Dangerous array initialization" - }, - "fullDescription": { - "text": "Reports dangerous array initializations (such as '$arr[] = value'). This practice is discouraged because if '$arr' already contains some value (for example, a string from a request variable), then this value will stay in place and '[]' may actually stand for string access operator. It is always preferable to initialize a variable by direct assignment. See Creating/modifying with square bracket syntax (php.net) for details.", - "markdown": "Reports dangerous array initializations (such as `$arr[] = value`).\n\n\nThis practice is discouraged because if `$arr` already contains some value (for example, a string from a request variable), then this value will stay in place and `[]` may actually stand for string access operator. It is always preferable to initialize a variable by direct assignment.\n\nSee [Creating/modifying with square bracket syntax (php.net)](https://www.php.net/manual/en/language.types.array.php#language.types.array.syntax.modifying) for details." - }, - "defaultConfiguration": { - "enabled": true, - "level": "note", - "parameters": { - "suppressToolId": "PhpDangerousArrayInitializationInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" - } - }, - "relationships": [ - { - "target": { - "id": "PHP/Code style", - "index": 5, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, { "id": "PhpDeprecatedImplodeUsageInspection", "shortDescription": { @@ -11323,6 +11290,39 @@ } ] }, + { + "id": "PhpDangerousArrayInitializationInspection", + "shortDescription": { + "text": "Dangerous array initialization" + }, + "fullDescription": { + "text": "Reports dangerous array initializations (such as '$arr[] = value'). This practice is discouraged because if '$arr' already contains some value (for example, a string from a request variable), then this value will stay in place and '[]' may actually stand for string access operator. It is always preferable to initialize a variable by direct assignment. See Creating/modifying with square bracket syntax (php.net) for details.", + "markdown": "Reports dangerous array initializations (such as `$arr[] = value`).\n\n\nThis practice is discouraged because if `$arr` already contains some value (for example, a string from a request variable), then this value will stay in place and `[]` may actually stand for string access operator. It is always preferable to initialize a variable by direct assignment.\n\nSee [Creating/modifying with square bracket syntax (php.net)](https://www.php.net/manual/en/language.types.array.php#language.types.array.syntax.modifying) for details." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PhpDangerousArrayInitializationInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" + } + }, + "relationships": [ + { + "target": { + "id": "PHP/Code style", + "index": 5, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "PhpOverridingMethodVisibilityInspection", "shortDescription": { @@ -11378,7 +11378,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -11576,7 +11576,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -11642,7 +11642,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 92, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -11675,7 +11675,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -11741,7 +11741,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -11807,7 +11807,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -11873,7 +11873,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -11984,28 +11984,28 @@ ] }, { - "id": "PhpArrayIsAlwaysEmptyInspection", + "id": "PhpIllegalArrayKeyTypeInspection", "shortDescription": { - "text": "Array is always empty at the point of access" + "text": "Illegal array key type" }, "fullDescription": { - "text": "Reports the iterated/accessed arrays that are known to be empty at the point of access.", - "markdown": "Reports the iterated/accessed arrays that are known to be empty at the point of access." + "text": "Reports the array keys that are of illegal type, such as objects or arrays. See Arrays (php.net) for details.", + "markdown": "Reports the array keys that are of illegal type, such as objects or arrays.\n\n\nSee [Arrays (php.net)](http://www.php.net/manual/en/language.types.array.php) for details." }, "defaultConfiguration": { "enabled": true, - "level": "note", + "level": "warning", "parameters": { - "suppressToolId": "PhpArrayIsAlwaysEmptyInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "PhpIllegalArrayKeyTypeInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "PHP/Code smell", - "index": 3, + "id": "PHP/Type compatibility", + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -12017,28 +12017,28 @@ ] }, { - "id": "PhpIllegalArrayKeyTypeInspection", + "id": "PhpArrayIsAlwaysEmptyInspection", "shortDescription": { - "text": "Illegal array key type" + "text": "Array is always empty at the point of access" }, "fullDescription": { - "text": "Reports the array keys that are of illegal type, such as objects or arrays. See Arrays (php.net) for details.", - "markdown": "Reports the array keys that are of illegal type, such as objects or arrays.\n\n\nSee [Arrays (php.net)](http://www.php.net/manual/en/language.types.array.php) for details." + "text": "Reports the iterated/accessed arrays that are known to be empty at the point of access.", + "markdown": "Reports the iterated/accessed arrays that are known to be empty at the point of access." }, "defaultConfiguration": { "enabled": true, - "level": "warning", + "level": "note", "parameters": { - "suppressToolId": "PhpIllegalArrayKeyTypeInspection", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "PhpArrayIsAlwaysEmptyInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Type compatibility", - "index": 31, + "id": "PHP/Code smell", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -12071,7 +12071,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -12236,7 +12236,7 @@ { "target": { "id": "PHP/PHPDoc/Code style", - "index": 18, + "index": 20, "toolComponent": { "name": "QDPHP" } @@ -12401,7 +12401,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -12434,7 +12434,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -12764,7 +12764,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -12863,7 +12863,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 92, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -12962,7 +12962,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -13028,7 +13028,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -13127,7 +13127,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -13226,7 +13226,7 @@ { "target": { "id": "PHP/Composer", - "index": 50, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -13304,19 +13304,19 @@ ] }, { - "id": "PhpUnusedFieldDefaultValueInspection", + "id": "PhpArrayIndexResetIsUnnecessaryInspection", "shortDescription": { - "text": "Redundant property initializer" + "text": "Array internal pointer reset is unnecessary" }, "fullDescription": { - "text": "Reports the fields with default initializers that are always overwritten in the class constructor.", - "markdown": "Reports the fields with default initializers that are always overwritten in the class constructor." + "text": "Reports the 'reset($array)' calls on arrays whose internal pointer is already set on the first element. Such calls are redundant and can be safely removed. See reset (php.net) for details.", + "markdown": "Reports the `reset($array)` calls on arrays whose internal pointer is already set on the first element. Such calls are redundant and can be safely removed.\n\n\nSee [reset (php.net)](https://www.php.net/manual/en/function.reset.php) for details." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpUnusedFieldDefaultValueInspection", + "suppressToolId": "PhpArrayIndexResetIsUnnecessaryInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -13324,8 +13324,8 @@ "relationships": [ { "target": { - "id": "PHP/Unused symbols", - "index": 48, + "id": "PHP/Code smell", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -13337,19 +13337,19 @@ ] }, { - "id": "PhpArrayIndexResetIsUnnecessaryInspection", + "id": "PhpUnusedFieldDefaultValueInspection", "shortDescription": { - "text": "Array internal pointer reset is unnecessary" + "text": "Redundant property initializer" }, "fullDescription": { - "text": "Reports the 'reset($array)' calls on arrays whose internal pointer is already set on the first element. Such calls are redundant and can be safely removed. See reset (php.net) for details.", - "markdown": "Reports the `reset($array)` calls on arrays whose internal pointer is already set on the first element. Such calls are redundant and can be safely removed.\n\n\nSee [reset (php.net)](https://www.php.net/manual/en/function.reset.php) for details." + "text": "Reports the fields with default initializers that are always overwritten in the class constructor.", + "markdown": "Reports the fields with default initializers that are always overwritten in the class constructor." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpArrayIndexResetIsUnnecessaryInspection", + "suppressToolId": "PhpUnusedFieldDefaultValueInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -13357,8 +13357,8 @@ "relationships": [ { "target": { - "id": "PHP/Code smell", - "index": 3, + "id": "PHP/Unused symbols", + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -13457,7 +13457,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -13556,7 +13556,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -13655,7 +13655,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -13688,7 +13688,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -13754,7 +13754,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -13853,7 +13853,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -13931,19 +13931,19 @@ ] }, { - "id": "PhpStrFunctionsInspection", + "id": "PhpDocRedundantThrowsInspection", "shortDescription": { - "text": "'str*()' calls can be replaced with PHP 8 'str_*()' calls" + "text": "Redundant @throws tag(s)" }, "fullDescription": { - "text": "Reports the 'strpos' and 'substr' functions calls that can be replaced with the 'str_*' functions calls (introduced in PHP 8.0). See str_contains (php.net) and str_starts_with and str_ends_with functions (php.net) for details.", - "markdown": "Reports the `strpos` and `substr` functions calls that can be replaced with the `str_*` functions calls (introduced in PHP 8.0).\n\n\nSee [str_contains (php.net)](https://wiki.php.net/rfc/str_contains) and [str_starts_with and str_ends_with functions (php.net)](https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions) for details." + "text": "Reports '@throws' tags for exceptions that are not thrown by the function or method. The exception classes added to the Unchecked Exceptions list under Settings | PHP | Analysis are excluded from the inspection scope.", + "markdown": "Reports `@throws` tags for exceptions that are not thrown by the function or method.\n\nThe exception classes added to the **Unchecked Exceptions** list under\n[Settings \\| PHP \\| Analysis](settings://reference.webide.settings.project.settings.php?Unchecked%20Exceptions)\nare excluded from the inspection scope." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpStrFunctionsInspection", + "suppressToolId": "PhpDocRedundantThrowsInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -13951,8 +13951,8 @@ "relationships": [ { "target": { - "id": "PHP/Code style", - "index": 5, + "id": "PHP/PHPDoc", + "index": 4, "toolComponent": { "name": "QDPHP" } @@ -13964,19 +13964,19 @@ ] }, { - "id": "PhpDocRedundantThrowsInspection", + "id": "PhpStrFunctionsInspection", "shortDescription": { - "text": "Redundant @throws tag(s)" + "text": "'str*()' calls can be replaced with PHP 8 'str_*()' calls" }, "fullDescription": { - "text": "Reports '@throws' tags for exceptions that are not thrown by the function or method. The exception classes added to the Unchecked Exceptions list under Settings | PHP | Analysis are excluded from the inspection scope.", - "markdown": "Reports `@throws` tags for exceptions that are not thrown by the function or method.\n\nThe exception classes added to the **Unchecked Exceptions** list under\n[Settings \\| PHP \\| Analysis](settings://reference.webide.settings.project.settings.php?Unchecked%20Exceptions)\nare excluded from the inspection scope." + "text": "Reports the 'strpos' and 'substr' functions calls that can be replaced with the 'str_*' functions calls (introduced in PHP 8.0). See str_contains (php.net) and str_starts_with and str_ends_with functions (php.net) for details.", + "markdown": "Reports the `strpos` and `substr` functions calls that can be replaced with the `str_*` functions calls (introduced in PHP 8.0).\n\n\nSee [str_contains (php.net)](https://wiki.php.net/rfc/str_contains) and [str_starts_with and str_ends_with functions (php.net)](https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions) for details." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpDocRedundantThrowsInspection", + "suppressToolId": "PhpStrFunctionsInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -13984,8 +13984,8 @@ "relationships": [ { "target": { - "id": "PHP/PHPDoc", - "index": 4, + "id": "PHP/Code style", + "index": 5, "toolComponent": { "name": "QDPHP" } @@ -14117,7 +14117,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 92, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -14183,7 +14183,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -14381,7 +14381,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -14414,7 +14414,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -14492,19 +14492,19 @@ ] }, { - "id": "PhpFuncGetArgCanBeReplacedWithParamInspection", + "id": "PhpBooleanCanBeSimplifiedInspection", "shortDescription": { - "text": "'func_get_arg()' call can be replaced with parameter access" + "text": "Boolean expression can be simplified" }, "fullDescription": { - "text": "Reports the 'func_get_arg()' calls that can be replaced with direct parameter access.", - "markdown": "Reports the `func_get_arg()` calls that can be replaced with direct parameter access." + "text": "Reports the boolean expressions that contain the 'true' or 'false' literals and can be simplified.", + "markdown": "Reports the boolean expressions that contain the `true` or `false` literals and can be simplified." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpFuncGetArgCanBeReplacedWithParamInspection", + "suppressToolId": "PhpBooleanCanBeSimplifiedInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -14525,19 +14525,19 @@ ] }, { - "id": "PhpBooleanCanBeSimplifiedInspection", + "id": "PhpFuncGetArgCanBeReplacedWithParamInspection", "shortDescription": { - "text": "Boolean expression can be simplified" + "text": "'func_get_arg()' call can be replaced with parameter access" }, "fullDescription": { - "text": "Reports the boolean expressions that contain the 'true' or 'false' literals and can be simplified.", - "markdown": "Reports the boolean expressions that contain the `true` or `false` literals and can be simplified." + "text": "Reports the 'func_get_arg()' calls that can be replaced with direct parameter access.", + "markdown": "Reports the `func_get_arg()` calls that can be replaced with direct parameter access." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpBooleanCanBeSimplifiedInspection", + "suppressToolId": "PhpFuncGetArgCanBeReplacedWithParamInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -14579,7 +14579,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -14612,7 +14612,7 @@ { "target": { "id": "PHP/Unused symbols", - "index": 48, + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -14711,7 +14711,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -15074,7 +15074,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -15272,7 +15272,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -15437,7 +15437,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -15449,19 +15449,19 @@ ] }, { - "id": "PhpUnused", + "id": "PhpUnitMisorderedAssertEqualsArgumentsInspection", "shortDescription": { - "text": "Unused declaration" + "text": "Misordered PHPUnit equality assertion method arguments" }, "fullDescription": { - "text": "Reports the classes, methods, functions, constants, or properties that are not used or not reachable from entry points. It also reports all method implementations/overriders. Some unused members might not be reported in the code editor on the fly. Due to performance reasons, a non-private member is checked only when its name rarely occurs in the project. To see all results, run the inspection in batch mode by using Code | Inspect Code... or Code | Run Inspection by Name....", - "markdown": "Reports the classes, methods, functions, constants, or properties that are not used or not reachable from entry points. It also reports all method implementations/overriders.\n\nSome unused members might not be reported in the code editor on the fly. Due to performance reasons, a non-private member is checked only\nwhen its name rarely occurs in the project.\n\nTo see all results, run the inspection in batch mode by using **Code \\| Inspect Code...** or **Code \\| Run Inspection by\nName...**." + "text": "Reports the calls to PHPUnit equality assertion methods (such as 'assertEquals()', 'assertNotEquals()', 'assertSame()', and so on) that have a non-literal as the expected result argument and a literal as the actual result argument. Such calls will behave fine for assertions that pass, but may produce confusing error reports if their expected and actual arguments differ. See assertEquals for details.", + "markdown": "Reports the calls to PHPUnit equality assertion methods (such as `assertEquals()`, `assertNotEquals()`, `assertSame()`, and so on) that have a non-literal as the expected result argument and a literal as the actual result argument. Such calls will behave fine for assertions that pass, but may produce confusing error reports if their expected and actual arguments differ.\n\n\nSee [assertEquals](https://phpunit.readthedocs.io/en/stable/assertions.html#assertequals) for details." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpUnused", + "suppressToolId": "PhpUnitMisorderedAssertEqualsArgumentsInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -15469,8 +15469,8 @@ "relationships": [ { "target": { - "id": "PHP/Unused symbols", - "index": 48, + "id": "PHP/PHPUnit", + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -15482,19 +15482,19 @@ ] }, { - "id": "PhpUnitMisorderedAssertEqualsArgumentsInspection", + "id": "PhpUnused", "shortDescription": { - "text": "Misordered PHPUnit equality assertion method arguments" + "text": "Unused declaration" }, "fullDescription": { - "text": "Reports the calls to PHPUnit equality assertion methods (such as 'assertEquals()', 'assertNotEquals()', 'assertSame()', and so on) that have a non-literal as the expected result argument and a literal as the actual result argument. Such calls will behave fine for assertions that pass, but may produce confusing error reports if their expected and actual arguments differ. See assertEquals for details.", - "markdown": "Reports the calls to PHPUnit equality assertion methods (such as `assertEquals()`, `assertNotEquals()`, `assertSame()`, and so on) that have a non-literal as the expected result argument and a literal as the actual result argument. Such calls will behave fine for assertions that pass, but may produce confusing error reports if their expected and actual arguments differ.\n\n\nSee [assertEquals](https://phpunit.readthedocs.io/en/stable/assertions.html#assertequals) for details." + "text": "Reports the classes, methods, functions, constants, or properties that are not used or not reachable from entry points. It also reports all method implementations/overriders. Some unused members might not be reported in the code editor on the fly. Due to performance reasons, a non-private member is checked only when its name rarely occurs in the project. To see all results, run the inspection in batch mode by using Code | Inspect Code... or Code | Run Inspection by Name....", + "markdown": "Reports the classes, methods, functions, constants, or properties that are not used or not reachable from entry points. It also reports all method implementations/overriders.\n\nSome unused members might not be reported in the code editor on the fly. Due to performance reasons, a non-private member is checked only\nwhen its name rarely occurs in the project.\n\nTo see all results, run the inspection in batch mode by using **Code \\| Inspect Code...** or **Code \\| Run Inspection by\nName...**." }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "note", "parameters": { - "suppressToolId": "PhpUnitMisorderedAssertEqualsArgumentsInspection", + "suppressToolId": "PhpUnused", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -15502,8 +15502,8 @@ "relationships": [ { "target": { - "id": "PHP/PHPUnit", - "index": 27, + "id": "PHP/Unused symbols", + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -15635,7 +15635,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -15668,7 +15668,7 @@ { "target": { "id": "PHP/Composer", - "index": 50, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -15701,7 +15701,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -15800,7 +15800,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -15833,7 +15833,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -16064,7 +16064,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -16109,28 +16109,28 @@ ] }, { - "id": "PhpContinueTargetingSwitchInspection", + "id": "PhpGetClassCanBeReplacedWithClassNameLiteralInspection", "shortDescription": { - "text": "'continue' is targeting 'switch' statement" + "text": "'get_class()' call can be replaced with '::class'" }, "fullDescription": { - "text": "Reports the 'continue' statements that are targeting 'switch' statements. In PHP 7.3 and later, such usages are deprecated and will emit an 'E_WARNING', since they are most likely the result of a programming mistake. In PHP, such 'continue' statements are equivalent to 'break', that is, they end the execution of the current 'switch' structure. In other languages, such 'continue' statements behave as 'continue 2' in PHP, that is, they take the execution to a higher level control structure (for example, the next iteration of an outer loop). See continue (php.net), break (php.net), and switch (php.net) for details.", - "markdown": "Reports the `continue` statements that are targeting `switch` statements. In PHP 7.3 and later, such usages are deprecated and will emit an `E_WARNING`, since they are most likely the result of a programming mistake.\n\n* In PHP, such `continue` statements are equivalent to `break`, that is, they end the execution of the current `switch` structure.\n* In other languages, such `continue` statements behave as `continue 2` in PHP, that is, they take the execution to a higher level control structure (for example, the next iteration of an outer loop).\n\n\nSee [continue (php.net)](https://www.php.net/manual/en/control-structures.continue.php), [break (php.net)](https://www.php.net/manual/en/control-structures.break.php), and [switch (php.net)](https://www.php.net/manual/en/control-structures.switch.php) for details." + "text": "Reports the 'get_class()' calls and suggests replacing them with '::class' when PHP Language level is set to 8.0 or later. See Allow ::class on objects (php.net) for details.", + "markdown": "Reports the `get_class()` calls and suggests replacing them with `::class` when PHP Language level is set to 8.0 or later.\n\n\nSee [Allow ::class on objects (php.net)](https://wiki.php.net/rfc/class_name_literal_on_object) for details." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpContinueTargetingSwitchInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "PhpGetClassCanBeReplacedWithClassNameLiteralInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" } }, "relationships": [ { "target": { - "id": "PHP/Code smell", - "index": 3, + "id": "PHP/Code style", + "index": 5, "toolComponent": { "name": "QDPHP" } @@ -16142,28 +16142,28 @@ ] }, { - "id": "PhpGetClassCanBeReplacedWithClassNameLiteralInspection", + "id": "PhpContinueTargetingSwitchInspection", "shortDescription": { - "text": "'get_class()' call can be replaced with '::class'" + "text": "'continue' is targeting 'switch' statement" }, "fullDescription": { - "text": "Reports the 'get_class()' calls and suggests replacing them with '::class' when PHP Language level is set to 8.0 or later. See Allow ::class on objects (php.net) for details.", - "markdown": "Reports the `get_class()` calls and suggests replacing them with `::class` when PHP Language level is set to 8.0 or later.\n\n\nSee [Allow ::class on objects (php.net)](https://wiki.php.net/rfc/class_name_literal_on_object) for details." + "text": "Reports the 'continue' statements that are targeting 'switch' statements. In PHP 7.3 and later, such usages are deprecated and will emit an 'E_WARNING', since they are most likely the result of a programming mistake. In PHP, such 'continue' statements are equivalent to 'break', that is, they end the execution of the current 'switch' structure. In other languages, such 'continue' statements behave as 'continue 2' in PHP, that is, they take the execution to a higher level control structure (for example, the next iteration of an outer loop). See continue (php.net), break (php.net), and switch (php.net) for details.", + "markdown": "Reports the `continue` statements that are targeting `switch` statements. In PHP 7.3 and later, such usages are deprecated and will emit an `E_WARNING`, since they are most likely the result of a programming mistake.\n\n* In PHP, such `continue` statements are equivalent to `break`, that is, they end the execution of the current `switch` structure.\n* In other languages, such `continue` statements behave as `continue 2` in PHP, that is, they take the execution to a higher level control structure (for example, the next iteration of an outer loop).\n\n\nSee [continue (php.net)](https://www.php.net/manual/en/control-structures.continue.php), [break (php.net)](https://www.php.net/manual/en/control-structures.break.php), and [switch (php.net)](https://www.php.net/manual/en/control-structures.switch.php) for details." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpGetClassCanBeReplacedWithClassNameLiteralInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" + "suppressToolId": "PhpContinueTargetingSwitchInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Code style", - "index": 5, + "id": "PHP/Code smell", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -16328,7 +16328,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -16361,7 +16361,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -16427,7 +16427,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -16493,7 +16493,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -16691,7 +16691,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -16889,7 +16889,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -16922,7 +16922,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -17054,7 +17054,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -17120,7 +17120,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -17318,7 +17318,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -17483,7 +17483,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -17549,7 +17549,7 @@ { "target": { "id": "PHP/Unused symbols", - "index": 48, + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -17615,7 +17615,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -17681,7 +17681,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -17747,7 +17747,7 @@ { "target": { "id": "PHP/Composer", - "index": 50, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -17846,7 +17846,7 @@ { "target": { "id": "PHP/Symfony", - "index": 35, + "index": 37, "toolComponent": { "name": "QDPHP" } @@ -18143,7 +18143,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -18209,7 +18209,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -18242,7 +18242,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -18275,7 +18275,7 @@ { "target": { "id": "PHP/Unused symbols", - "index": 48, + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -18407,7 +18407,7 @@ { "target": { "id": "PHP/Attributes", - "index": 59, + "index": 61, "toolComponent": { "name": "QDPHP" } @@ -18506,7 +18506,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -18704,7 +18704,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 92, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -18770,7 +18770,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -18803,7 +18803,7 @@ { "target": { "id": "PHP/Type compatibility", - "index": 31, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -18815,28 +18815,28 @@ ] }, { - "id": "PhpWrongForeachArgumentTypeInspection", + "id": "PhpInvalidStringOffsetUsageInspection", "shortDescription": { - "text": "Invalid argument supplied for 'foreach()'" + "text": "Invalid string offset usage" }, "fullDescription": { - "text": "Reports the 'foreach' constructs used on variables of the 'string', 'float', 'int', or 'boolean' type. See foreach (php.net) for details.", - "markdown": "Reports the `foreach` constructs used on variables of the `string`, `float`, `int`, or `boolean` type.\n\n\nSee [foreach (php.net)](http://www.php.net/manual/en/control-structures.foreach.php) for details." + "text": "Reports invalid string offset usages that will result in a runtime error. The following usages are reported: Using string offsets as objects or arrays Unsetting string offsets via 'unset' Passing string offsets by reference Creating references to or from string offsets Incrementing or decrementing string offsets Using combined operator assignments such as '+=' or '.=' on string offsets Assigning string offsets with empty strings or strings with length >1", + "markdown": "Reports invalid string offset usages that will result in a runtime error.\n\n\nThe following usages are reported:\n\n* Using string offsets as objects or arrays\n* Unsetting string offsets via `unset`\n* Passing string offsets by reference\n* Creating references to or from string offsets\n* Incrementing or decrementing string offsets\n* Using combined operator assignments such as `+=` or `.=` on string offsets\n* Assigning string offsets with empty strings or strings with length \\>1" }, "defaultConfiguration": { "enabled": true, - "level": "warning", + "level": "error", "parameters": { - "suppressToolId": "PhpWrongForeachArgumentTypeInspection", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "PhpInvalidStringOffsetUsageInspection", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ { "target": { - "id": "PHP/Type compatibility", - "index": 31, + "id": "PHP/Probable bugs", + "index": 12, "toolComponent": { "name": "QDPHP" } @@ -18881,28 +18881,28 @@ ] }, { - "id": "PhpInvalidStringOffsetUsageInspection", + "id": "PhpWrongForeachArgumentTypeInspection", "shortDescription": { - "text": "Invalid string offset usage" + "text": "Invalid argument supplied for 'foreach()'" }, "fullDescription": { - "text": "Reports invalid string offset usages that will result in a runtime error. The following usages are reported: Using string offsets as objects or arrays Unsetting string offsets via 'unset' Passing string offsets by reference Creating references to or from string offsets Incrementing or decrementing string offsets Using combined operator assignments such as '+=' or '.=' on string offsets Assigning string offsets with empty strings or strings with length >1", - "markdown": "Reports invalid string offset usages that will result in a runtime error.\n\n\nThe following usages are reported:\n\n* Using string offsets as objects or arrays\n* Unsetting string offsets via `unset`\n* Passing string offsets by reference\n* Creating references to or from string offsets\n* Incrementing or decrementing string offsets\n* Using combined operator assignments such as `+=` or `.=` on string offsets\n* Assigning string offsets with empty strings or strings with length \\>1" + "text": "Reports the 'foreach' constructs used on variables of the 'string', 'float', 'int', or 'boolean' type. See foreach (php.net) for details.", + "markdown": "Reports the `foreach` constructs used on variables of the `string`, `float`, `int`, or `boolean` type.\n\n\nSee [foreach (php.net)](http://www.php.net/manual/en/control-structures.foreach.php) for details." }, "defaultConfiguration": { "enabled": true, - "level": "error", + "level": "warning", "parameters": { - "suppressToolId": "PhpInvalidStringOffsetUsageInspection", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "PhpWrongForeachArgumentTypeInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "PHP/Probable bugs", - "index": 12, + "id": "PHP/Type compatibility", + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -19100,7 +19100,7 @@ { "target": { "id": "PHP/PHPUnit", - "index": 27, + "index": 29, "toolComponent": { "name": "QDPHP" } @@ -19301,7 +19301,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19334,7 +19334,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19367,7 +19367,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19400,7 +19400,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19433,7 +19433,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19466,7 +19466,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19499,7 +19499,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19532,7 +19532,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19598,7 +19598,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19631,7 +19631,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19664,7 +19664,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19697,7 +19697,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19730,7 +19730,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19763,7 +19763,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19796,7 +19796,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19829,7 +19829,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19862,7 +19862,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19895,7 +19895,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19928,7 +19928,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19961,7 +19961,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -19994,7 +19994,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20027,7 +20027,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20060,7 +20060,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20093,7 +20093,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20126,7 +20126,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20159,7 +20159,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20192,7 +20192,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20225,7 +20225,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20357,7 +20357,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20390,7 +20390,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20522,7 +20522,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20555,7 +20555,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20588,7 +20588,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20621,7 +20621,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20654,7 +20654,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20687,7 +20687,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20720,7 +20720,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20753,7 +20753,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20819,7 +20819,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20885,7 +20885,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20918,7 +20918,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -20951,7 +20951,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -21017,7 +21017,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -21083,7 +21083,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -21116,7 +21116,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -21149,7 +21149,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -21215,7 +21215,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -21248,7 +21248,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -21281,7 +21281,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -21347,7 +21347,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -21380,7 +21380,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -21413,7 +21413,7 @@ { "target": { "id": "SQL", - "index": 44, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -21434,7 +21434,7 @@ }, { "name": "fr.adrienbrault.idea.symfony2plugin", - "version": "2023.1.270", + "version": "2023.1.271", "rules": [ { "id": "TwigExtensionDeprecatedInspection", @@ -21469,6 +21469,72 @@ } ] }, + { + "id": "ContainerConstantXml", + "shortDescription": { + "text": "Constant not found in XML definition" + }, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "ContainerConstantXml", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony/Service", + "index": 16, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RouteSettingDeprecatedInspectionYaml", + "shortDescription": { + "text": "Symfony: Route settings deprecated in Yaml" + }, + "fullDescription": { + "text": "Route settings deprecated inspection", + "markdown": "Route settings deprecated inspection" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RouteSettingDeprecatedInspectionYaml", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony/Route", + "index": 18, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "RequestStackInAction", "shortDescription": { @@ -21623,7 +21689,40 @@ { "target": { "id": "Symfony/Asset", - "index": 55, + "index": 57, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ContainerSettingDeprecatedInspectionXml", + "shortDescription": { + "text": "Symfony: Container settings deprecated in XML" + }, + "fullDescription": { + "text": "Deprecated Symfony container settings usage", + "markdown": "Deprecated Symfony container settings usage" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "ContainerSettingDeprecatedInspectionXml", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony/Service", + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -21656,7 +21755,7 @@ { "target": { "id": "Symfony/Route", - "index": 63, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -21700,6 +21799,72 @@ } ] }, + { + "id": "MissingServiceYaml", + "shortDescription": { + "text": "Missing Service in yaml definition" + }, + "fullDescription": { + "text": "No Symfony service with given id was found. See Symfony documentation for more help", + "markdown": "No Symfony service with given id was found. See [Symfony documentation](https://symfony.com/doc/current/service_container.html?phpstorm) for more help" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "MissingServiceYaml", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony/Service", + "index": 16, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "MissingServiceXml", + "shortDescription": { + "text": "Missing Service in XML definition" + }, + "fullDescription": { + "text": "No Symfony service with given id was found. See Symfony documentation for more help", + "markdown": "No Symfony service with given id was found. See [Symfony documentation](https://symfony.com/doc/current/service_container.html?phpstorm) for more help" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "MissingServiceXml", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony/Service", + "index": 16, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "ConstructorTwigExtensionHeavyConstructor", "shortDescription": { @@ -21755,7 +21920,7 @@ { "target": { "id": "Symfony/Service", - "index": 68, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -21821,7 +21986,7 @@ { "target": { "id": "Symfony/Service", - "index": 68, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -21833,19 +21998,19 @@ ] }, { - "id": "ContainerConstant", + "id": "ControllerMethodXml", "shortDescription": { - "text": "Constant not found" + "text": "Missing Controller Action in XML" }, "fullDescription": { - "text": "Constant not found", - "markdown": "Constant not found" + "text": "", + "markdown": "" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "ContainerConstant", + "suppressToolId": "ControllerMethodXml", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -21853,8 +22018,8 @@ "relationships": [ { "target": { - "id": "Symfony/Service", - "index": 68, + "id": "Symfony/Route", + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -21866,19 +22031,19 @@ ] }, { - "id": "PhpTranslationKeyInspection", + "id": "RouteSettingDeprecatedInspectionXml", "shortDescription": { - "text": "PHP: Missing translation key" + "text": "Symfony: Route settings deprecated in XML" }, "fullDescription": { - "text": "Show missing translation related strings of PHP Files", - "markdown": "Show missing translation related strings of PHP Files" + "text": "Route settings deprecated inspection", + "markdown": "Route settings deprecated inspection" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "PhpTranslationKeyInspection", + "suppressToolId": "RouteSettingDeprecatedInspectionXml", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -21886,8 +22051,8 @@ "relationships": [ { "target": { - "id": "Symfony/Translation", - "index": 82, + "id": "Symfony/Route", + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -21899,9 +22064,9 @@ ] }, { - "id": "RouteControllerDeprecatedInspection", + "id": "RouteControllerDeprecatedInspectionXml", "shortDescription": { - "text": "Deprecated Action" + "text": "Deprecated Action in XML definition" }, "fullDescription": { "text": "", @@ -21911,7 +22076,7 @@ "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "RouteControllerDeprecatedInspection", + "suppressToolId": "RouteControllerDeprecatedInspectionXml", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -21920,7 +22085,40 @@ { "target": { "id": "Symfony/Route", - "index": 63, + "index": 18, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PhpTranslationKeyInspection", + "shortDescription": { + "text": "PHP: Missing translation key" + }, + "fullDescription": { + "text": "Show missing translation related strings of PHP Files", + "markdown": "Show missing translation related strings of PHP Files" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PhpTranslationKeyInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony/Translation", + "index": 82, "toolComponent": { "name": "QDPHP" } @@ -21965,19 +22163,19 @@ ] }, { - "id": "TwigVariablePathInspection", + "id": "ContainerConstantYaml", "shortDescription": { - "text": "Field or method not found" + "text": "Constant not found in yaml definition" }, "fullDescription": { - "text": "Reporting missing field or method a known Twig typed variable", - "markdown": "Reporting missing field or method a known Twig typed variable" + "text": "No description available", + "markdown": "No description available" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "TwigVariablePathInspection", + "suppressToolId": "ContainerConstantYaml", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -21985,8 +22183,8 @@ "relationships": [ { "target": { - "id": "Symfony/Twig", - "index": 15, + "id": "Symfony/Service", + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -21998,19 +22196,19 @@ ] }, { - "id": "RouteAttributeNamespaceDeprecated", + "id": "TwigVariablePathInspection", "shortDescription": { - "text": "Symfony: Route annotation namespace will replaced by Attribute" + "text": "Field or method not found" }, "fullDescription": { - "text": "\"Symfony\\Component\\Routing\\Annotation\\Route\" will be replaced by Attribute namespace, to make it easier for the ecosystem to support 6.4, 7.4 and 8.0 simultaneously is not deprecated, but should be replaced. Given hint to use \"Symfony\\Component\\Routing\\Attribute\\Route\" as routing definition in attributes e.g. in your controller actions.", - "markdown": "\"Symfony\\\\Component\\\\Routing\\\\Annotation\\\\Route\" will be replaced by Attribute namespace, to make it easier for the ecosystem to support 6.4, 7.4 and 8.0 simultaneously is not deprecated, but should be replaced.\n\nGiven hint to use \"Symfony\\\\Component\\\\Routing\\\\Attribute\\\\Route\" as routing definition in attributes e.g. in your controller actions." + "text": "Reporting missing field or method a known Twig typed variable", + "markdown": "Reporting missing field or method a known Twig typed variable" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "RouteAttributeNamespaceDeprecated", + "suppressToolId": "TwigVariablePathInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -22018,8 +22216,8 @@ "relationships": [ { "target": { - "id": "Symfony", - "index": 14, + "id": "Symfony/Twig", + "index": 15, "toolComponent": { "name": "QDPHP" } @@ -22031,19 +22229,19 @@ ] }, { - "id": "Symfony2YamlDuplicateParameterKeyInspection", + "id": "DeprecatedClassesYaml", "shortDescription": { - "text": "Duplicate Key" + "text": "Deprecated Class in Yaml" }, "fullDescription": { - "text": "No description available", - "markdown": "No description available" + "text": "", + "markdown": "" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "Symfony2YamlDuplicateParameterKeyInspection", + "suppressToolId": "DeprecatedClassesYaml", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -22052,7 +22250,7 @@ { "target": { "id": "Symfony/Service", - "index": 68, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -22064,19 +22262,19 @@ ] }, { - "id": "TaggedExtendsInterfaceClass", + "id": "RouteAttributeNamespaceDeprecated", "shortDescription": { - "text": "Missing Tag extends/interface statement" + "text": "Symfony: Route annotation namespace will replaced by Attribute" }, "fullDescription": { - "text": "Tagged service is missing extends or interface statement See more on Symfony2 doc: The Dependency Injection Tags", - "markdown": "Tagged service is missing extends or interface statement See more on Symfony2 doc: [The Dependency Injection Tags](http://symfony.com/doc/current/reference/dic_tags.html)" + "text": "\"Symfony\\Component\\Routing\\Annotation\\Route\" will be replaced by Attribute namespace, to make it easier for the ecosystem to support 6.4, 7.4 and 8.0 simultaneously is not deprecated, but should be replaced. Given hint to use \"Symfony\\Component\\Routing\\Attribute\\Route\" as routing definition in attributes e.g. in your controller actions.", + "markdown": "\"Symfony\\\\Component\\\\Routing\\\\Annotation\\\\Route\" will be replaced by Attribute namespace, to make it easier for the ecosystem to support 6.4, 7.4 and 8.0 simultaneously is not deprecated, but should be replaced.\n\nGiven hint to use \"Symfony\\\\Component\\\\Routing\\\\Attribute\\\\Route\" as routing definition in attributes e.g. in your controller actions." }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "TaggedExtendsInterfaceClass", + "suppressToolId": "RouteAttributeNamespaceDeprecated", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -22084,8 +22282,8 @@ "relationships": [ { "target": { - "id": "Symfony/Service", - "index": 68, + "id": "Symfony", + "index": 14, "toolComponent": { "name": "QDPHP" } @@ -22097,19 +22295,19 @@ ] }, { - "id": "FormViewTemplate", + "id": "Symfony2YamlDuplicateParameterKeyInspection", "shortDescription": { - "text": "Symfony: Create a form view for passing to template" + "text": "Duplicate Key" }, "fullDescription": { - "text": "", - "markdown": "" + "text": "No description available", + "markdown": "No description available" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "FormViewTemplate", + "suppressToolId": "Symfony2YamlDuplicateParameterKeyInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -22117,8 +22315,8 @@ "relationships": [ { "target": { - "id": "Symfony", - "index": 14, + "id": "Symfony/Service", + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -22130,19 +22328,19 @@ ] }, { - "id": "YamlControllerMethod", + "id": "FormViewTemplate", "shortDescription": { - "text": "Missing Controller Action" + "text": "Symfony: Create a form view for passing to template" }, "fullDescription": { - "text": "No description available", - "markdown": "No description available" + "text": "", + "markdown": "" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "YamlControllerMethod", + "suppressToolId": "FormViewTemplate", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -22150,8 +22348,8 @@ "relationships": [ { "target": { - "id": "Symfony/Route", - "index": 63, + "id": "Symfony", + "index": 14, "toolComponent": { "name": "QDPHP" } @@ -22184,7 +22382,7 @@ { "target": { "id": "Symfony/Asset", - "index": 55, + "index": 57, "toolComponent": { "name": "QDPHP" } @@ -22217,7 +22415,7 @@ { "target": { "id": "Symfony/Service", - "index": 68, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -22382,7 +22580,7 @@ { "target": { "id": "Symfony/Service", - "index": 68, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -22448,7 +22646,7 @@ { "target": { "id": "Symfony/Route", - "index": 63, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -22613,7 +22811,7 @@ { "target": { "id": "Symfony/Service", - "index": 68, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -22679,7 +22877,40 @@ { "target": { "id": "Symfony/Service", - "index": 68, + "index": 16, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "DeprecatedClassesPhp", + "shortDescription": { + "text": "Deprecated Class in PHP" + }, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "DeprecatedClassesPhp", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony/Service", + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -22712,7 +22943,7 @@ { "target": { "id": "Symfony/Route", - "index": 63, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -22757,19 +22988,19 @@ ] }, { - "id": "TwigTranslationKeyInspection", + "id": "ControllerMethodYaml", "shortDescription": { - "text": "Twig: Missing translation key" + "text": "Missing Controller Action in Yaml" }, "fullDescription": { - "text": "No description available", - "markdown": "No description available" + "text": "", + "markdown": "" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "TwigTranslationKeyInspection", + "suppressToolId": "ControllerMethodYaml", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -22777,8 +23008,8 @@ "relationships": [ { "target": { - "id": "Symfony/Translation", - "index": 82, + "id": "Symfony/Route", + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -22790,9 +23021,42 @@ ] }, { - "id": "XmlServiceArgumentInspection", + "id": "RouteControllerDeprecatedInspectionYaml", "shortDescription": { - "text": "Symfony: XML Arguments" + "text": "Deprecated Action in yaml definition" + }, + "fullDescription": { + "text": "", + "markdown": "" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RouteControllerDeprecatedInspectionYaml", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony/Route", + "index": 18, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "TwigTranslationKeyInspection", + "shortDescription": { + "text": "Twig: Missing translation key" }, "fullDescription": { "text": "No description available", @@ -22802,7 +23066,7 @@ "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "XmlServiceArgumentInspection", + "suppressToolId": "TwigTranslationKeyInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -22810,8 +23074,8 @@ "relationships": [ { "target": { - "id": "Symfony/Service", - "index": 68, + "id": "Symfony/Translation", + "index": 82, "toolComponent": { "name": "QDPHP" } @@ -22823,19 +23087,19 @@ ] }, { - "id": "MissingService", + "id": "XmlServiceArgumentInspection", "shortDescription": { - "text": "Missing Service" + "text": "Symfony: XML Arguments" }, "fullDescription": { - "text": "No Symfony service with given id was found. See Symfony documentation for more help", - "markdown": "No Symfony service with given id was found. See [Symfony documentation](https://symfony.com/doc/current/service_container.html?phpstorm) for more help" + "text": "No description available", + "markdown": "No description available" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "MissingService", + "suppressToolId": "XmlServiceArgumentInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -22844,7 +23108,7 @@ { "target": { "id": "Symfony/Service", - "index": 68, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -22943,7 +23207,40 @@ { "target": { "id": "Symfony/Service", - "index": 68, + "index": 16, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "TaggedExtendsInterfaceClassXml", + "shortDescription": { + "text": "Missing Tag extends/interface statement in XML" + }, + "fullDescription": { + "text": "Tagged service is missing extends or interface statement See more on Symfony2 doc: The Dependency Injection Tags", + "markdown": "Tagged service is missing extends or interface statement See more on Symfony2 doc: [The Dependency Injection Tags](http://symfony.com/doc/current/reference/dic_tags.html)" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "TaggedExtendsInterfaceClassXml", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony/Service", + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -23009,7 +23306,7 @@ { "target": { "id": "Symfony/Service", - "index": 68, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -23042,7 +23339,7 @@ { "target": { "id": "Symfony/Asset", - "index": 55, + "index": 57, "toolComponent": { "name": "QDPHP" } @@ -23087,19 +23384,19 @@ ] }, { - "id": "YamlParameterInspection", + "id": "TaggedExtendsInterfaceClassYaml", "shortDescription": { - "text": "Symfony: Missing Parameter" + "text": "Missing Tag extends/interface statement in Yaml" }, "fullDescription": { - "text": "No parameter definition not found. See Symfony documentation for how to add one", - "markdown": "No parameter definition not found. [See Symfony documentation](https://symfony.com/doc/current/service_container/parameters.html?phpstorm) for how to add one" + "text": "Tagged service is missing extends or interface statement See more on Symfony2 doc: The Dependency Injection Tags", + "markdown": "Tagged service is missing extends or interface statement See more on Symfony2 doc: [The Dependency Injection Tags](http://symfony.com/doc/current/reference/dic_tags.html)" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "YamlParameterInspection", + "suppressToolId": "TaggedExtendsInterfaceClassYaml", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23108,7 +23405,7 @@ { "target": { "id": "Symfony/Service", - "index": 68, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -23120,19 +23417,19 @@ ] }, { - "id": "YamlUnquotedColon", + "id": "YamlParameterInspection", "shortDescription": { - "text": "Colon in the unquoted mapping" + "text": "Symfony: Missing Parameter" }, "fullDescription": { - "text": "A colon cannot be used in an unquoted mapping value.", - "markdown": "A colon cannot be used in an unquoted mapping value." + "text": "No parameter definition not found. See Symfony documentation for how to add one", + "markdown": "No parameter definition not found. [See Symfony documentation](https://symfony.com/doc/current/service_container/parameters.html?phpstorm) for how to add one" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "YamlUnquotedColon", + "suppressToolId": "YamlParameterInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23140,8 +23437,8 @@ "relationships": [ { "target": { - "id": "Symfony/Yaml", - "index": 109, + "id": "Symfony/Service", + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -23153,19 +23450,19 @@ ] }, { - "id": "TwigVariableDeprecatedInspection", + "id": "DeprecatedClassesXml", "shortDescription": { - "text": "Deprecated Twig variable" + "text": "Deprecated Class in XML" }, "fullDescription": { - "text": "No description available", - "markdown": "No description available" + "text": "", + "markdown": "" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "TwigVariableDeprecatedInspection", + "suppressToolId": "DeprecatedClassesXml", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23173,8 +23470,8 @@ "relationships": [ { "target": { - "id": "Symfony/Twig", - "index": 15, + "id": "Symfony/Service", + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -23186,19 +23483,19 @@ ] }, { - "id": "AutowireControllerAsService", + "id": "YamlUnquotedColon", "shortDescription": { - "text": "Symfony: controller should not be autowire" + "text": "Colon in the unquoted mapping" }, "fullDescription": { - "text": "", - "markdown": "" + "text": "A colon cannot be used in an unquoted mapping value.", + "markdown": "A colon cannot be used in an unquoted mapping value." }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "AutowireControllerAsService", + "suppressToolId": "YamlUnquotedColon", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23206,8 +23503,8 @@ "relationships": [ { "target": { - "id": "Symfony", - "index": 14, + "id": "Symfony/Yaml", + "index": 109, "toolComponent": { "name": "QDPHP" } @@ -23219,19 +23516,19 @@ ] }, { - "id": "DoctrineQueryBuilderAdder", + "id": "TwigVariableDeprecatedInspection", "shortDescription": { - "text": "Symfony: Previous QueryBuilder method call should be removed, because is overwritten here" + "text": "Deprecated Twig variable" }, "fullDescription": { - "text": "", - "markdown": "" + "text": "No description available", + "markdown": "No description available" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "DoctrineQueryBuilderAdder", + "suppressToolId": "TwigVariableDeprecatedInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23239,8 +23536,8 @@ "relationships": [ { "target": { - "id": "Symfony", - "index": 14, + "id": "Symfony/Twig", + "index": 15, "toolComponent": { "name": "QDPHP" } @@ -23252,19 +23549,19 @@ ] }, { - "id": "TwigPathReplacement", + "id": "ContainerSettingDeprecatedInspectionYaml", "shortDescription": { - "text": "Symfony: Twig route path exits" + "text": "Symfony: Container settings deprecated in Yaml" }, "fullDescription": { - "text": "A Symfony routes exists for linking page and path should be used", - "markdown": "A Symfony routes exists for linking page and [path](https://symfony.com/doc/current/templates.html#templates-link-to-pages) should be used" + "text": "Deprecated Symfony container settings usage", + "markdown": "Deprecated Symfony container settings usage" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "TwigPathReplacement", + "suppressToolId": "ContainerSettingDeprecatedInspectionYaml", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23272,8 +23569,8 @@ "relationships": [ { "target": { - "id": "Symfony", - "index": 14, + "id": "Symfony/Service", + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -23285,19 +23582,19 @@ ] }, { - "id": "FormTypeAsClassConstant", + "id": "AutowireControllerAsService", "shortDescription": { - "text": "Fully-qualified class name (FQCN) in form types" + "text": "Symfony: controller should not be autowire" }, "fullDescription": { - "text": "Type names were deprecated use fully-qualified class name (FQCN) instead", - "markdown": "Type names were deprecated use fully-qualified class name (FQCN) instead" + "text": "", + "markdown": "" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "FormTypeAsClassConstant", + "suppressToolId": "AutowireControllerAsService", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23305,8 +23602,8 @@ "relationships": [ { "target": { - "id": "Symfony/Form", - "index": 111, + "id": "Symfony", + "index": 14, "toolComponent": { "name": "QDPHP" } @@ -23318,19 +23615,19 @@ ] }, { - "id": "ContainerSettingDeprecatedInspection", + "id": "DoctrineQueryBuilderAdder", "shortDescription": { - "text": "Symfony: Container settings deprecated" + "text": "Symfony: Previous QueryBuilder method call should be removed, because is overwritten here" }, "fullDescription": { - "text": "No description available", - "markdown": "No description available" + "text": "", + "markdown": "" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "ContainerSettingDeprecatedInspection", + "suppressToolId": "DoctrineQueryBuilderAdder", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23338,8 +23635,8 @@ "relationships": [ { "target": { - "id": "Symfony/Service", - "index": 68, + "id": "Symfony", + "index": 14, "toolComponent": { "name": "QDPHP" } @@ -23351,19 +23648,19 @@ ] }, { - "id": "PhpAssetMissingInspection", + "id": "TwigPathReplacement", "shortDescription": { - "text": "Symfony: Missing Asset" + "text": "Symfony: Twig route path exits" }, "fullDescription": { - "text": "Asset not found. See Symfony documentation for more information", - "markdown": "Asset not found. See [Symfony documentation](http://symfony.com/doc/current/assetic/asset_management.html?phpstorm) for more information" + "text": "A Symfony routes exists for linking page and path should be used", + "markdown": "A Symfony routes exists for linking page and [path](https://symfony.com/doc/current/templates.html#templates-link-to-pages) should be used" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "PhpAssetMissingInspection", + "suppressToolId": "TwigPathReplacement", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23371,8 +23668,8 @@ "relationships": [ { "target": { - "id": "Symfony/Asset", - "index": 55, + "id": "Symfony", + "index": 14, "toolComponent": { "name": "QDPHP" } @@ -23384,19 +23681,19 @@ ] }, { - "id": "YamlClassInspection", + "id": "FormTypeAsClassConstant", "shortDescription": { - "text": "Yaml: Missing Class" + "text": "Fully-qualified class name (FQCN) in form types" }, "fullDescription": { - "text": "PHP class for this service definition was not found", - "markdown": "PHP class for this service definition was not found" + "text": "Type names were deprecated use fully-qualified class name (FQCN) instead", + "markdown": "Type names were deprecated use fully-qualified class name (FQCN) instead" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "YamlClassInspection", + "suppressToolId": "FormTypeAsClassConstant", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23404,8 +23701,8 @@ "relationships": [ { "target": { - "id": "Symfony/Service", - "index": 68, + "id": "Symfony/Form", + "index": 111, "toolComponent": { "name": "QDPHP" } @@ -23417,19 +23714,19 @@ ] }, { - "id": "YamlQuotedEscapedInspection", + "id": "PhpAssetMissingInspection", "shortDescription": { - "text": "Quoted issues" + "text": "Symfony: Missing Asset" }, "fullDescription": { - "text": "Deprecated quoted issues", - "markdown": "Deprecated quoted issues" + "text": "Asset not found. See Symfony documentation for more information", + "markdown": "Asset not found. See [Symfony documentation](http://symfony.com/doc/current/assetic/asset_management.html?phpstorm) for more information" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "YamlQuotedEscapedInspection", + "suppressToolId": "PhpAssetMissingInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23437,8 +23734,8 @@ "relationships": [ { "target": { - "id": "Symfony/Yaml", - "index": 109, + "id": "Symfony/Asset", + "index": 57, "toolComponent": { "name": "QDPHP" } @@ -23450,19 +23747,19 @@ ] }, { - "id": "RouteSettingDeprecatedInspection", + "id": "YamlClassInspection", "shortDescription": { - "text": "Symfony: Route settings deprecated" + "text": "Yaml: Missing Class" }, "fullDescription": { - "text": "No description available", - "markdown": "No description available" + "text": "PHP class for this service definition was not found", + "markdown": "PHP class for this service definition was not found" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "RouteSettingDeprecatedInspection", + "suppressToolId": "YamlClassInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23470,8 +23767,8 @@ "relationships": [ { "target": { - "id": "Symfony/Route", - "index": 63, + "id": "Symfony/Service", + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -23483,19 +23780,19 @@ ] }, { - "id": "YamlDeprecatedClasses", + "id": "YamlQuotedEscapedInspection", "shortDescription": { - "text": "Deprecated Class" + "text": "Quoted issues" }, "fullDescription": { - "text": "Class is deprecated, you should replace this class", - "markdown": "Class is deprecated, you should replace this class" + "text": "Deprecated quoted issues", + "markdown": "Deprecated quoted issues" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "YamlDeprecatedClasses", + "suppressToolId": "YamlQuotedEscapedInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -23503,8 +23800,8 @@ "relationships": [ { "target": { - "id": "Symfony/Service", - "index": 68, + "id": "Symfony/Yaml", + "index": 109, "toolComponent": { "name": "QDPHP" } @@ -23582,7 +23879,7 @@ { "target": { "id": "Sass_SCSS", - "index": 19, + "index": 21, "toolComponent": { "name": "QDPHP" } @@ -23615,7 +23912,7 @@ { "target": { "id": "Sass_SCSS", - "index": 19, + "index": 21, "toolComponent": { "name": "QDPHP" } @@ -23648,7 +23945,7 @@ { "target": { "id": "Sass_SCSS", - "index": 19, + "index": 21, "toolComponent": { "name": "QDPHP" } @@ -23681,7 +23978,7 @@ { "target": { "id": "Sass_SCSS", - "index": 19, + "index": 21, "toolComponent": { "name": "QDPHP" } @@ -23726,7 +24023,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -23759,7 +24056,7 @@ { "target": { "id": "General", - "index": 36, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -23792,7 +24089,7 @@ { "target": { "id": "General", - "index": 36, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -23825,7 +24122,7 @@ { "target": { "id": "General", - "index": 36, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -23858,7 +24155,7 @@ { "target": { "id": "General", - "index": 36, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -23891,7 +24188,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -23924,7 +24221,7 @@ { "target": { "id": "General", - "index": 36, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -23957,7 +24254,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -23990,7 +24287,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -24023,7 +24320,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -24056,7 +24353,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -24089,7 +24386,7 @@ { "target": { "id": "General", - "index": 36, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -24122,7 +24419,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -24155,7 +24452,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -24221,7 +24518,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -24254,7 +24551,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -24287,7 +24584,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -24320,7 +24617,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -24353,7 +24650,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -24386,7 +24683,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -24419,7 +24716,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -24452,7 +24749,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -24485,7 +24782,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -24518,7 +24815,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -24551,7 +24848,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -24584,7 +24881,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -24617,7 +24914,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -24650,7 +24947,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -24683,7 +24980,7 @@ { "target": { "id": "General", - "index": 36, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -24749,7 +25046,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -24782,7 +25079,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -24848,7 +25145,7 @@ { "target": { "id": "General", - "index": 36, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -24881,7 +25178,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -25145,7 +25442,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -25178,7 +25475,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -25211,7 +25508,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -25244,7 +25541,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -25310,7 +25607,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -25343,7 +25640,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -25376,7 +25673,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -25409,7 +25706,7 @@ { "target": { "id": "General", - "index": 36, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -25442,7 +25739,7 @@ { "target": { "id": "General", - "index": 36, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -25508,7 +25805,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -25541,7 +25838,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -25574,7 +25871,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -25640,7 +25937,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -25673,7 +25970,7 @@ { "target": { "id": "XML", - "index": 52, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -25685,19 +25982,19 @@ ] }, { - "id": "RegExpDuplicateAlternationBranch", + "id": "RegExpRepeatedSpace", "shortDescription": { - "text": "Duplicate branch in alternation" + "text": "Consecutive spaces" }, "fullDescription": { - "text": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression. Example: '(alpha|bravo|charlie|alpha)' After the quick-fix is applied: '(alpha|bravo|charlie)' New in 2017.1", - "markdown": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression.\n\n**Example:**\n\n\n (alpha|bravo|charlie|alpha)\n\nAfter the quick-fix is applied:\n\n\n (alpha|bravo|charlie)\n\nNew in 2017.1" + "text": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier. Example: '( )' After the quick-fix is applied: '( {5})' New in 2017.1", + "markdown": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier.\n\n**Example:**\n\n\n ( )\n\nAfter the quick-fix is applied:\n\n\n ( {5})\n\n\nNew in 2017.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "RegExpDuplicateAlternationBranch", + "suppressToolId": "RegExpRepeatedSpace", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -25706,7 +26003,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -25718,19 +26015,19 @@ ] }, { - "id": "RegExpRepeatedSpace", + "id": "RegExpDuplicateAlternationBranch", "shortDescription": { - "text": "Consecutive spaces" + "text": "Duplicate branch in alternation" }, "fullDescription": { - "text": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier. Example: '( )' After the quick-fix is applied: '( {5})' New in 2017.1", - "markdown": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier.\n\n**Example:**\n\n\n ( )\n\nAfter the quick-fix is applied:\n\n\n ( {5})\n\n\nNew in 2017.1" + "text": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression. Example: '(alpha|bravo|charlie|alpha)' After the quick-fix is applied: '(alpha|bravo|charlie)' New in 2017.1", + "markdown": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression.\n\n**Example:**\n\n\n (alpha|bravo|charlie|alpha)\n\nAfter the quick-fix is applied:\n\n\n (alpha|bravo|charlie)\n\nNew in 2017.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "RegExpRepeatedSpace", + "suppressToolId": "RegExpDuplicateAlternationBranch", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -25739,7 +26036,7 @@ { "target": { "id": "RegExp", - "index": 64, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -25772,7 +26069,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -25817,7 +26114,7 @@ { "target": { "id": "JavaScript and TypeScript/Unused symbols", - "index": 21, + "index": 23, "toolComponent": { "name": "QDPHP" } @@ -25850,7 +26147,7 @@ { "target": { "id": "JavaScript and TypeScript/Flow type checker", - "index": 23, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -25883,7 +26180,7 @@ { "target": { "id": "JavaScript and TypeScript/Data flow", - "index": 25, + "index": 27, "toolComponent": { "name": "QDPHP" } @@ -25916,7 +26213,7 @@ { "target": { "id": "JavaScript and TypeScript/Bitwise operation issues", - "index": 30, + "index": 32, "toolComponent": { "name": "QDPHP" } @@ -25949,7 +26246,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -25982,7 +26279,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 34, + "index": 35, "toolComponent": { "name": "QDPHP" } @@ -26015,7 +26312,7 @@ { "target": { "id": "JavaScript and TypeScript/React", - "index": 38, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -26048,7 +26345,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 39, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -26081,7 +26378,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -26114,7 +26411,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 46, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -26147,7 +26444,7 @@ { "target": { "id": "JavaScript and TypeScript/Data flow", - "index": 25, + "index": 27, "toolComponent": { "name": "QDPHP" } @@ -26180,7 +26477,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -26213,7 +26510,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -26246,7 +26543,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -26279,7 +26576,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -26312,7 +26609,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -26345,7 +26642,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -26378,7 +26675,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -26411,7 +26708,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 65, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -26444,7 +26741,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 66, + "index": 67, "toolComponent": { "name": "QDPHP" } @@ -26477,7 +26774,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 34, + "index": 35, "toolComponent": { "name": "QDPHP" } @@ -26510,7 +26807,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -26543,7 +26840,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -26576,7 +26873,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -26642,7 +26939,7 @@ { "target": { "id": "JavaScript and TypeScript/Unused symbols", - "index": 21, + "index": 23, "toolComponent": { "name": "QDPHP" } @@ -26675,7 +26972,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 34, + "index": 35, "toolComponent": { "name": "QDPHP" } @@ -26741,7 +27038,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -26774,7 +27071,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -26807,7 +27104,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -26840,7 +27137,7 @@ { "target": { "id": "JavaScript and TypeScript/Bitwise operation issues", - "index": 30, + "index": 32, "toolComponent": { "name": "QDPHP" } @@ -26852,28 +27149,28 @@ ] }, { - "id": "ES6PossiblyAsyncFunction", + "id": "TextLabelInSwitchStatementJS", "shortDescription": { - "text": "'await' in non-async function" + "text": "Text label in 'switch' statement" }, "fullDescription": { - "text": "Reports a usage of 'await' in a function that was possibly intended to be async but is actually missing the 'async' modifier. Although 'await' can be used as an identifier, it is likely that it was intended to be used as an operator, so the containing function should be made 'async'.", - "markdown": "Reports a usage of `await` in a function that was possibly intended to be async but is actually missing the `async` modifier. Although `await` can be used as an identifier, it is likely that it was intended to be used as an operator, so the containing function should be made `async`." + "text": "Reports a labeled statement inside a 'switch' statement, which often results from a typo. Example: 'switch(x)\n {\n case 1:\n case2: //typo!\n case 3:\n break;\n }'", + "markdown": "Reports a labeled statement inside a `switch` statement, which often results from a typo.\n\nExample:\n\n\n switch(x)\n {\n case 1:\n case2: //typo!\n case 3:\n break;\n }\n" }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "suppressToolId": "ES6PossiblyAsyncFunction", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "TextLabelInSwitchStatementJS", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Async code and promises", - "index": 76, + "id": "JavaScript and TypeScript/Switch statement issues", + "index": 73, "toolComponent": { "name": "QDPHP" } @@ -26885,28 +27182,28 @@ ] }, { - "id": "TextLabelInSwitchStatementJS", + "id": "ES6PossiblyAsyncFunction", "shortDescription": { - "text": "Text label in 'switch' statement" + "text": "'await' in non-async function" }, "fullDescription": { - "text": "Reports a labeled statement inside a 'switch' statement, which often results from a typo. Example: 'switch(x)\n {\n case 1:\n case2: //typo!\n case 3:\n break;\n }'", - "markdown": "Reports a labeled statement inside a `switch` statement, which often results from a typo.\n\nExample:\n\n\n switch(x)\n {\n case 1:\n case2: //typo!\n case 3:\n break;\n }\n" + "text": "Reports a usage of 'await' in a function that was possibly intended to be async but is actually missing the 'async' modifier. Although 'await' can be used as an identifier, it is likely that it was intended to be used as an operator, so the containing function should be made 'async'.", + "markdown": "Reports a usage of `await` in a function that was possibly intended to be async but is actually missing the `async` modifier. Although `await` can be used as an identifier, it is likely that it was intended to be used as an operator, so the containing function should be made `async`." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "suppressToolId": "TextLabelInSwitchStatementJS", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "ES6PossiblyAsyncFunction", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Switch statement issues", - "index": 73, + "id": "JavaScript and TypeScript/Async code and promises", + "index": 76, "toolComponent": { "name": "QDPHP" } @@ -26939,7 +27236,7 @@ { "target": { "id": "JavaScript and TypeScript/Flow type checker", - "index": 23, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -26972,7 +27269,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -27005,7 +27302,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 39, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -27038,7 +27335,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -27071,7 +27368,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -27170,7 +27467,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -27203,7 +27500,7 @@ { "target": { "id": "JavaScript and TypeScript/Bitwise operation issues", - "index": 30, + "index": 32, "toolComponent": { "name": "QDPHP" } @@ -27236,7 +27533,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 34, + "index": 35, "toolComponent": { "name": "QDPHP" } @@ -27269,7 +27566,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 66, + "index": 67, "toolComponent": { "name": "QDPHP" } @@ -27302,7 +27599,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -27335,7 +27632,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 39, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -27368,7 +27665,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 46, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -27401,7 +27698,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -27434,7 +27731,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 39, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -27467,7 +27764,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -27500,7 +27797,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -27533,7 +27830,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -27566,7 +27863,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -27599,7 +27896,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -27665,7 +27962,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -27698,7 +27995,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -27731,7 +28028,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -27764,7 +28061,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -27830,7 +28127,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -27863,7 +28160,7 @@ { "target": { "id": "JavaScript and TypeScript/Flow type checker", - "index": 23, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -27929,7 +28226,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 66, + "index": 67, "toolComponent": { "name": "QDPHP" } @@ -27995,7 +28292,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -28028,7 +28325,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 46, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -28061,7 +28358,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -28094,7 +28391,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -28127,7 +28424,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -28160,7 +28457,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -28193,7 +28490,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 93, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -28259,7 +28556,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 93, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -28292,7 +28589,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 65, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -28325,7 +28622,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -28358,7 +28655,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -28391,7 +28688,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 39, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -28424,7 +28721,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -28457,7 +28754,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -28490,7 +28787,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -28523,7 +28820,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -28556,7 +28853,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -28589,7 +28886,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -28622,7 +28919,7 @@ { "target": { "id": "JavaScript and TypeScript/Bitwise operation issues", - "index": 30, + "index": 32, "toolComponent": { "name": "QDPHP" } @@ -28655,7 +28952,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -28688,7 +28985,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 65, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -28700,19 +28997,19 @@ ] }, { - "id": "PlatformDetectionJS", + "id": "IfStatementWithIdenticalBranchesJS", "shortDescription": { - "text": "Inaccurate platform detection" + "text": "'if' statement with identical branches" }, "fullDescription": { - "text": "Reports a common JavaScript pattern for detecting the browser or operating system in which the script is run. In addition to pointing out non-portable constructs, these platform detection patterns are often incomplete and easily fooled. For most cases, detection of individual environment features is preferable to attempting to detect the entire platform. Patterns detected include: 'document.all' 'document.layers' 'navigator.userAgent' 'navigator.oscpu' 'navigator.appName' 'navigator.appCodeName' 'navigator.platform'", - "markdown": "Reports a common JavaScript pattern for detecting the browser or operating system in which the script is run. In addition to pointing out non-portable constructs, these platform detection patterns are often incomplete and easily fooled. For most cases, detection of individual environment features is preferable to attempting to detect the entire platform.\n\nPatterns detected include:\n\n* `document.all`\n* `document.layers`\n* `navigator.userAgent`\n* `navigator.oscpu`\n* `navigator.appName`\n* `navigator.appCodeName`\n* `navigator.platform`" + "text": "Reports an 'if' statement with identical 'then' and 'else' branches. Such statements are almost certainly an error.", + "markdown": "Reports an `if` statement with identical `then` and `else` branches. Such statements are almost certainly an error." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "PlatformDetectionJS", + "suppressToolId": "IfStatementWithIdenticalBranchesJS", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -28720,8 +29017,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/DOM issues", - "index": 75, + "id": "JavaScript and TypeScript/Control flow issues", + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -28733,19 +29030,19 @@ ] }, { - "id": "IfStatementWithIdenticalBranchesJS", + "id": "PlatformDetectionJS", "shortDescription": { - "text": "'if' statement with identical branches" + "text": "Inaccurate platform detection" }, "fullDescription": { - "text": "Reports an 'if' statement with identical 'then' and 'else' branches. Such statements are almost certainly an error.", - "markdown": "Reports an `if` statement with identical `then` and `else` branches. Such statements are almost certainly an error." + "text": "Reports a common JavaScript pattern for detecting the browser or operating system in which the script is run. In addition to pointing out non-portable constructs, these platform detection patterns are often incomplete and easily fooled. For most cases, detection of individual environment features is preferable to attempting to detect the entire platform. Patterns detected include: 'document.all' 'document.layers' 'navigator.userAgent' 'navigator.oscpu' 'navigator.appName' 'navigator.appCodeName' 'navigator.platform'", + "markdown": "Reports a common JavaScript pattern for detecting the browser or operating system in which the script is run. In addition to pointing out non-portable constructs, these platform detection patterns are often incomplete and easily fooled. For most cases, detection of individual environment features is preferable to attempting to detect the entire platform.\n\nPatterns detected include:\n\n* `document.all`\n* `document.layers`\n* `navigator.userAgent`\n* `navigator.oscpu`\n* `navigator.appName`\n* `navigator.appCodeName`\n* `navigator.platform`" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "IfStatementWithIdenticalBranchesJS", + "suppressToolId": "PlatformDetectionJS", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -28753,8 +29050,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "id": "JavaScript and TypeScript/DOM issues", + "index": 75, "toolComponent": { "name": "QDPHP" } @@ -28787,7 +29084,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -28832,19 +29129,19 @@ ] }, { - "id": "TrivialConditionalJS", + "id": "TypeScriptDuplicateUnionOrIntersectionType", "shortDescription": { - "text": "Redundant conditional expression" + "text": "Duplicate union or intersection type component" }, "fullDescription": { - "text": "Reports a conditional expression of the form 'condition ? true : false\ncondition ? false : true' These expressions may be safely converted to 'condition\n!condition'", - "markdown": "Reports a conditional expression of the form\n\n\n condition ? true : false\n condition ? false : true\n\n\nThese expressions may be safely converted to\n\n\n condition\n !condition\n" + "text": "Reports a duplicate type inside a union or intersection.", + "markdown": "Reports a duplicate type inside a union or intersection." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "RedundantConditionalExpressionJS", + "suppressToolId": "TypeScriptDuplicateUnionOrIntersectionType", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -28852,8 +29149,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "id": "JavaScript and TypeScript/TypeScript", + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -28865,19 +29162,19 @@ ] }, { - "id": "TypeScriptDuplicateUnionOrIntersectionType", + "id": "TrivialConditionalJS", "shortDescription": { - "text": "Duplicate union or intersection type component" + "text": "Redundant conditional expression" }, "fullDescription": { - "text": "Reports a duplicate type inside a union or intersection.", - "markdown": "Reports a duplicate type inside a union or intersection." + "text": "Reports a conditional expression of the form 'condition ? true : false\ncondition ? false : true' These expressions may be safely converted to 'condition\n!condition'", + "markdown": "Reports a conditional expression of the form\n\n\n condition ? true : false\n condition ? false : true\n\n\nThese expressions may be safely converted to\n\n\n condition\n !condition\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "TypeScriptDuplicateUnionOrIntersectionType", + "suppressToolId": "RedundantConditionalExpressionJS", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -28885,8 +29182,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "id": "JavaScript and TypeScript/Control flow issues", + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -28985,7 +29282,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -29018,7 +29315,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 66, + "index": 67, "toolComponent": { "name": "QDPHP" } @@ -29051,7 +29348,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -29084,7 +29381,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -29117,7 +29414,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 46, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -29150,7 +29447,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -29183,7 +29480,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -29249,7 +29546,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -29261,19 +29558,19 @@ ] }, { - "id": "IfStatementWithTooManyBranchesJS", + "id": "NonBlockStatementBodyJS", "shortDescription": { - "text": "'if' statement with too many branches" + "text": "Statement body without braces" }, "fullDescription": { - "text": "Reports an 'if' statement with too many branches. Such statements may be confusing, and often indicate inadequate levels of design abstraction. Use the field below to specify the maximum number of branches expected.", - "markdown": "Reports an `if` statement with too many branches. Such statements may be confusing, and often indicate inadequate levels of design abstraction.\n\n\nUse the field below to specify the maximum number of branches expected." + "text": "Reports a 'if', 'while', 'for', or 'with' statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance.", + "markdown": "Reports a `if`, `while`, `for`, or `with` statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "IfStatementWithTooManyBranchesJS", + "suppressToolId": "NonBlockStatementBodyJS", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -29281,8 +29578,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "id": "JavaScript and TypeScript/Code style issues", + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -29294,19 +29591,19 @@ ] }, { - "id": "NonBlockStatementBodyJS", + "id": "IfStatementWithTooManyBranchesJS", "shortDescription": { - "text": "Statement body without braces" + "text": "'if' statement with too many branches" }, "fullDescription": { - "text": "Reports a 'if', 'while', 'for', or 'with' statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance.", - "markdown": "Reports a `if`, `while`, `for`, or `with` statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance." + "text": "Reports an 'if' statement with too many branches. Such statements may be confusing, and often indicate inadequate levels of design abstraction. Use the field below to specify the maximum number of branches expected.", + "markdown": "Reports an `if` statement with too many branches. Such statements may be confusing, and often indicate inadequate levels of design abstraction.\n\n\nUse the field below to specify the maximum number of branches expected." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "NonBlockStatementBodyJS", + "suppressToolId": "IfStatementWithTooManyBranchesJS", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -29314,8 +29611,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Code style issues", - "index": 65, + "id": "JavaScript and TypeScript/Control flow issues", + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -29348,7 +29645,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -29381,7 +29678,7 @@ { "target": { "id": "JavaScript and TypeScript/Flow type checker", - "index": 23, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -29414,7 +29711,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -29447,7 +29744,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -29480,7 +29777,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -29513,7 +29810,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -29546,7 +29843,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -29579,7 +29876,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 93, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -29612,7 +29909,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 65, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -29645,7 +29942,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -29657,19 +29954,19 @@ ] }, { - "id": "JSObjectNullOrUndefined", + "id": "TypeScriptMissingConfigOption", "shortDescription": { - "text": "Object is 'null' or 'undefined'" + "text": "Missing tsconfig.json option " }, "fullDescription": { - "text": "Reports an error caused by invoking a method, accessing a property, or calling a function on an object that is 'undefined' or 'null'.", - "markdown": "Reports an error caused by invoking a method, accessing a property, or calling a function on an object that is `undefined` or `null`." + "text": "Reports a usage that requires an explicit option in 'tsconfig.json'. For example, to use JSX in '.tsx' files, 'tsconfig.json' must contain '\"jsx\"' property.", + "markdown": "Reports a usage that requires an explicit option in `tsconfig.json`. For example, to use JSX in `.tsx` files, `tsconfig.json` must contain `\"jsx\"` property." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "JSObjectNullOrUndefined", + "suppressToolId": "TypeScriptMissingConfigOption", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -29677,8 +29974,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "id": "JavaScript and TypeScript/TypeScript", + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -29690,19 +29987,19 @@ ] }, { - "id": "TypeScriptMissingConfigOption", + "id": "JSObjectNullOrUndefined", "shortDescription": { - "text": "Missing tsconfig.json option " + "text": "Object is 'null' or 'undefined'" }, "fullDescription": { - "text": "Reports a usage that requires an explicit option in 'tsconfig.json'. For example, to use JSX in '.tsx' files, 'tsconfig.json' must contain '\"jsx\"' property.", - "markdown": "Reports a usage that requires an explicit option in `tsconfig.json`. For example, to use JSX in `.tsx` files, `tsconfig.json` must contain `\"jsx\"` property." + "text": "Reports an error caused by invoking a method, accessing a property, or calling a function on an object that is 'undefined' or 'null'.", + "markdown": "Reports an error caused by invoking a method, accessing a property, or calling a function on an object that is `undefined` or `null`." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "TypeScriptMissingConfigOption", + "suppressToolId": "JSObjectNullOrUndefined", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -29710,8 +30007,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "id": "JavaScript and TypeScript/Control flow issues", + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -29744,7 +30041,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -29777,7 +30074,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 66, + "index": 67, "toolComponent": { "name": "QDPHP" } @@ -29810,7 +30107,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -29843,7 +30140,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -29909,7 +30206,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -29942,7 +30239,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -29975,7 +30272,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 34, + "index": 35, "toolComponent": { "name": "QDPHP" } @@ -30008,7 +30305,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -30041,7 +30338,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -30074,7 +30371,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 34, + "index": 35, "toolComponent": { "name": "QDPHP" } @@ -30107,7 +30404,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -30140,7 +30437,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -30173,7 +30470,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -30239,7 +30536,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -30272,7 +30569,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -30305,7 +30602,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -30338,7 +30635,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 93, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -30371,7 +30668,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -30404,7 +30701,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 46, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -30470,7 +30767,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -30503,7 +30800,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 39, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -30536,7 +30833,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -30602,7 +30899,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -30635,7 +30932,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -30668,7 +30965,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -30701,7 +30998,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -30734,7 +31031,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -30767,7 +31064,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 46, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -30866,7 +31163,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -30899,7 +31196,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 46, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -30932,7 +31229,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 46, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -30965,7 +31262,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 93, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -31031,7 +31328,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -31064,7 +31361,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -31097,7 +31394,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -31130,7 +31427,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 65, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -31229,7 +31526,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -31262,7 +31559,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -31295,7 +31592,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -31328,7 +31625,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -31361,7 +31658,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -31373,28 +31670,28 @@ ] }, { - "id": "JSAnnotator", + "id": "JSIncompatibleTypesComparison", "shortDescription": { - "text": "ECMAScript specification is not followed" + "text": "Comparison of expressions having incompatible types" }, "fullDescription": { - "text": "Reports basic syntax issues and inconsistencies with language specification, such as invalid usages of keywords, usages of incompatible numeric format, or multiple parameters to getters/setters. Generally, such errors must always be reported and shouldn't be disabled. But in some cases, such as issues due to the dynamic nature of JavaScript, the use of not yet supported language features, or bugs in IDE's checker, it may be handy to disable reporting these very basic errors.", - "markdown": "Reports basic syntax issues and inconsistencies with language specification, such as invalid usages of keywords, usages of incompatible numeric format, or multiple parameters to getters/setters. \nGenerally, such errors must always be reported and shouldn't be disabled. But in some cases, such as issues due to the dynamic nature of JavaScript, the use of not yet supported language features, or bugs in IDE's checker, it may be handy to disable reporting these very basic errors." + "text": "Reports a comparison with operands of incompatible types or an operand with a type without possible common values.", + "markdown": "Reports a comparison with operands of incompatible types or an operand with a type without possible common values." }, "defaultConfiguration": { "enabled": false, - "level": "error", + "level": "note", "parameters": { - "suppressToolId": "JSAnnotator", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "JSIncompatibleTypesComparison", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/General", - "index": 32, + "id": "JavaScript and TypeScript/Probable bugs", + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -31406,28 +31703,28 @@ ] }, { - "id": "JSIncompatibleTypesComparison", + "id": "JSAnnotator", "shortDescription": { - "text": "Comparison of expressions having incompatible types" + "text": "ECMAScript specification is not followed" }, "fullDescription": { - "text": "Reports a comparison with operands of incompatible types or an operand with a type without possible common values.", - "markdown": "Reports a comparison with operands of incompatible types or an operand with a type without possible common values." + "text": "Reports basic syntax issues and inconsistencies with language specification, such as invalid usages of keywords, usages of incompatible numeric format, or multiple parameters to getters/setters. Generally, such errors must always be reported and shouldn't be disabled. But in some cases, such as issues due to the dynamic nature of JavaScript, the use of not yet supported language features, or bugs in IDE's checker, it may be handy to disable reporting these very basic errors.", + "markdown": "Reports basic syntax issues and inconsistencies with language specification, such as invalid usages of keywords, usages of incompatible numeric format, or multiple parameters to getters/setters. \nGenerally, such errors must always be reported and shouldn't be disabled. But in some cases, such as issues due to the dynamic nature of JavaScript, the use of not yet supported language features, or bugs in IDE's checker, it may be handy to disable reporting these very basic errors." }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "error", "parameters": { - "suppressToolId": "JSIncompatibleTypesComparison", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "JSAnnotator", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "id": "JavaScript and TypeScript/General", + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -31460,7 +31757,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 34, + "index": 35, "toolComponent": { "name": "QDPHP" } @@ -31526,7 +31823,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 34, + "index": 35, "toolComponent": { "name": "QDPHP" } @@ -31592,7 +31889,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 65, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -31625,7 +31922,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 93, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -31658,7 +31955,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 39, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -31691,7 +31988,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -31790,7 +32087,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -31823,7 +32120,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -31856,7 +32153,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -31889,7 +32186,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 93, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -31922,7 +32219,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -31955,7 +32252,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 65, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -31988,7 +32285,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 65, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -32021,7 +32318,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -32033,28 +32330,28 @@ ] }, { - "id": "JSCheckFunctionSignatures", + "id": "ConstantOnLHSOfComparisonJS", "shortDescription": { - "text": "Signature mismatch" + "text": "Constant on left side of comparison" }, "fullDescription": { - "text": "Reports a JavaScript call expression where the arguments do not match the signature of the referenced function, including the types of arguments and their number. Also, reports if the overloading function doesn't match the overloaded one in terms of parameters and return types. TypeScript code is ignored.", - "markdown": "Reports a JavaScript call expression where the arguments do not match the signature of the referenced function, including the types of arguments and their number. Also, reports if the overloading function doesn't match the overloaded one in terms of parameters and return types.\n\nTypeScript code is ignored." + "text": "Reports a comparison operation with a constant value in the left-hand side. According to coding conventions, constants should be in the right-hand side of comparisons.", + "markdown": "Reports a comparison operation with a constant value in the left-hand side. According to coding conventions, constants should be in the right-hand side of comparisons." }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "suppressToolId": "JSCheckFunctionSignatures", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "ConstantOnLefSideOfComparisonJS", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/General", - "index": 32, + "id": "JavaScript and TypeScript/Code style issues", + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -32066,28 +32363,28 @@ ] }, { - "id": "ConstantOnLHSOfComparisonJS", + "id": "JSCheckFunctionSignatures", "shortDescription": { - "text": "Constant on left side of comparison" + "text": "Signature mismatch" }, "fullDescription": { - "text": "Reports a comparison operation with a constant value in the left-hand side. According to coding conventions, constants should be in the right-hand side of comparisons.", - "markdown": "Reports a comparison operation with a constant value in the left-hand side. According to coding conventions, constants should be in the right-hand side of comparisons." + "text": "Reports a JavaScript call expression where the arguments do not match the signature of the referenced function, including the types of arguments and their number. Also, reports if the overloading function doesn't match the overloaded one in terms of parameters and return types. TypeScript code is ignored.", + "markdown": "Reports a JavaScript call expression where the arguments do not match the signature of the referenced function, including the types of arguments and their number. Also, reports if the overloading function doesn't match the overloaded one in terms of parameters and return types.\n\nTypeScript code is ignored." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "suppressToolId": "ConstantOnLefSideOfComparisonJS", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "JSCheckFunctionSignatures", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Code style issues", - "index": 65, + "id": "JavaScript and TypeScript/General", + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -32120,7 +32417,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 66, + "index": 67, "toolComponent": { "name": "QDPHP" } @@ -32153,7 +32450,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 65, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -32186,7 +32483,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -32219,7 +32516,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -32252,7 +32549,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -32351,7 +32648,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 66, + "index": 67, "toolComponent": { "name": "QDPHP" } @@ -32417,7 +32714,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -32450,7 +32747,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 71, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -32582,7 +32879,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -32615,7 +32912,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 51, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -32648,7 +32945,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -32681,7 +32978,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 41, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -32714,7 +33011,7 @@ { "target": { "id": "JavaScript and TypeScript/Unused symbols", - "index": 21, + "index": 23, "toolComponent": { "name": "QDPHP" } @@ -32759,7 +33056,7 @@ { "target": { "id": "Cucumber", - "index": 22, + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -32792,7 +33089,7 @@ { "target": { "id": "Cucumber", - "index": 22, + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -32825,7 +33122,7 @@ { "target": { "id": "Cucumber", - "index": 22, + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -32858,7 +33155,7 @@ { "target": { "id": "Cucumber", - "index": 22, + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -32891,7 +33188,7 @@ { "target": { "id": "Cucumber", - "index": 22, + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -32924,7 +33221,7 @@ { "target": { "id": "Cucumber", - "index": 22, + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -32957,7 +33254,7 @@ { "target": { "id": "Cucumber", - "index": 22, + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -33002,7 +33299,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33035,7 +33332,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33068,7 +33365,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33101,7 +33398,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33134,7 +33431,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33167,7 +33464,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33200,7 +33497,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33233,7 +33530,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33266,7 +33563,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33299,7 +33596,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33332,7 +33629,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33365,7 +33662,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33398,7 +33695,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33431,7 +33728,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33464,7 +33761,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33497,7 +33794,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33530,7 +33827,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33563,7 +33860,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33596,7 +33893,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33629,7 +33926,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33662,7 +33959,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33695,7 +33992,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33728,7 +34025,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33761,7 +34058,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33794,7 +34091,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33827,7 +34124,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33860,7 +34157,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33893,7 +34190,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33926,7 +34223,7 @@ { "target": { "id": "EditorConfig", - "index": 26, + "index": 28, "toolComponent": { "name": "QDPHP" } @@ -33971,7 +34268,7 @@ { "target": { "id": "PostCSS", - "index": 29, + "index": 31, "toolComponent": { "name": "QDPHP" } @@ -34004,7 +34301,7 @@ { "target": { "id": "PostCSS", - "index": 29, + "index": 31, "toolComponent": { "name": "QDPHP" } @@ -34037,7 +34334,7 @@ { "target": { "id": "PostCSS", - "index": 29, + "index": 31, "toolComponent": { "name": "QDPHP" } @@ -34070,7 +34367,7 @@ { "target": { "id": "PostCSS", - "index": 29, + "index": 31, "toolComponent": { "name": "QDPHP" } @@ -34103,7 +34400,7 @@ { "target": { "id": "PostCSS", - "index": 29, + "index": 31, "toolComponent": { "name": "QDPHP" } @@ -34148,7 +34445,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 37, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -34181,7 +34478,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -34214,7 +34511,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -34247,7 +34544,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 37, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -34280,7 +34577,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -34313,7 +34610,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 37, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -34346,7 +34643,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 37, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -34379,7 +34676,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 37, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -34412,7 +34709,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 37, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -34445,7 +34742,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -34478,7 +34775,7 @@ { "target": { "id": "HTML", - "index": 20, + "index": 22, "toolComponent": { "name": "QDPHP" } @@ -34523,7 +34820,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -34556,7 +34853,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -34589,7 +34886,7 @@ { "target": { "id": "CSS/Code style issues", - "index": 54, + "index": 56, "toolComponent": { "name": "QDPHP" } @@ -34622,7 +34919,7 @@ { "target": { "id": "CSS/Probable bugs", - "index": 70, + "index": 71, "toolComponent": { "name": "QDPHP" } @@ -34655,7 +34952,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -34688,7 +34985,7 @@ { "target": { "id": "CSS", - "index": 42, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -34721,7 +35018,7 @@ { "target": { "id": "CSS", - "index": 42, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -34754,7 +35051,7 @@ { "target": { "id": "CSS", - "index": 42, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -34787,7 +35084,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -34820,7 +35117,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -34853,7 +35150,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -34886,7 +35183,7 @@ { "target": { "id": "CSS/Probable bugs", - "index": 70, + "index": 71, "toolComponent": { "name": "QDPHP" } @@ -34919,7 +35216,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -34952,7 +35249,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -34985,7 +35282,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -35018,7 +35315,7 @@ { "target": { "id": "CSS/Code style issues", - "index": 54, + "index": 56, "toolComponent": { "name": "QDPHP" } @@ -35051,7 +35348,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -35084,7 +35381,7 @@ { "target": { "id": "CSS", - "index": 42, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -35117,7 +35414,7 @@ { "target": { "id": "CSS", - "index": 42, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -35150,7 +35447,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -35183,7 +35480,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -35216,7 +35513,7 @@ { "target": { "id": "CSS", - "index": 42, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -35249,7 +35546,7 @@ { "target": { "id": "CSS/Probable bugs", - "index": 70, + "index": 71, "toolComponent": { "name": "QDPHP" } @@ -35282,7 +35579,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -35315,7 +35612,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -35348,7 +35645,7 @@ { "target": { "id": "CSS", - "index": 42, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -35381,7 +35678,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -35414,7 +35711,7 @@ { "target": { "id": "CSS", - "index": 42, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -35447,7 +35744,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -35480,7 +35777,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 43, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -35525,7 +35822,7 @@ { "target": { "id": "YAML", - "index": 47, + "index": 49, "toolComponent": { "name": "QDPHP" } @@ -35558,7 +35855,7 @@ { "target": { "id": "YAML", - "index": 47, + "index": 49, "toolComponent": { "name": "QDPHP" } @@ -35591,7 +35888,7 @@ { "target": { "id": "YAML", - "index": 47, + "index": 49, "toolComponent": { "name": "QDPHP" } @@ -35624,7 +35921,7 @@ { "target": { "id": "YAML", - "index": 47, + "index": 49, "toolComponent": { "name": "QDPHP" } @@ -35657,7 +35954,7 @@ { "target": { "id": "YAML", - "index": 47, + "index": 49, "toolComponent": { "name": "QDPHP" } @@ -35690,7 +35987,7 @@ { "target": { "id": "YAML", - "index": 47, + "index": 49, "toolComponent": { "name": "QDPHP" } @@ -35723,7 +36020,7 @@ { "target": { "id": "YAML", - "index": 47, + "index": 49, "toolComponent": { "name": "QDPHP" } @@ -35768,7 +36065,7 @@ { "target": { "id": "HTTP Client", - "index": 49, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -35801,7 +36098,7 @@ { "target": { "id": "HTTP Client", - "index": 49, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -35834,7 +36131,7 @@ { "target": { "id": "HTTP Client", - "index": 49, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -35867,7 +36164,7 @@ { "target": { "id": "HTTP Client", - "index": 49, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -35933,7 +36230,7 @@ { "target": { "id": "HTTP Client", - "index": 49, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -35966,7 +36263,7 @@ { "target": { "id": "HTTP Client", - "index": 49, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -35999,7 +36296,7 @@ { "target": { "id": "HTTP Client", - "index": 49, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -36032,7 +36329,7 @@ { "target": { "id": "HTTP Client", - "index": 49, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -36065,7 +36362,7 @@ { "target": { "id": "HTTP Client", - "index": 49, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -36098,7 +36395,7 @@ { "target": { "id": "HTTP Client", - "index": 49, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -36131,7 +36428,7 @@ { "target": { "id": "HTTP Client", - "index": 49, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -36176,7 +36473,7 @@ { "target": { "id": "Less", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -36209,7 +36506,7 @@ { "target": { "id": "Less", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -36242,7 +36539,7 @@ { "target": { "id": "Less", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -36287,7 +36584,7 @@ { "target": { "id": "XSLT", - "index": 61, + "index": 63, "toolComponent": { "name": "QDPHP" } @@ -36419,7 +36716,7 @@ { "target": { "id": "XSLT", - "index": 61, + "index": 63, "toolComponent": { "name": "QDPHP" } @@ -36452,7 +36749,7 @@ { "target": { "id": "XSLT", - "index": 61, + "index": 63, "toolComponent": { "name": "QDPHP" } @@ -36518,7 +36815,7 @@ { "target": { "id": "XSLT", - "index": 61, + "index": 63, "toolComponent": { "name": "QDPHP" } @@ -36596,7 +36893,7 @@ { "target": { "id": "PHP/Annotation", - "index": 62, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -36629,7 +36926,7 @@ { "target": { "id": "PHP/Annotation", - "index": 62, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -36662,7 +36959,7 @@ { "target": { "id": "PHP/Annotation", - "index": 62, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -36695,7 +36992,7 @@ { "target": { "id": "PHP/Annotation", - "index": 62, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -36728,7 +37025,7 @@ { "target": { "id": "PHP/Annotation", - "index": 62, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -36761,7 +37058,7 @@ { "target": { "id": "PHP/Annotation", - "index": 62, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -36806,7 +37103,7 @@ { "target": { "id": "Joomla!", - "index": 67, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -36839,7 +37136,7 @@ { "target": { "id": "Joomla!", - "index": 67, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -37214,7 +37511,7 @@ "markdown": "Reports issues essential to this file like syntax errors, unresolved methods and variables, etc..." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "error", "parameters": { "suppressToolId": "QodanaSanity", @@ -37427,7 +37724,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 92, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -37706,7 +38003,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 33, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -38072,7 +38369,7 @@ { "target": { "id": "General", - "index": 36, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -38117,7 +38414,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 92, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -38162,7 +38459,7 @@ { "target": { "id": "JavaScript and TypeScript/General", - "index": 32, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -38185,9 +38482,9 @@ }, "invocations": [ { - "startTimeUtc": "2024-04-25T14:59:57.743136222Z", + "startTimeUtc": "2024-05-02T07:44:04.334542795Z", "exitCode": 255, - "exitCodeDescription": "Failure condition triggered:\n- Detected 14 problems across all severities, fail threshold: 0", + "exitCodeDescription": "Failure condition triggered:\n- Detected 5 problems across all severities, fail threshold: 0", "executionSuccessful": true } ], @@ -38195,13 +38492,13 @@ "versionControlProvenance": [ { "repositoryUri": "https://github.com/pimcore/studio-backend-bundle.git", - "revisionId": "831e40a49ac1106010e12d0ad6677e454a9e8f64", - "branch": "0.x", + "revisionId": "a31d309c8e4d6cb14a215e6575391d3904e68b59", + "branch": "154-versions", "properties": { "repoUrl": "https://github.com/pimcore/studio-backend-bundle.git", - "lastAuthorName": "mattamon", + "lastAuthorName": "lukmzig", "vcsType": "Git", - "lastAuthorEmail": "matthias.schuhmayer@pimcore.com" + "lastAuthorEmail": "lukas.mzigot@pimcore.com" } } ], @@ -38424,7 +38721,7 @@ "equalIndicator/v2": "1a48abf43e131b3c", "equalIndicator/v1": "d332e327ffffb913d03b5c1b123366ccfb39379be3645fdac1a4e16298cddeb5" }, - "baselineState": "new", + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -38481,121 +38778,7 @@ "equalIndicator/v2": "2628b827dadbc43e", "equalIndicator/v1": "4eff5b6887106f38106f3d5e26c162bd2a02157f1c71659dc533c9ec4a13c41c" }, - "baselineState": "new", - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "EfferentObjectCouplingInspection", - "kind": "fail", - "level": "note", - "message": { - "text": "[EA] High efferent coupling (29).", - "markdown": "\\[EA\\] High efferent coupling (29)." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Asset/Controller/CollectionController.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 52, - "startColumn": 13, - "charOffset": 2928, - "charLength": 20, - "snippet": { - "text": "CollectionController" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 50, - "startColumn": 1, - "charOffset": 2899, - "charLength": 113, - "snippet": { - "text": " * @internal\n */\nfinal class CollectionController extends AbstractApiController\n{\n use PaginatedResponseTrait;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v2": "13bc9cc0d9bd7824", - "equalIndicator/v1": "5ec02bc941be058babf5f731b39a5d02afb1720866aa04d196c6fd4dcc8f2f4e" - }, - "baselineState": "new", - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "EfferentObjectCouplingInspection", - "kind": "fail", - "level": "note", - "message": { - "text": "[EA] High efferent coupling (21).", - "markdown": "\\[EA\\] High efferent coupling (21)." - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Authorization/Controller/AuthorizationController.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 44, - "startColumn": 13, - "charOffset": 2041, - "charLength": 23, - "snippet": { - "text": "AuthorizationController" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 42, - "startColumn": 1, - "charOffset": 2012, - "charLength": 117, - "snippet": { - "text": " * @internal\n */\nfinal class AuthorizationController extends AbstractApiController\n{\n public function __construct(" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v2": "136582196c59be73", - "equalIndicator/v1": "ba200d2cbca7fb363ab73d986033cbecc7fe9522bfc558677c19c17fd84f4c99" - }, - "baselineState": "new", + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -38652,7 +38835,7 @@ "equalIndicator/v2": "c8e54b4ae449ef08", "equalIndicator/v1": "08a9dc4e9b115719de1aeaed732b08c3844bfa0d83ec7ce65f3d70a6998a7355" }, - "baselineState": "new", + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -38766,7 +38949,7 @@ "equalIndicator/v2": "669bc6ac0069bd19", "equalIndicator/v1": "43a80b488985c32dafac3a484c67f89e44977e35238a60da91129ee894458006" }, - "baselineState": "new", + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -38880,7 +39063,7 @@ "equalIndicator/v2": "77d6ecc501de5c0c", "equalIndicator/v1": "64afe4fba632fd3636d6943e45b1124b60c35b33bcbcbb3be68e9ad0e99134a3" }, - "baselineState": "new", + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -38937,7 +39120,7 @@ "equalIndicator/v2": "ccd5d96bc68b7e1a", "equalIndicator/v1": "70cb41f7fe78e21c7d9dc60728b83fd4fe5e2d7eece4ba89f9a57f4d07018b1c" }, - "baselineState": "new", + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -38994,7 +39177,7 @@ "equalIndicator/v2": "b4c6aa1929d1bf97", "equalIndicator/v1": "7e7fad67b721599df9b4a59f1faf5ae55576773c810fe1f0b11211a03ffdc9fb" }, - "baselineState": "new", + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -39076,22 +39259,307 @@ "uriBaseId": "SRCROOT" }, "region": { - "startLine": 54, + "startLine": 54, + "startColumn": 11, + "charOffset": 1908, + "charLength": 81, + "snippet": { + "text": "Property(description: 'Full path', type: 'string', example: '/path/to/asset.jpg')" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 52, + "startColumn": 1, + "charOffset": 1752, + "charLength": 298, + "snippet": { + "text": " #[Property(description: 'Workflow permissions', type: 'bool', example: false)]\n private readonly bool $hasWorkflowWithPermissions,\n #[Property(description: 'Full path', type: 'string', example: '/path/to/asset.jpg')]\n private readonly string $fullPath,\n int $id," + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "0b4f2b468ad5fa55", + "equalIndicator/v1": "8589169c7dc68ddd3a3ff4ca9c715b43f668e1a9f3d177dae4138d9370b0e4a8" + }, + "baselineState": "unchanged", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Response/Element.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 44, + "startColumn": 11, + "charOffset": 1610, + "charLength": 75, + "snippet": { + "text": "Property(description: 'Creation date', type: 'integer', example: 221846400)" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 42, + "startColumn": 1, + "charOffset": 1480, + "charLength": 342, + "snippet": { + "text": " #[Property(description: 'Is locked', type: 'boolean', example: false)]\n private readonly bool $isLocked,\n #[Property(description: 'Creation date', type: 'integer', example: 221846400)]\n private readonly ?int $creationDate,\n #[Property(description: 'Modification date', type: 'integer', example: 327417600)]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "80bfcd5e195caddf", + "equalIndicator/v1": "a202732b45abe1c94d18ae6ea5f71ddbbfd1fb71649fbfcec1ec249f16766178" + }, + "baselineState": "unchanged", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Response/Element.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 42, + "startColumn": 11, + "charOffset": 1490, + "charLength": 67, + "snippet": { + "text": "Property(description: 'Is locked', type: 'boolean', example: false)" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 40, + "startColumn": 1, + "charOffset": 1360, + "charLength": 326, + "snippet": { + "text": " #[Property(description: 'Locked', type: 'string', example: 'locked')]\n private readonly ?string $locked,\n #[Property(description: 'Is locked', type: 'boolean', example: false)]\n private readonly bool $isLocked,\n #[Property(description: 'Creation date', type: 'integer', example: 221846400)]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "2fec47e9fbf8e257", + "equalIndicator/v1": "b8d74bf3622ae06c9cab86005a1ab064dc1fea4c53635f2556e00d81b9cddd88" + }, + "baselineState": "unchanged", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Request/CollectionParameters.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 30, + "startColumn": 11, + "charOffset": 834, + "charLength": 8, + "snippet": { + "text": "Positive" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 28, + "startColumn": 1, + "charOffset": 771, + "charLength": 123, + "snippet": { + "text": " public function __construct(\n #[NotBlank]\n #[Positive]\n private int $page = 1,\n #[NotBlank]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "63721e6ae2ff09e4", + "equalIndicator/v1": "cc182978cf2b938bd3cf51d25b8852bdcaefc64d83197c7c517a569e1bed1d79" + }, + "baselineState": "unchanged", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Response/Element.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 36, + "startColumn": 11, + "charOffset": 1108, + "charLength": 65, + "snippet": { + "text": "Property(description: 'ID of owner', type: 'integer', example: 1)" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 34, + "startColumn": 1, + "charOffset": 973, + "charLength": 338, + "snippet": { + "text": " #[Property(description: 'path', type: 'string', example: '/path/to/element')]\n private readonly string $path,\n #[Property(description: 'ID of owner', type: 'integer', example: 1)]\n private readonly int $userOwner,\n #[Property(description: 'User that modified the element', type: 'integer', example: 1)]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "9c7851323aec72ad", + "equalIndicator/v1": "d23051cfd5b754ac82c3b6a0393e6667205ad4a75d4f5eefbeab50b23606d799" + }, + "baselineState": "unchanged", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Asset/Schema/Asset.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 43, "startColumn": 11, - "charOffset": 1908, - "charLength": 81, + "charOffset": 1381, + "charLength": 72, "snippet": { - "text": "Property(description: 'Full path', type: 'string', example: '/path/to/asset.jpg')" + "text": "Property(description: 'Mimetype', type: 'string', example: 'image/jpeg')" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 52, + "startLine": 41, "startColumn": 1, - "charOffset": 1752, - "charLength": 298, + "charOffset": 1246, + "charLength": 272, "snippet": { - "text": " #[Property(description: 'Workflow permissions', type: 'bool', example: false)]\n private readonly bool $hasWorkflowWithPermissions,\n #[Property(description: 'Full path', type: 'string', example: '/path/to/asset.jpg')]\n private readonly string $fullPath,\n int $id," + "text": " #[Property(description: 'Filename', type: 'string', example: 'cool.jpg')]\n private readonly string $filename,\n #[Property(description: 'Mimetype', type: 'string', example: 'image/jpeg')]\n private readonly ?string $mimeType,\n #[Property(" }, "sourceLanguage": "PHP" } @@ -39105,10 +39573,10 @@ } ], "partialFingerprints": { - "equalIndicator/v2": "0b4f2b468ad5fa55", - "equalIndicator/v1": "8589169c7dc68ddd3a3ff4ca9c715b43f668e1a9f3d177dae4138d9370b0e4a8" + "equalIndicator/v2": "01e6b1622c1ac541", + "equalIndicator/v1": "e1278b582ec78526441db2e368254195614e887186a2c3c98383915ca5fa35fe" }, - "baselineState": "new", + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -39129,26 +39597,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Response/Element.php", + "uri": "src/Asset/Schema/Asset.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 44, + "startLine": 41, "startColumn": 11, - "charOffset": 1610, - "charLength": 75, + "charOffset": 1256, + "charLength": 70, "snippet": { - "text": "Property(description: 'Creation date', type: 'integer', example: 221846400)" + "text": "Property(description: 'Filename', type: 'string', example: 'cool.jpg')" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 42, + "startLine": 39, "startColumn": 1, - "charOffset": 1480, - "charLength": 342, + "charOffset": 1132, + "charLength": 322, "snippet": { - "text": " #[Property(description: 'Is locked', type: 'boolean', example: false)]\n private readonly bool $isLocked,\n #[Property(description: 'Creation date', type: 'integer', example: 221846400)]\n private readonly ?int $creationDate,\n #[Property(description: 'Modification date', type: 'integer', example: 327417600)]" + "text": " #[Property(description: 'Type', type: 'string', example: 'image')]\n private readonly string $type,\n #[Property(description: 'Filename', type: 'string', example: 'cool.jpg')]\n private readonly string $filename,\n #[Property(description: 'Mimetype', type: 'string', example: 'image/jpeg')]" }, "sourceLanguage": "PHP" } @@ -39162,8 +39630,8 @@ } ], "partialFingerprints": { - "equalIndicator/v2": "80bfcd5e195caddf", - "equalIndicator/v1": "a202732b45abe1c94d18ae6ea5f71ddbbfd1fb71649fbfcec1ec249f16766178" + "equalIndicator/v2": "4265bd53264b2b0c", + "equalIndicator/v1": "e6cc6503ffca3f6dd7dce4f92789ac1a3e122d9a7ab44c799f8b7aebf6f514e1" }, "baselineState": "unchanged", "properties": { @@ -39186,26 +39654,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Response/Element.php", + "uri": "src/Request/CollectionParameters.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 42, + "startLine": 29, "startColumn": 11, - "charOffset": 1490, - "charLength": 67, + "charOffset": 814, + "charLength": 8, "snippet": { - "text": "Property(description: 'Is locked', type: 'boolean', example: false)" + "text": "NotBlank" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 40, + "startLine": 27, "startColumn": 1, - "charOffset": 1360, - "charLength": 326, + "charOffset": 769, + "charLength": 105, "snippet": { - "text": " #[Property(description: 'Locked', type: 'string', example: 'locked')]\n private readonly ?string $locked,\n #[Property(description: 'Is locked', type: 'boolean', example: false)]\n private readonly bool $isLocked,\n #[Property(description: 'Creation date', type: 'integer', example: 221846400)]" + "text": "{\n public function __construct(\n #[NotBlank]\n #[Positive]\n private int $page = 1," }, "sourceLanguage": "PHP" } @@ -39219,8 +39687,8 @@ } ], "partialFingerprints": { - "equalIndicator/v2": "2fec47e9fbf8e257", - "equalIndicator/v1": "b8d74bf3622ae06c9cab86005a1ab064dc1fea4c53635f2556e00d81b9cddd88" + "equalIndicator/v2": "b924270e17c10f07", + "equalIndicator/v1": "f2c0dc13e7e15ff2d40ef3f389848e6f1605257cc3a55e118392df3632ecdabf" }, "baselineState": "unchanged", "properties": { @@ -39243,26 +39711,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Request/CollectionParameters.php", + "uri": "src/Response/Element.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 30, + "startLine": 40, "startColumn": 11, - "charOffset": 834, - "charLength": 8, + "charOffset": 1370, + "charLength": 66, "snippet": { - "text": "Positive" + "text": "Property(description: 'Locked', type: 'string', example: 'locked')" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 28, + "startLine": 38, "startColumn": 1, - "charOffset": 771, - "charLength": 123, + "charOffset": 1216, + "charLength": 342, "snippet": { - "text": " public function __construct(\n #[NotBlank]\n #[Positive]\n private int $page = 1,\n #[NotBlank]" + "text": " #[Property(description: 'User that modified the element', type: 'integer', example: 1)]\n private readonly int $userModification,\n #[Property(description: 'Locked', type: 'string', example: 'locked')]\n private readonly ?string $locked,\n #[Property(description: 'Is locked', type: 'boolean', example: false)]" }, "sourceLanguage": "PHP" } @@ -39276,10 +39744,10 @@ } ], "partialFingerprints": { - "equalIndicator/v2": "63721e6ae2ff09e4", - "equalIndicator/v1": "cc182978cf2b938bd3cf51d25b8852bdcaefc64d83197c7c517a569e1bed1d79" + "equalIndicator/v2": "54e2faa7120fdfad", + "equalIndicator/v1": "faa3722f6b90434e54f632922c9803f6e391e29984d1a9464086c270b3a0ed41" }, - "baselineState": "new", + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -39304,22 +39772,22 @@ "uriBaseId": "SRCROOT" }, "region": { - "startLine": 36, + "startLine": 38, "startColumn": 11, - "charOffset": 1108, - "charLength": 65, + "charOffset": 1226, + "charLength": 84, "snippet": { - "text": "Property(description: 'ID of owner', type: 'integer', example: 1)" + "text": "Property(description: 'User that modified the element', type: 'integer', example: 1)" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 34, + "startLine": 36, "startColumn": 1, - "charOffset": 973, - "charLength": 338, + "charOffset": 1098, + "charLength": 339, "snippet": { - "text": " #[Property(description: 'path', type: 'string', example: '/path/to/element')]\n private readonly string $path,\n #[Property(description: 'ID of owner', type: 'integer', example: 1)]\n private readonly int $userOwner,\n #[Property(description: 'User that modified the element', type: 'integer', example: 1)]" + "text": " #[Property(description: 'ID of owner', type: 'integer', example: 1)]\n private readonly int $userOwner,\n #[Property(description: 'User that modified the element', type: 'integer', example: 1)]\n private readonly int $userModification,\n #[Property(description: 'Locked', type: 'string', example: 'locked')]" }, "sourceLanguage": "PHP" } @@ -39333,8 +39801,8 @@ } ], "partialFingerprints": { - "equalIndicator/v2": "9c7851323aec72ad", - "equalIndicator/v1": "d23051cfd5b754ac82c3b6a0393e6667205ad4a75d4f5eefbeab50b23606d799" + "equalIndicator/v2": "0d648721bc039127", + "equalIndicator/v1": "fe6fc561100aa403c25a9624309cc14e7f1cc862740c652d71d7cc91df967beb" }, "baselineState": "unchanged", "properties": { @@ -39346,37 +39814,37 @@ } }, { - "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "ruleId": "EfferentObjectCouplingInspection", "kind": "fail", "level": "note", "message": { - "text": "Attribute can be added to overriding parameter", - "markdown": "Attribute can be added to overriding parameter" + "text": "[EA] High efferent coupling (21).", + "markdown": "\\[EA\\] High efferent coupling (21)." }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "src/Asset/Schema/Asset.php", + "uri": "src/Authorization/Controller/AuthorizationController.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 43, - "startColumn": 11, - "charOffset": 1381, - "charLength": 72, + "startLine": 46, + "startColumn": 13, + "charOffset": 2183, + "charLength": 23, "snippet": { - "text": "Property(description: 'Mimetype', type: 'string', example: 'image/jpeg')" + "text": "AuthorizationController" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 41, + "startLine": 44, "startColumn": 1, - "charOffset": 1246, - "charLength": 272, + "charOffset": 2154, + "charLength": 117, "snippet": { - "text": " #[Property(description: 'Filename', type: 'string', example: 'cool.jpg')]\n private readonly string $filename,\n #[Property(description: 'Mimetype', type: 'string', example: 'image/jpeg')]\n private readonly ?string $mimeType,\n #[Property(" + "text": " * @internal\n */\nfinal class AuthorizationController extends AbstractApiController\n{\n public function __construct(" }, "sourceLanguage": "PHP" } @@ -39390,8 +39858,65 @@ } ], "partialFingerprints": { - "equalIndicator/v2": "01e6b1622c1ac541", - "equalIndicator/v1": "e1278b582ec78526441db2e368254195614e887186a2c3c98383915ca5fa35fe" + "equalIndicator/v2": "af124e8aa2be2d8b", + "equalIndicator/v1": "31c95f4bfa8bf741b071ffed051cc58534a0d8fa41131ab271c2271332f08bcd" + }, + "baselineState": "unchanged", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "EfferentObjectCouplingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "[EA] High efferent coupling (20).", + "markdown": "\\[EA\\] High efferent coupling (20)." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Version/Controller/CleanupController.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 42, + "startColumn": 13, + "charOffset": 2021, + "charLength": 17, + "snippet": { + "text": "CleanupController" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 40, + "startColumn": 1, + "charOffset": 1992, + "charLength": 111, + "snippet": { + "text": " * @internal\n */\nfinal class CleanupController extends AbstractApiController\n{\n public function __construct(" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "ef77395305986867", + "equalIndicator/v1": "56fa5cb989107bf6a2500e4f7e4590ecd2a76c4b9c3266968efd6977f85df779" }, "baselineState": "new", "properties": { @@ -39403,37 +39928,37 @@ } }, { - "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "ruleId": "EfferentObjectCouplingInspection", "kind": "fail", "level": "note", "message": { - "text": "Attribute can be added to overriding parameter", - "markdown": "Attribute can be added to overriding parameter" + "text": "[EA] High efferent coupling (30).", + "markdown": "\\[EA\\] High efferent coupling (30)." }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "src/Asset/Schema/Asset.php", + "uri": "src/Asset/Controller/CollectionController.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 41, - "startColumn": 11, - "charOffset": 1256, - "charLength": 70, + "startLine": 53, + "startColumn": 13, + "charOffset": 2996, + "charLength": 20, "snippet": { - "text": "Property(description: 'Filename', type: 'string', example: 'cool.jpg')" + "text": "CollectionController" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 39, + "startLine": 51, "startColumn": 1, - "charOffset": 1132, - "charLength": 322, + "charOffset": 2967, + "charLength": 113, "snippet": { - "text": " #[Property(description: 'Type', type: 'string', example: 'image')]\n private readonly string $type,\n #[Property(description: 'Filename', type: 'string', example: 'cool.jpg')]\n private readonly string $filename,\n #[Property(description: 'Mimetype', type: 'string', example: 'image/jpeg')]" + "text": " * @internal\n */\nfinal class CollectionController extends AbstractApiController\n{\n use PaginatedResponseTrait;" }, "sourceLanguage": "PHP" } @@ -39447,8 +39972,8 @@ } ], "partialFingerprints": { - "equalIndicator/v2": "4265bd53264b2b0c", - "equalIndicator/v1": "e6cc6503ffca3f6dd7dce4f92789ac1a3e122d9a7ab44c799f8b7aebf6f514e1" + "equalIndicator/v2": "4fb327c4151fd0ef", + "equalIndicator/v1": "5c00a4f43cabb4c6181f0353ac0fcab81fe0f6be307800d7899ad041c4d5a7a5" }, "baselineState": "new", "properties": { @@ -39460,37 +39985,37 @@ } }, { - "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "ruleId": "EfferentObjectCouplingInspection", "kind": "fail", "level": "note", "message": { - "text": "Attribute can be added to overriding parameter", - "markdown": "Attribute can be added to overriding parameter" + "text": "[EA] High efferent coupling (24).", + "markdown": "\\[EA\\] High efferent coupling (24)." }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "src/Request/CollectionParameters.php", + "uri": "src/Version/Controller/CollectionController.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 29, - "startColumn": 11, - "charOffset": 814, - "charLength": 8, + "startLine": 46, + "startColumn": 13, + "charOffset": 2370, + "charLength": 20, "snippet": { - "text": "NotBlank" + "text": "CollectionController" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 27, + "startLine": 44, "startColumn": 1, - "charOffset": 769, - "charLength": 105, + "charOffset": 2341, + "charLength": 113, "snippet": { - "text": "{\n public function __construct(\n #[NotBlank]\n #[Positive]\n private int $page = 1," + "text": " * @internal\n */\nfinal class CollectionController extends AbstractApiController\n{\n use PaginatedResponseTrait;" }, "sourceLanguage": "PHP" } @@ -39504,8 +40029,8 @@ } ], "partialFingerprints": { - "equalIndicator/v2": "b924270e17c10f07", - "equalIndicator/v1": "f2c0dc13e7e15ff2d40ef3f389848e6f1605257cc3a55e118392df3632ecdabf" + "equalIndicator/v2": "92b68947b9449ee1", + "equalIndicator/v1": "83f4848e12782b2d396312d0d5597edc0a820ff23ebf26d04fa71f2c2699290d" }, "baselineState": "new", "properties": { @@ -39528,26 +40053,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Response/Element.php", + "uri": "src/Version/Schema/AssetVersion.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 40, + "startLine": 31, "startColumn": 11, - "charOffset": 1370, - "charLength": 66, + "charOffset": 841, + "charLength": 94, "snippet": { - "text": "Property(description: 'Locked', type: 'string', example: 'locked')" + "text": "Property(description: 'temporary file', type: 'string', example: 'path/to/temporary/file.png')" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 38, + "startLine": 29, "startColumn": 1, - "charOffset": 1216, - "charLength": 342, + "charOffset": 707, + "charLength": 277, "snippet": { - "text": " #[Property(description: 'User that modified the element', type: 'integer', example: 1)]\n private readonly int $userModification,\n #[Property(description: 'Locked', type: 'string', example: 'locked')]\n private readonly ?string $locked,\n #[Property(description: 'Is locked', type: 'boolean', example: false)]" + "text": " #[Property(description: 'file name', type: 'string', example: 'myImageFile.png')]\n private string $fileName,\n #[Property(description: 'temporary file', type: 'string', example: 'path/to/temporary/file.png')]\n private ?string $temporaryFile,\n ) {" }, "sourceLanguage": "PHP" } @@ -39561,10 +40086,10 @@ } ], "partialFingerprints": { - "equalIndicator/v2": "54e2faa7120fdfad", - "equalIndicator/v1": "faa3722f6b90434e54f632922c9803f6e391e29984d1a9464086c270b3a0ed41" + "equalIndicator/v2": "7bfd67c49d7be2b0", + "equalIndicator/v1": "83d393ce7b6db11f487f3bf93568eb230a861a340839bc61e887115452427af2" }, - "baselineState": "unchanged", + "baselineState": "new", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -39585,26 +40110,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Response/Element.php", + "uri": "src/Version/Schema/AssetVersion.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 38, + "startLine": 29, "startColumn": 11, - "charOffset": 1226, - "charLength": 84, + "charOffset": 717, + "charLength": 78, "snippet": { - "text": "Property(description: 'User that modified the element', type: 'integer', example: 1)" + "text": "Property(description: 'file name', type: 'string', example: 'myImageFile.png')" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 36, + "startLine": 27, "startColumn": 1, - "charOffset": 1098, - "charLength": 339, + "charOffset": 672, + "charLength": 264, "snippet": { - "text": " #[Property(description: 'ID of owner', type: 'integer', example: 1)]\n private readonly int $userOwner,\n #[Property(description: 'User that modified the element', type: 'integer', example: 1)]\n private readonly int $userModification,\n #[Property(description: 'Locked', type: 'string', example: 'locked')]" + "text": "{\n public function __construct(\n #[Property(description: 'file name', type: 'string', example: 'myImageFile.png')]\n private string $fileName,\n #[Property(description: 'temporary file', type: 'string', example: 'path/to/temporary/file.png')]" }, "sourceLanguage": "PHP" } @@ -39618,10 +40143,10 @@ } ], "partialFingerprints": { - "equalIndicator/v2": "0d648721bc039127", - "equalIndicator/v1": "fe6fc561100aa403c25a9624309cc14e7f1cc862740c652d71d7cc91df967beb" + "equalIndicator/v2": "0e8abf4e52d2d096", + "equalIndicator/v1": "c7f9f950add14b3b8752cefaac0435d6bd5bd4cf16f08235dd0e0d337c041994" }, - "baselineState": "unchanged", + "baselineState": "new", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -39632,10 +40157,10 @@ } ], "automationDetails": { - "id": "project/qodana/2024-04-25", - "guid": "9ce2ca2c-6f2a-45d8-b1b1-3c4be056096d", + "id": "project/qodana/2024-05-02", + "guid": "49fa9de1-b69c-4473-ac2a-67356ad3532e", "properties": { - "jobUrl": "https://github.com/pimcore/studio-backend-bundle/actions/runs/8834859009" + "jobUrl": "https://github.com/pimcore/studio-backend-bundle/actions/runs/8920356407" } }, "newlineSequences": [ @@ -39651,8 +40176,8 @@ "configProfile": "path", "deviceId": "200820300000000-7c33-767c-9695-477d79c87e1c", "qodanaNewResultSummary": { - "moderate": 14, - "total": 14 + "moderate": 5, + "total": 5 } } } diff --git a/src/Asset/Controller/CollectionController.php b/src/Asset/Controller/CollectionController.php index f8a001fcb..83b976b65 100644 --- a/src/Asset/Controller/CollectionController.php +++ b/src/Asset/Controller/CollectionController.php @@ -40,6 +40,7 @@ use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Property\AnyOfAsset; use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\SuccessResponse; use Pimcore\Bundle\StudioBackendBundle\OpenApi\Config\Tags; +use Pimcore\Bundle\StudioBackendBundle\Util\Constants\ElementTypes; use Pimcore\Bundle\StudioBackendBundle\Util\Traits\PaginatedResponseTrait; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\Attribute\MapQueryString; @@ -97,7 +98,7 @@ public function getAssets(#[MapQueryString] ElementParameters $parameters): Json $assetQuery = $filterService->applyFilters( $parameters, - OpenSearchFilterInterface::TYPE_ASSET + ElementTypes::TYPE_ASSET ); $result = $this->assetSearchService->searchAssets($assetQuery); diff --git a/src/DataIndex/Adapter/DataObjectSearchAdapter.php b/src/DataIndex/Adapter/DataObjectSearchAdapter.php index 90f44355c..3a87d6545 100644 --- a/src/DataIndex/Adapter/DataObjectSearchAdapter.php +++ b/src/DataIndex/Adapter/DataObjectSearchAdapter.php @@ -16,21 +16,20 @@ namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Adapter; +use Exception; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\DataObject\DataObjectSearchInterface; +use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\DataObject\SearchResult\DataObjectSearchResultItem; use Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\DataObject\DataObjectSearchServiceInterface; -use Pimcore\Bundle\StaticResolverBundle\Models\Element\ServiceResolver; use Pimcore\Bundle\StudioBackendBundle\DataIndex\DataObjectSearchResult; use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; use Pimcore\Bundle\StudioBackendBundle\DataObject\Schema\DataObject; use Pimcore\Bundle\StudioBackendBundle\Exception\ElementNotFoundException; use Pimcore\Bundle\StudioBackendBundle\Exception\InvalidSearchException; -use Pimcore\Model\DataObject\Concrete; final readonly class DataObjectSearchAdapter implements DataObjectSearchAdapterInterface { public function __construct( - private DataObjectSearchServiceInterface $searchService, - private ServiceResolver $serviceResolver + private DataObjectSearchServiceInterface $searchService ) { } @@ -53,9 +52,9 @@ public function searchDataObjects(QueryInterface $dataObjectQuery): DataObjectSe } $searchResult = $this->searchService->search($search); - $result = array_map(function ($id) { - return $this->getDataObjectById($id); - }, $searchResult->getIds()); + $result = array_map(static function (DataObjectSearchResultItem $item) { + return new DataObject($item->getId(), $item->getClassName()); + }, $searchResult->getItems()); return new DataObjectSearchResult( $result, @@ -65,11 +64,12 @@ public function searchDataObjects(QueryInterface $dataObjectQuery): DataObjectSe ); } + /** + * @throws Exception + */ public function getDataObjectById(int $id): DataObject { - /** @var null|Concrete $dataObject */ - $dataObject = $this->serviceResolver->getElementById('object', $id); - + $dataObject = $this->searchService->byId($id); if (!$dataObject) { throw new ElementNotFoundException($id); } diff --git a/src/DataIndex/OpenSearchFilter.php b/src/DataIndex/OpenSearchFilter.php index dc096947d..441d88821 100644 --- a/src/DataIndex/OpenSearchFilter.php +++ b/src/DataIndex/OpenSearchFilter.php @@ -24,6 +24,7 @@ use Pimcore\Bundle\StudioBackendBundle\Factory\QueryFactoryInterface; use Pimcore\Bundle\StudioBackendBundle\Filter\Service\FilterServiceInterface; use Pimcore\Bundle\StudioBackendBundle\Request\CollectionParametersInterface; +use Pimcore\Bundle\StudioBackendBundle\Util\Constants\ElementTypes; /** * @internal @@ -65,9 +66,9 @@ public function applyFilters(CollectionParametersInterface $parameters, string $ private function getTypeFilters(Filters $filters, string $type): array { return match($type) { - OpenSearchFilterInterface::TYPE_ASSET => $filters->getAssetFilters(), - OpenSearchFilterInterface::TYPE_DATA_OBJECT => $filters->getDataObjectFilters(), - OpenSearchFilterInterface::TYPE_DOCUMENT => $filters->getDocumentFilters(), + ElementTypes::TYPE_ASSET => $filters->getAssetFilters(), + ElementTypes::TYPE_DATA_OBJECT => $filters->getDataObjectFilters(), + ElementTypes::TYPE_DOCUMENT => $filters->getDocumentFilters(), default => throw new InvalidFilterTypeException(400, "Unknown filter type: $type") }; } diff --git a/src/DataIndex/OpenSearchFilterInterface.php b/src/DataIndex/OpenSearchFilterInterface.php index 72c679667..10caefc37 100644 --- a/src/DataIndex/OpenSearchFilterInterface.php +++ b/src/DataIndex/OpenSearchFilterInterface.php @@ -27,12 +27,6 @@ interface OpenSearchFilterInterface { public const SERVICE_TYPE = 'open_search_filter'; - public const TYPE_DATA_OBJECT = 'dataObject'; - - public const TYPE_ASSET = 'asset'; - - public const TYPE_DOCUMENT = 'document'; - /** * @throws InvalidQueryTypeException */ diff --git a/src/DependencyInjection/PimcoreStudioBackendExtension.php b/src/DependencyInjection/PimcoreStudioBackendExtension.php index b551317eb..4dc56ec00 100644 --- a/src/DependencyInjection/PimcoreStudioBackendExtension.php +++ b/src/DependencyInjection/PimcoreStudioBackendExtension.php @@ -62,6 +62,7 @@ public function load(array $configs, ContainerBuilder $container): void $loader->load('security.yaml'); $loader->load('services.yaml'); $loader->load('translation.yaml'); + $loader->load('versions.yaml'); $definition = $container->getDefinition(TokenServiceInterface::class); $definition->setArgument('$tokenLifetime', $config['api_token']['lifetime']); diff --git a/src/Exception/AccessDeniedException.php b/src/Exception/AccessDeniedException.php index 334e49c85..b0eebd0c8 100644 --- a/src/Exception/AccessDeniedException.php +++ b/src/Exception/AccessDeniedException.php @@ -21,8 +21,8 @@ */ final class AccessDeniedException extends AbstractApiException { - public function __construct() + public function __construct(string $message = 'Bad credentials') { - parent::__construct(401, 'Bad credentials'); + parent::__construct(401, $message); } } diff --git a/src/Exception/ElementProcessingNotCompletedException.php b/src/Exception/ElementProcessingNotCompletedException.php new file mode 100644 index 000000000..b8e28b5c2 --- /dev/null +++ b/src/Exception/ElementProcessingNotCompletedException.php @@ -0,0 +1,31 @@ +name, description: 'Get translations either for a single key or multiple keys' )] +#[Tag( + name: Tags::Versions->name, + description: 'Versions operations to get/list/publish/delete and cleanup versions' +)] enum Tags { case Assets; case Authorization; case DataObjects; case Translation; + case Versions; } diff --git a/src/Response/Schemas.php b/src/Response/Schemas.php index 198efe244..e85fe84f4 100644 --- a/src/Response/Schemas.php +++ b/src/Response/Schemas.php @@ -26,6 +26,10 @@ use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Video; use Pimcore\Bundle\StudioBackendBundle\Response\Schema\DevError; use Pimcore\Bundle\StudioBackendBundle\Response\Schema\Error; +use Pimcore\Bundle\StudioBackendBundle\Version\Schema\AssetType\ImageVersion; +use Pimcore\Bundle\StudioBackendBundle\Version\Schema\AssetVersion; +use Pimcore\Bundle\StudioBackendBundle\Version\Schema\DataObjectVersion; +use Pimcore\Bundle\StudioBackendBundle\Version\Schema\DocumentVersion; /** * @internal @@ -43,6 +47,13 @@ Unknown::class, ]; + public const VERSIONS = [ + AssetVersion::class, + ImageVersion::class, + DataObjectVersion::class, + DocumentVersion::class, + ]; + public const ERRORS = [ Error::class, DevError::class, diff --git a/src/Util/Constants/ElementTypes.php b/src/Util/Constants/ElementTypes.php new file mode 100644 index 000000000..2102530af --- /dev/null +++ b/src/Util/Constants/ElementTypes.php @@ -0,0 +1,31 @@ +isAllowed($permission, $user)) { + throw new AccessDeniedException( + sprintf('You dont have %s permission', $permission) + ); + } + } +} diff --git a/src/Util/Traits/ElementProviderTrait.php b/src/Util/Traits/ElementProviderTrait.php new file mode 100644 index 000000000..e16e6df30 --- /dev/null +++ b/src/Util/Traits/ElementProviderTrait.php @@ -0,0 +1,75 @@ +getElementById($type, $id); + if ($element === null) { + throw new ElementNotFoundException($id); + } + + return $this->getLatestVersionForUser($element, $user); + } + + private function getLatestVersionForUser( + Asset|Document|Concrete $element, + ?UserInterface $user + ): ElementInterface { + // check for latest version + $version = $element->getLatestVersion($user?->getId()); + + if ($version) { + return $version->getData(); + } + + return $element; + } + + private function getElementClass(ElementInterface $element): string + { + return match (true) { + $element instanceof Asset => Asset::class, + $element instanceof Document => Document::class, + $element instanceof DataObject => DataObject::class, + default => throw new InvalidElementTypeException(get_class($element)) + }; + } +} diff --git a/src/Version/Controller/CleanupController.php b/src/Version/Controller/CleanupController.php new file mode 100644 index 000000000..b84f30e7b --- /dev/null +++ b/src/Version/Controller/CleanupController.php @@ -0,0 +1,77 @@ +name] + )] + #[IdParameter('ID of the element', 'element')] + #[ElementTypeParameter] + #[TimestampParameter('elementModificationDate', 'Modification timestamp of the element', true)] + #[SuccessResponse( + description: 'IDs of deleted versions', + content: new IdsJson('IDs of deleted versions') + )] + #[UnauthorizedResponse] + #[NotFoundResponse] + #[MethodNotAllowedResponse] + #[UnsupportedMediaTypeResponse] + #[UnprocessableContentResponse] + public function cleanupVersions(#[MapQueryString] VersionCleanupParameters $parameters): JsonResponse + { + return $this->jsonResponse(['ids' => $this->repository->cleanupVersions($parameters)]); + } +} diff --git a/src/Version/Controller/CollectionController.php b/src/Version/Controller/CollectionController.php new file mode 100644 index 000000000..4294cf48e --- /dev/null +++ b/src/Version/Controller/CollectionController.php @@ -0,0 +1,94 @@ +name] + )] + #[PageParameter] + #[PageSizeParameter] + #[IdParameter('ID of the element', 'element')] + #[ElementTypeParameter] + #[SuccessResponse( + description: 'Paginated versions with total count as header param', + content: new CollectionJson(new VersionCollection()) + )] + #[NotFoundResponse] + #[UnauthorizedResponse] + #[BadRequestResponse] + #[MethodNotAllowedResponse] + #[UnprocessableContentResponse] + public function getVersions(#[MapQueryString] VersionParameters $parameters): JsonResponse + { + $result = $this->hydratorService->getHydratedVersions( + $parameters, + $this->securityService->getCurrentUser() + ); + + return $this->getPaginatedCollection( + $this->serializer, + $result->getItems(), + $result->getTotalItems(), + ); + } +} diff --git a/src/Version/Controller/DeleteController.php b/src/Version/Controller/DeleteController.php new file mode 100644 index 000000000..9981edfcc --- /dev/null +++ b/src/Version/Controller/DeleteController.php @@ -0,0 +1,74 @@ +name] + )] + #[IdParameter(type: 'version')] + #[SuccessResponse( + description: 'ID of deleted version', + content: new IdJson('ID of deleted version') + )] + #[UnauthorizedResponse] + #[NotFoundResponse] + #[MethodNotAllowedResponse] + #[UnsupportedMediaTypeResponse] + #[UnprocessableContentResponse] + public function deleteVersion(int $id): JsonResponse + { + $version = $this->repository->getVersionById($id); + $version->delete(); + + return $this->jsonResponse(['id' => $id]); + } +} diff --git a/src/Version/Controller/GetController.php b/src/Version/Controller/GetController.php new file mode 100644 index 000000000..670705488 --- /dev/null +++ b/src/Version/Controller/GetController.php @@ -0,0 +1,78 @@ +name] + )] + #[IdParameter(type: 'version')] + #[SuccessResponse( + description: 'Version data as json', + content: new OneOfVersionJson() + )] + #[UnauthorizedResponse] + #[NotFoundResponse] + #[MethodNotAllowedResponse] + #[UnsupportedMediaTypeResponse] + #[UnprocessableContentResponse] + public function getVersions(int $id): JsonResponse + { + return $this->jsonResponse( + $this->hydratorService->getHydratedVersionData( + $id, + $this->securityService->getCurrentUser() + ) + ); + } +} diff --git a/src/Version/Controller/PublishController.php b/src/Version/Controller/PublishController.php new file mode 100644 index 000000000..b39092150 --- /dev/null +++ b/src/Version/Controller/PublishController.php @@ -0,0 +1,77 @@ +name] + )] + #[IdParameter(type: 'version')] + #[SuccessResponse( + description: 'ID of published version', + content: new IdJson('ID of published version') + )] + #[UnauthorizedResponse] + #[NotFoundResponse] + #[MethodNotAllowedResponse] + #[UnsupportedMediaTypeResponse] + #[UnprocessableContentResponse] + public function publishVersion(int $id): JsonResponse + { + $user = $this->securityService->getCurrentUser(); + + return $this->jsonResponse([ + 'id' => $this->publisher->publishVersion($id, $user), + ]); + } +} diff --git a/src/Version/Hydrator/AssetVersionHydrator.php b/src/Version/Hydrator/AssetVersionHydrator.php new file mode 100644 index 000000000..2e824bb53 --- /dev/null +++ b/src/Version/Hydrator/AssetVersionHydrator.php @@ -0,0 +1,112 @@ +getMimeType() === 'application/pdf') { + $this->validatePdfStatus($asset); + } + + if ($asset instanceof Image) { + return $this->hydrateImage($asset); + } + + return new AssetVersion( + $asset->getFilename(), + $this->getTemporaryFile($asset), + ); + } + + private function hydrateImage(Image $image): ImageVersion + { + return new ImageVersion( + $image->getFilename(), + $this->getTemporaryFile($image), + $image->getCreationDate(), + $image->getModificationDate(), + $image->getFileSize(), + $image->getMimeType(), + $this->getImageDimensions($image) + ); + } + + private function getImageDimensions(Image $image): Dimensions + { + try { + $assetDimensions = $image->getDimensions(); + } catch (Exception) { + return new Dimensions(); + } + + if (!$assetDimensions) { + return new Dimensions(); + } + + return new Dimensions( + $assetDimensions['width'], + $assetDimensions['height'] + ); + } + + private function getTemporaryFile(Asset $asset): ?string + { + try { + $temporaryFile = $asset->getTemporaryFile(); + } catch (Exception) { + return null; + } + + return $temporaryFile; + } + + private function validatePdfStatus(Asset\Document $pdf): void + { + $status = $pdf->getScanStatus(); + + if ($status !== Asset\Enum\PdfScanStatus::SAFE) { + if ($status === Asset\Enum\PdfScanStatus::UNSAFE) { + throw new ElementUnsafeException( + $pdf->getId() + ); + } + + throw new ElementProcessingNotCompletedException( + $pdf->getId() + ); + } + } +} diff --git a/src/Version/Hydrator/AssetVersionHydratorInterface.php b/src/Version/Hydrator/AssetVersionHydratorInterface.php new file mode 100644 index 000000000..86b410947 --- /dev/null +++ b/src/Version/Hydrator/AssetVersionHydratorInterface.php @@ -0,0 +1,30 @@ +isPublished(); + } + + return new DataObjectVersion( + $dataObject->getModificationDate(), + $dataObject->getRealFullPath(), + $published, + ); + } +} diff --git a/src/Version/Hydrator/DataObjectVersionHydratorInterface.php b/src/Version/Hydrator/DataObjectVersionHydratorInterface.php new file mode 100644 index 000000000..ded865c8d --- /dev/null +++ b/src/Version/Hydrator/DataObjectVersionHydratorInterface.php @@ -0,0 +1,30 @@ +getModificationDate(), + $document->getRealFullPath(), + $document->isPublished(), + ); + } +} diff --git a/src/Version/Hydrator/DocumentVersionHydratorInterface.php b/src/Version/Hydrator/DocumentVersionHydratorInterface.php new file mode 100644 index 000000000..2e3774502 --- /dev/null +++ b/src/Version/Hydrator/DocumentVersionHydratorInterface.php @@ -0,0 +1,30 @@ +getUser()) { + $user = new User( + $version->getUser()->getId(), + $version->getUser()->getName() + ); + } + $versionId = $version->getId(); + + return new Version( + id: $versionId, + cid: $version->getCid(), + ctype: $version->getCtype(), + note: $version->getNote(), + date: $version->getDate(), + public: $version->isPublic(), + versionCount: $version->getVersionCount(), + autosave: $version->isAutoSave(), + user: $user, + scheduled: $scheduledTasks[$versionId] ?? null + ); + } +} diff --git a/src/Version/Hydrator/VersionHydratorInterface.php b/src/Version/Hydrator/VersionHydratorInterface.php new file mode 100644 index 000000000..23211967a --- /dev/null +++ b/src/Version/Hydrator/VersionHydratorInterface.php @@ -0,0 +1,31 @@ +getElement( + $this->serviceResolver, + $parameters->getElementType(), + $parameters->getElementId(), + ); + $scheduledTasks = $this->getScheduledTasks($element); + $list = $this->repository->listVersions($element, $parameters, $user); + $versions = []; + $versionObjects = $list->load(); + foreach ($versionObjects as $versionObject) { + $versions[] = $this->versionHydrator->hydrate($versionObject, $scheduledTasks); + } + + return new ListingResult( + $versions, + $parameters->getPage(), + $parameters->getPageSize(), + $list->getTotalCount() + ); + } + + public function getHydratedVersionData( + int $id, + UserInterface $user + ): AssetVersion|DataObjectVersion|DocumentVersion { + $version = $this->repository->getVersionById($id); + $element = $this->repository->getElementFromVersion($version, $user); + + return $this->hydrate( + $element, + $this->getElementClass($element) + ); + } + + private function hydrate( + ElementInterface $element, + string $class + ): AssetVersion|DocumentVersion|DataObjectVersion { + if ($this->versionHydratorLocator->has($class)) { + return $this->versionHydratorLocator->get($class)->hydrate($element); + } + + throw new InvalidElementTypeException($class); + } + + private function getScheduledTasks(ElementInterface $element): array + { + $scheduledTasks = $element->getScheduledTasks(); + $schedules = []; + foreach ($scheduledTasks as $task) { + if ($task->getActive()) { + $schedules[$task->getVersion()] = $task->getDate(); + } + } + + return $schedules; + } +} diff --git a/src/Version/Hydrator/VersionHydratorServiceInterface.php b/src/Version/Hydrator/VersionHydratorServiceInterface.php new file mode 100644 index 000000000..40a0cf543 --- /dev/null +++ b/src/Version/Hydrator/VersionHydratorServiceInterface.php @@ -0,0 +1,40 @@ +setUserModification($user->getId()); + $versionAsset->save(); + } catch (Exception $e) { + throw new ElementPublishingFailedException( + $versionAsset->getId(), + $e->getMessage() + ); + } + } +} diff --git a/src/Version/Publisher/AssetVersionPublisherInterface.php b/src/Version/Publisher/AssetVersionPublisherInterface.php new file mode 100644 index 000000000..d32ef14f5 --- /dev/null +++ b/src/Version/Publisher/AssetVersionPublisherInterface.php @@ -0,0 +1,31 @@ +setPublished(true); + $versionDataObject->setUserModification($user->getId()); + $versionDataObject->save(); + } catch (Exception $e) { + throw new ElementPublishingFailedException( + $versionDataObject->getId(), + $e->getMessage() + ); + } + } +} diff --git a/src/Version/Publisher/DataObjectVersionPublisherInterface.php b/src/Version/Publisher/DataObjectVersionPublisherInterface.php new file mode 100644 index 000000000..899abaf1c --- /dev/null +++ b/src/Version/Publisher/DataObjectVersionPublisherInterface.php @@ -0,0 +1,31 @@ +documentResolver->getById($versionDocument->getId()); + if (!$currentDocument) { + throw new ElementNotFoundException( + $versionDocument->getId() + ); + } + + try { + $versionDocument->setPublished(true); + $versionDocument->setKey($currentDocument->getKey()); + $versionDocument->setPath($currentDocument->getPath()); + $versionDocument->setUserModification($user->getId()); + $versionDocument->save(); + } catch (Exception $e) { + throw new ElementPublishingFailedException( + $versionDocument->getId(), + $e->getMessage() + ); + } + } +} diff --git a/src/Version/Publisher/DocumentVersionPublisherInterface.php b/src/Version/Publisher/DocumentVersionPublisherInterface.php new file mode 100644 index 000000000..a14ba9008 --- /dev/null +++ b/src/Version/Publisher/DocumentVersionPublisherInterface.php @@ -0,0 +1,31 @@ +repository->getVersionById($versionId); + $element = $this->repository->getElementFromVersion( + $version, + $user + ); + $elementId = $element->getId(); + + $currentElement = $this->getElement( + $this->serviceResolver, + $element->getType(), + $elementId, + ); + + $this->isAllowed($currentElement, $user, Permissions::PUBLISH_PERMISSION); + $class = $this->getElementClass($currentElement); + if (!$this->versionPublisherLocator->has($class)) { + throw new InvalidElementTypeException($class); + } + + $this->versionPublisherLocator->get($class)->publish( + $element, + $user + ); + + $lastVersion = $this->repository->getLastVersion( + $elementId, + $element->getType(), + $user + ); + + if (!$lastVersion) { + throw new ElementPublishingFailedException( + $elementId, + 'No last version was found' + ); + } + + return $lastVersion->getId(); + } +} diff --git a/src/Version/Publisher/VersionPublisherServiceInterface.php b/src/Version/Publisher/VersionPublisherServiceInterface.php new file mode 100644 index 000000000..6ede26a97 --- /dev/null +++ b/src/Version/Publisher/VersionPublisherServiceInterface.php @@ -0,0 +1,30 @@ +isAllowed($element, $user, Permissions::VERSIONS_PERMISSION); + $limit = $parameters->getPageSize(); + $page = $parameters->getPage(); + $list = $this->getElementVersionsListing( + $parameters->getElementId(), + $parameters->getElementType(), + $user->getId() + ); + $paginatedList = $list; + $paginatedList->setLimit($limit); + $paginatedList->setOffset(($page - 1) * $limit); + + return $paginatedList; + } + + public function getLastVersion( + int $elementId, + string $elementType, + UserInterface $user + ): ?Version { + $list = $this->getElementVersionsListing( + $elementId, + $elementType, + $user->getId() + ); + $list->setLimit(1); + $versions = $list->load(); + + if (empty($versions)) { + return null; + } + + return $versions[0]; + } + + public function getElementFromVersion( + Version $version, + UserInterface $user + ): ElementInterface { + $element = $version->getData(); + $this->isAllowed($element, $user, Permissions::VERSIONS_PERMISSION); + + return $element; + } + + public function getVersionById( + int $id + ): Version { + $version = $this->versionResolver->getById($id); + if (!$version) { + throw new ElementNotFoundException($id); + } + + return $version; + } + + public function cleanupVersions( + VersionCleanupParameters $parameters + ): array { + $deletedVersions = []; + $list = $this->getVersionListing( + 'cid = ? AND ctype = ? AND date <> ?', + [ + $parameters->getElementId(), + $parameters->getElementType(), + $parameters->getElementModificationDate(), + ] + ); + $versions = $list->load(); + + foreach ($versions as $version) { + $deletedVersions[] = $version->getId(); + $version->delete(); + } + + return $deletedVersions; + } + + private function getElementVersionsListing( + int $elementId, + string $elementType, + int $userId + ): VersionListing { + return $this->getVersionListing( + 'cid = ? AND ctype = ? AND (autoSave=0 OR (autoSave=1 AND userId = ?))', + [ + $elementId, + $elementType, + $userId, + ] + ); + } + + private function getVersionListing( + string $condition, + array $params, + ): VersionListing { + $list = new VersionListing(); + $list->setLoadAutoSave(true); + $list->setCondition($condition, $params) + ->setOrderKey('id') + ->setOrder('DESC'); + + return $list; + } +} diff --git a/src/Version/RepositoryInterface.php b/src/Version/RepositoryInterface.php new file mode 100644 index 000000000..45d8be072 --- /dev/null +++ b/src/Version/RepositoryInterface.php @@ -0,0 +1,55 @@ +elementId; + } + + public function getElementType(): string + { + return $this->elementType; + } + + public function getElementModificationDate(): int + { + return $this->elementModificationDate; + } +} diff --git a/src/Version/Request/VersionParameters.php b/src/Version/Request/VersionParameters.php new file mode 100644 index 000000000..c136fda76 --- /dev/null +++ b/src/Version/Request/VersionParameters.php @@ -0,0 +1,49 @@ +elementId; + } + + public function getElementType(): string + { + if ($this->elementType === ElementTypes::TYPE_DATA_OBJECT) { + return ElementTypes::TYPE_OBJECT; + } + + return $this->elementType; + } +} diff --git a/src/Version/Result/ListingResult.php b/src/Version/Result/ListingResult.php new file mode 100644 index 000000000..648bc3c2d --- /dev/null +++ b/src/Version/Result/ListingResult.php @@ -0,0 +1,60 @@ +totalItems; + } + + /** + * @return array + */ + public function getItems(): array + { + return $this->items; + } + + public function getCurrentPage(): int + { + return $this->currentPage; + } + + public function getPageSize(): int + { + return $this->pageSize; + } +} diff --git a/src/Version/Schema/AssetType/ImageVersion.php b/src/Version/Schema/AssetType/ImageVersion.php new file mode 100644 index 000000000..4554f138a --- /dev/null +++ b/src/Version/Schema/AssetType/ImageVersion.php @@ -0,0 +1,74 @@ +dimensions; + } + + public function getCreationDate(): int + { + return $this->creationDate; + } + + public function getModificationDate(): ?int + { + return $this->modificationDate; + } + + public function getFileSize(): int + { + return $this->fileSize; + } + + public function getMimeType(): string + { + return $this->mimeType; + } +} diff --git a/src/Version/Schema/AssetVersion.php b/src/Version/Schema/AssetVersion.php new file mode 100644 index 000000000..bd9b720a6 --- /dev/null +++ b/src/Version/Schema/AssetVersion.php @@ -0,0 +1,45 @@ +fileName; + } + + public function getTemporaryFile(): string + { + return $this->temporaryFile; + } +} diff --git a/src/Version/Schema/DataObjectVersion.php b/src/Version/Schema/DataObjectVersion.php new file mode 100644 index 000000000..51e72609e --- /dev/null +++ b/src/Version/Schema/DataObjectVersion.php @@ -0,0 +1,53 @@ +modificationDate; + } + + public function getPath(): string + { + return $this->path; + } + + public function isPublished(): bool + { + return $this->published; + } +} diff --git a/src/Version/Schema/Dimensions.php b/src/Version/Schema/Dimensions.php new file mode 100644 index 000000000..8e02eec09 --- /dev/null +++ b/src/Version/Schema/Dimensions.php @@ -0,0 +1,46 @@ +width; + } + + public function getHeight(): ?int + { + return $this->height; + } +} diff --git a/src/Version/Schema/DocumentVersion.php b/src/Version/Schema/DocumentVersion.php new file mode 100644 index 000000000..85aff8fd8 --- /dev/null +++ b/src/Version/Schema/DocumentVersion.php @@ -0,0 +1,53 @@ +modificationDate; + } + + public function getPath(): string + { + return $this->path; + } + + public function isPublished(): bool + { + return $this->published; + } +} diff --git a/src/Version/Schema/User.php b/src/Version/Schema/User.php new file mode 100644 index 000000000..04cdb8520 --- /dev/null +++ b/src/Version/Schema/User.php @@ -0,0 +1,46 @@ +id; + } + + public function getName(): ?string + { + return $this->name; + } +} diff --git a/src/Version/Schema/Version.php b/src/Version/Schema/Version.php new file mode 100644 index 000000000..6b2aa9a0c --- /dev/null +++ b/src/Version/Schema/Version.php @@ -0,0 +1,102 @@ +id; + } + + public function getCid(): int + { + return $this->cid; + } + + public function getCtype(): string + { + return $this->ctype; + } + + public function getNote(): string + { + return $this->note; + } + + public function getDate(): int + { + return $this->date; + } + + public function isPublic(): bool + { + return $this->public; + } + + public function getVersionCount(): int + { + return $this->versionCount; + } + + public function isAutosave(): bool + { + return $this->autosave; + } + + public function getUser(): User + { + return $this->user; + } + + public function getScheduled(): ?int + { + return $this->scheduled; + } +} diff --git a/tests/Unit/Version/Hydrator/AssetVersionHydratorTest.php b/tests/Unit/Version/Hydrator/AssetVersionHydratorTest.php new file mode 100644 index 000000000..bdf93c7df --- /dev/null +++ b/tests/Unit/Version/Hydrator/AssetVersionHydratorTest.php @@ -0,0 +1,45 @@ +setId(1); + $asset->setMimeType('application/pdf'); + $asset->setFilename('test.pdf'); + + $assetVersionHydrator = new AssetVersionHydrator(); + + // Status is not set properly + $this->expectException(ElementProcessingNotCompletedException::class); + $this->expectExceptionMessage('Element with ID 1 was not processed yet'); + $assetVersionHydrator->hydrate($asset); + } +}