From 0c0a4d65bfd3c7e6d14f3147521d8e2f6f0595b8 Mon Sep 17 00:00:00 2001 From: Nikolaos Dimopoulos Date: Wed, 29 Nov 2023 21:57:29 -0600 Subject: [PATCH] updating baseline file --- qodana.sarif.json | 3294 +++++++++++++++++++-------------------------- 1 file changed, 1365 insertions(+), 1929 deletions(-) diff --git a/qodana.sarif.json b/qodana.sarif.json index cf42d19bc..02265a9e0 100644 --- a/qodana.sarif.json +++ b/qodana.sarif.json @@ -153,13 +153,13 @@ "name": "MySQL" }, { - "id": "PHP/PHPDoc/Code style", - "name": "Code style", + "id": "PHP/Control flow", + "name": "Control flow", "relationships": [ { "target": { - "id": "PHP/PHPDoc", - "index": 2, + "id": "PHP", + "index": 0, "toolComponent": { "name": "QDPHP" } @@ -171,13 +171,13 @@ ] }, { - "id": "PHP/Control flow", - "name": "Control flow", + "id": "PHP/PHPDoc/Code style", + "name": "Code style", "relationships": [ { "target": { - "id": "PHP", - "index": 0, + "id": "PHP/PHPDoc", + "index": 2, "toolComponent": { "name": "QDPHP" } @@ -196,6 +196,10 @@ "id": "HTML", "name": "HTML" }, + { + "id": "Cucumber", + "name": "Cucumber" + }, { "id": "JavaScript and TypeScript/Unused symbols", "name": "Unused symbols", @@ -214,10 +218,6 @@ } ] }, - { - "id": "Cucumber", - "name": "Cucumber" - }, { "id": "JavaScript and TypeScript/Flow type checker", "name": "Flow type checker", @@ -335,13 +335,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": 7, + "id": "PHP", + "index": 0, "toolComponent": { "name": "QDPHP" } @@ -353,13 +353,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": 7, "toolComponent": { "name": "QDPHP" } @@ -530,6 +530,10 @@ } ] }, + { + "id": "XML", + "name": "XML" + }, { "id": "JavaScript and TypeScript/Control flow issues", "name": "Control flow issues", @@ -548,10 +552,6 @@ } ] }, - { - "id": "XML", - "name": "XML" - }, { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", "name": "Potentially undesirable code constructs", @@ -691,13 +691,13 @@ ] }, { - "id": "CSS/Probable bugs", - "name": "Probable bugs", + "id": "JavaScript and TypeScript/TypeScript", + "name": "TypeScript", "relationships": [ { "target": { - "id": "CSS", - "index": 32, + "id": "JavaScript and TypeScript", + "index": 7, "toolComponent": { "name": "QDPHP" } @@ -709,13 +709,13 @@ ] }, { - "id": "JavaScript and TypeScript/TypeScript", - "name": "TypeScript", + "id": "CSS/Probable bugs", + "name": "Probable bugs", "relationships": [ { "target": { - "id": "JavaScript and TypeScript", - "index": 7, + "id": "CSS", + "index": 32, "toolComponent": { "name": "QDPHP" } @@ -959,13 +959,13 @@ ] }, { - "id": "JavaScript and TypeScript/Function metrics", - "name": "Function metrics", + "id": "PHP/Quality tools", + "name": "Quality tools", "relationships": [ { "target": { - "id": "JavaScript and TypeScript", - "index": 7, + "id": "PHP", + "index": 0, "toolComponent": { "name": "QDPHP" } @@ -977,13 +977,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": 7, "toolComponent": { "name": "QDPHP" } @@ -1524,27 +1524,27 @@ ] }, { - "id": "PhpMissingDocCommentInspection", + "id": "PhpWriteAccessToReferencedArrayValueWithoutUnsetInspection", "shortDescription": { - "text": "Missing PHPDoc comment" + "text": "Write access to referenced array value without 'unset'" }, "fullDescription": { - "text": "Reports non-fully typed elements without a PHPDoc comment or with a PHPDoc comment only containing the '@noinspection' tag. You can use the Enforce PHPDoc Comment inspection to report fully typed elements.", - "markdown": "Reports non-fully typed elements without a PHPDoc comment or with a PHPDoc comment only containing the `@noinspection` tag.\n\nYou can use the *Enforce PHPDoc Comment* inspection to report fully typed elements." + "text": "Reports the write access expressions on variables that are still referencing the array value previously used in a 'foreach' statement. It is recommended to destroy such references by using 'unset'. See foreach (php.net) and unset (php.net) for details.", + "markdown": "Reports the write access expressions on variables that are still referencing the array value previously used in a `foreach` statement.\n\n\nIt is recommended to destroy such references by using `unset`.\n\n\nSee [foreach (php.net)](https://www.php.net/manual/en/control-structures.foreach.php) and [unset (php.net)](https://www.php.net/manual/en/function.unset.php) for details." }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "warning", "parameters": { - "suppressToolId": "PhpMissingDocCommentInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "PhpWriteAccessToReferencedArrayValueWithoutUnsetInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "PHP/PHPDoc/Code style", + "id": "PHP/Control flow", "index": 11, "toolComponent": { "name": "QDPHP" @@ -1557,27 +1557,27 @@ ] }, { - "id": "PhpWriteAccessToReferencedArrayValueWithoutUnsetInspection", + "id": "PhpMissingDocCommentInspection", "shortDescription": { - "text": "Write access to referenced array value without 'unset'" + "text": "Missing PHPDoc comment" }, "fullDescription": { - "text": "Reports the write access expressions on variables that are still referencing the array value previously used in a 'foreach' statement. It is recommended to destroy such references by using 'unset'. See foreach (php.net) and unset (php.net) for details.", - "markdown": "Reports the write access expressions on variables that are still referencing the array value previously used in a `foreach` statement.\n\n\nIt is recommended to destroy such references by using `unset`.\n\n\nSee [foreach (php.net)](https://www.php.net/manual/en/control-structures.foreach.php) and [unset (php.net)](https://www.php.net/manual/en/function.unset.php) for details." + "text": "Reports non-fully typed elements without a PHPDoc comment or with a PHPDoc comment only containing the '@noinspection' tag. You can use the Enforce PHPDoc Comment inspection to report fully typed elements.", + "markdown": "Reports non-fully typed elements without a PHPDoc comment or with a PHPDoc comment only containing the `@noinspection` tag.\n\nYou can use the *Enforce PHPDoc Comment* inspection to report fully typed elements." }, "defaultConfiguration": { - "enabled": true, - "level": "warning", + "enabled": false, + "level": "note", "parameters": { - "suppressToolId": "PhpWriteAccessToReferencedArrayValueWithoutUnsetInspection", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "PhpMissingDocCommentInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Control flow", + "id": "PHP/PHPDoc/Code style", "index": 12, "toolComponent": { "name": "QDPHP" @@ -1710,7 +1710,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -1875,7 +1875,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -1908,7 +1908,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -2172,7 +2172,7 @@ { "target": { "id": "PHP/PHPDoc/Code style", - "index": 11, + "index": 12, "toolComponent": { "name": "QDPHP" } @@ -2601,7 +2601,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -2997,7 +2997,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -3240,28 +3240,28 @@ ] }, { - "id": "PhpUsageOfSilenceOperatorInspection", + "id": "PhpUndefinedVariableInspection", "shortDescription": { - "text": "Usage of a silence operator" + "text": "Undefined variable" }, "fullDescription": { - "text": "Reports the usages of the silence operator ('@'), which is highly discouraged. See Error Control Operators (php.net) for details.", - "markdown": "Reports the usages of the silence operator (`@`), which is highly discouraged.\n\nSee [Error Control Operators (php.net)](https://www.php.net/manual/en/language.operators.errorcontrol.php) for details." + "text": "Produces two types of warnings: Undefined variable: the variable's definition is not found in the project files, configured include paths, or among the PHP predefined variables. Variable might have not been defined: there are one or more paths to reach the line with the variable usage without defining it. Use the options below to customize the inspection: Report that variable is probably undefined: clear the checkbox to disable the Variable might have not been defined warnings. Enable inspection in global space: by default, the inspection is enabled for global space. Clear the checkbox to only report undefined variables from functions' local scope. Search for variable's definition outside the current file: if selected, the IDE reports a global variable as undefined only in case there are no 'include' or 'require' statements in the current file and the variable's definition cannot be found in the project. Note that the IDE does not examine the actual content of included files but only checks the presence of 'include' or 'require' statements. Otherwise, if not selected, the IDE searches for the variable's definition only in the current file and ignores the 'include' or 'require' statements if any.", + "markdown": "Produces two types of warnings:\n\n* *Undefined variable*: the variable's definition is not found in the project files, configured include paths, or among the PHP predefined variables.\n* *Variable might have not been defined*: there are one or more paths to reach the line with the variable usage without defining it.\n\n\nUse the options below to customize the inspection:\n\n* **Report that variable is probably undefined** : clear the checkbox to disable the *Variable might have not been defined* warnings.\n* **Enable inspection in global space**: by default, the inspection is enabled for global space. Clear the checkbox to only report undefined variables from functions' local scope.\n*\n **Search for variable's definition outside the current file** : if selected, the IDE reports a global variable as undefined only in case there are no `include` or `require` statements in the current file and the variable's definition cannot be found in the project. Note that the IDE does not examine the actual content of included files but only checks the presence of `include` or `require` statements.\n\n\n Otherwise, if not selected, the IDE searches for the variable's definition only in the current file and ignores the `include` or `require` statements if any." }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "error", "parameters": { - "suppressToolId": "PhpUsageOfSilenceOperatorInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "PhpUndefinedVariableInspection", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ { "target": { - "id": "PHP/Code smell", - "index": 1, + "id": "PHP/Undefined symbols", + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -3273,28 +3273,28 @@ ] }, { - "id": "PhpUndefinedVariableInspection", + "id": "PhpUsageOfSilenceOperatorInspection", "shortDescription": { - "text": "Undefined variable" + "text": "Usage of a silence operator" }, "fullDescription": { - "text": "Produces two types of warnings: Undefined variable: the variable's definition is not found in the project files, configured include paths, or among the PHP predefined variables. Variable might have not been defined: there are one or more paths to reach the line with the variable usage without defining it. Use the options below to customize the inspection: Report that variable is probably undefined: clear the checkbox to disable the Variable might have not been defined warnings. Enable inspection in global space: by default, the inspection is enabled for global space. Clear the checkbox to only report undefined variables from functions' local scope. Search for variable's definition outside the current file: if selected, the IDE reports a global variable as undefined only in case there are no 'include' or 'require' statements in the current file and the variable's definition cannot be found in the project. Note that the IDE does not examine the actual content of included files but only checks the presence of 'include' or 'require' statements. Otherwise, if not selected, the IDE searches for the variable's definition only in the current file and ignores the 'include' or 'require' statements if any.", - "markdown": "Produces two types of warnings:\n\n* *Undefined variable*: the variable's definition is not found in the project files, configured include paths, or among the PHP predefined variables.\n* *Variable might have not been defined*: there are one or more paths to reach the line with the variable usage without defining it.\n\n\nUse the options below to customize the inspection:\n\n* **Report that variable is probably undefined** : clear the checkbox to disable the *Variable might have not been defined* warnings.\n* **Enable inspection in global space**: by default, the inspection is enabled for global space. Clear the checkbox to only report undefined variables from functions' local scope.\n*\n **Search for variable's definition outside the current file** : if selected, the IDE reports a global variable as undefined only in case there are no `include` or `require` statements in the current file and the variable's definition cannot be found in the project. Note that the IDE does not examine the actual content of included files but only checks the presence of `include` or `require` statements.\n\n\n Otherwise, if not selected, the IDE searches for the variable's definition only in the current file and ignores the `include` or `require` statements if any." + "text": "Reports the usages of the silence operator ('@'), which is highly discouraged. See Error Control Operators (php.net) for details.", + "markdown": "Reports the usages of the silence operator (`@`), which is highly discouraged.\n\nSee [Error Control Operators (php.net)](https://www.php.net/manual/en/language.operators.errorcontrol.php) for details." }, "defaultConfiguration": { - "enabled": true, - "level": "error", + "enabled": false, + "level": "note", "parameters": { - "suppressToolId": "PhpUndefinedVariableInspection", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "PhpUsageOfSilenceOperatorInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Undefined symbols", - "index": 26, + "id": "PHP/Code smell", + "index": 1, "toolComponent": { "name": "QDPHP" } @@ -3525,7 +3525,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -3723,7 +3723,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -4218,7 +4218,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -4416,7 +4416,7 @@ { "target": { "id": "PHP/PHPDoc/Code style", - "index": 11, + "index": 12, "toolComponent": { "name": "QDPHP" } @@ -4593,19 +4593,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" } @@ -4613,8 +4613,8 @@ "relationships": [ { "target": { - "id": "PHP/Code style", - "index": 3, + "id": "PHP/PHPDoc/Code style", + "index": 12, "toolComponent": { "name": "QDPHP" } @@ -4626,19 +4626,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" } @@ -4646,8 +4646,8 @@ "relationships": [ { "target": { - "id": "PHP/PHPDoc/Code style", - "index": 11, + "id": "PHP/Code style", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -4779,7 +4779,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -5142,7 +5142,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -5154,28 +5154,28 @@ ] }, { - "id": "PhpCSFixerValidationInspection", + "id": "PhpClosureCanBeConvertedToShortArrowFunctionInspection", "shortDescription": { - "text": "PHP CS Fixer validation" + "text": "Closure can be converted to arrow function" }, "fullDescription": { - "text": "Reports coding style problems detected by PHP CS Fixer. The inspection requires PHP CS Fixer to be properly installed and set up in the IDE under Settings | PHP | Quality Tools | PHP CS Fixer. To learn more about installing PHP CS Fixer, see PHP-CS-Fixer installation (GitHub).", - "markdown": "Reports coding style problems detected by PHP CS Fixer.\n\n\nThe inspection requires PHP CS Fixer to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| PHP CS Fixer](settings://settings.php.quality.tools?CS%20Fixer).\n\n\nTo learn more about installing PHP CS Fixer, see [PHP-CS-Fixer installation (GitHub)](https://github.com/FriendsOfPHP/PHP-CS-Fixer#installation)." + "text": "Reports the anonymous functions that can be transformed to short arrow functions. Support for short arrow functions is available since PHP 7.4. See PHP RFC: Arrow Functions 2.0 (php.net) for details.", + "markdown": "Reports the anonymous functions that can be transformed to short arrow functions. Support for short arrow functions is available since PHP 7.4.\n\n\nSee [PHP RFC: Arrow Functions 2.0 (php.net)](https://wiki.php.net/rfc/arrow_functions_v2) for details." }, "defaultConfiguration": { "enabled": false, "level": "note", "parameters": { - "suppressToolId": "PhpCSFixerValidationInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "PhpClosureCanBeConvertedToShortArrowFunctionInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" } }, "relationships": [ { "target": { - "id": "PHP/Quality tools", - "index": 70, + "id": "PHP/Code style", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -5187,28 +5187,28 @@ ] }, { - "id": "PhpClosureCanBeConvertedToShortArrowFunctionInspection", + "id": "PhpCSFixerValidationInspection", "shortDescription": { - "text": "Closure can be converted to arrow function" + "text": "PHP CS Fixer validation" }, "fullDescription": { - "text": "Reports the anonymous functions that can be transformed to short arrow functions. Support for short arrow functions is available since PHP 7.4. See PHP RFC: Arrow Functions 2.0 (php.net) for details.", - "markdown": "Reports the anonymous functions that can be transformed to short arrow functions. Support for short arrow functions is available since PHP 7.4.\n\n\nSee [PHP RFC: Arrow Functions 2.0 (php.net)](https://wiki.php.net/rfc/arrow_functions_v2) for details." + "text": "Reports coding style problems detected by PHP CS Fixer. The inspection requires PHP CS Fixer to be properly installed and set up in the IDE under Settings | PHP | Quality Tools | PHP CS Fixer. To learn more about installing PHP CS Fixer, see PHP-CS-Fixer installation (GitHub).", + "markdown": "Reports coding style problems detected by PHP CS Fixer.\n\n\nThe inspection requires PHP CS Fixer to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| PHP CS Fixer](settings://settings.php.quality.tools?CS%20Fixer).\n\n\nTo learn more about installing PHP CS Fixer, see [PHP-CS-Fixer installation (GitHub)](https://github.com/FriendsOfPHP/PHP-CS-Fixer#installation)." }, "defaultConfiguration": { "enabled": false, "level": "note", "parameters": { - "suppressToolId": "PhpClosureCanBeConvertedToShortArrowFunctionInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" + "suppressToolId": "PhpCSFixerValidationInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Code style", - "index": 3, + "id": "PHP/Quality tools", + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -5285,39 +5285,6 @@ } ] }, - { - "id": "PhpUnitUndefinedDataProviderInspection", - "shortDescription": { - "text": "Undefined PHPUnit data provider" - }, - "fullDescription": { - "text": "Reports the references to functions/methods in the '@dataProvider' PHPDoc tag that are not resolved. Note that when resolving 'dataProvider', PHPUnit doesn't take 'use' statements into account.", - "markdown": "Reports the references to functions/methods in the `@dataProvider` PHPDoc tag that are not resolved.\n\nNote that when resolving `dataProvider`, PHPUnit doesn't take `use` statements into account." - }, - "defaultConfiguration": { - "enabled": true, - "level": "warning", - "parameters": { - "suppressToolId": "PhpUnitUndefinedDataProviderInspection", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" - } - }, - "relationships": [ - { - "target": { - "id": "PHP/PHPUnit", - "index": 20, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, { "id": "PhpIncludeInspection", "shortDescription": { @@ -5351,6 +5318,39 @@ } ] }, + { + "id": "PhpUnitUndefinedDataProviderInspection", + "shortDescription": { + "text": "Undefined PHPUnit data provider" + }, + "fullDescription": { + "text": "Reports the references to functions/methods in the '@dataProvider' PHPDoc tag that are not resolved. Note that when resolving 'dataProvider', PHPUnit doesn't take 'use' statements into account.", + "markdown": "Reports the references to functions/methods in the `@dataProvider` PHPDoc tag that are not resolved.\n\nNote that when resolving `dataProvider`, PHPUnit doesn't take `use` statements into account." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PhpUnitUndefinedDataProviderInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "PHP/PHPUnit", + "index": 20, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "PhpFieldAssignmentTypeMismatchInspection", "shortDescription": { @@ -5637,7 +5637,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -5802,7 +5802,7 @@ { "target": { "id": "PHP/PHPDoc/Code style", - "index": 11, + "index": 12, "toolComponent": { "name": "QDPHP" } @@ -6408,19 +6408,19 @@ ] }, { - "id": "PhpDeprecationInspection", + "id": "MessDetectorValidationInspection", "shortDescription": { - "text": "Deprecated" + "text": "PHP Mess Detector validation" }, "fullDescription": { - "text": "Reports the usages of deprecated entities. In most cases, such usages should be removed or replaced with other constructs.", - "markdown": "Reports the usages of deprecated entities.\n\n\nIn most cases, such usages should be removed or replaced with other constructs." + "text": "Reports coding style problems detected by PHP Mess Detector. The inspection requires PHP Mess Detector to be properly installed and set up in the IDE under Settings | PHP | Quality Tools | Mess Detector. To learn more about installing PHP Mess Detector, see PHP Mess Detector installation (phpmd.org) for details. You can use a predefined set of rules or add your own by specifying valid ruleset.xml files. See the rules index (phpmd.org) and How to create a custom rule set (phpmd.org) for details.", + "markdown": "Reports coding style problems detected by PHP Mess Detector.\n\n\nThe inspection requires PHP Mess Detector to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| Mess Detector](settings://settings.php.quality.tools?Mess%20Detector).\n\n\nTo learn more about installing PHP Mess Detector, see [PHP Mess Detector installation (phpmd.org)](https://phpmd.org/download/index.html) for details.\n\n\nYou can use a predefined set of rules or add your own by specifying valid *ruleset.xml* files. See the [rules index (phpmd.org)](https://phpmd.org/rules/index.html) and [How to create a custom rule set (phpmd.org)](https://phpmd.org/documentation/creating-a-ruleset.html) for details." }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "note", "parameters": { - "suppressToolId": "PhpDeprecationInspection", + "suppressToolId": "MessDetectorValidationInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -6428,8 +6428,8 @@ "relationships": [ { "target": { - "id": "PHP/General", - "index": 6, + "id": "PHP/Quality tools", + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -6441,19 +6441,19 @@ ] }, { - "id": "MessDetectorValidationInspection", + "id": "PhpDeprecationInspection", "shortDescription": { - "text": "PHP Mess Detector validation" + "text": "Deprecated" }, "fullDescription": { - "text": "Reports coding style problems detected by PHP Mess Detector. The inspection requires PHP Mess Detector to be properly installed and set up in the IDE under Settings | PHP | Quality Tools | Mess Detector. To learn more about installing PHP Mess Detector, see PHP Mess Detector installation (phpmd.org) for details. You can use a predefined set of rules or add your own by specifying valid ruleset.xml files. See the rules index (phpmd.org) and How to create a custom rule set (phpmd.org) for details.", - "markdown": "Reports coding style problems detected by PHP Mess Detector.\n\n\nThe inspection requires PHP Mess Detector to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| Mess Detector](settings://settings.php.quality.tools?Mess%20Detector).\n\n\nTo learn more about installing PHP Mess Detector, see [PHP Mess Detector installation (phpmd.org)](https://phpmd.org/download/index.html) for details.\n\n\nYou can use a predefined set of rules or add your own by specifying valid *ruleset.xml* files. See the [rules index (phpmd.org)](https://phpmd.org/rules/index.html) and [How to create a custom rule set (phpmd.org)](https://phpmd.org/documentation/creating-a-ruleset.html) for details." + "text": "Reports the usages of deprecated entities. In most cases, such usages should be removed or replaced with other constructs.", + "markdown": "Reports the usages of deprecated entities.\n\n\nIn most cases, such usages should be removed or replaced with other constructs." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "note", "parameters": { - "suppressToolId": "MessDetectorValidationInspection", + "suppressToolId": "PhpDeprecationInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -6461,8 +6461,8 @@ "relationships": [ { "target": { - "id": "PHP/Quality tools", - "index": 70, + "id": "PHP/General", + "index": 6, "toolComponent": { "name": "QDPHP" } @@ -6737,39 +6737,6 @@ } ] }, - { - "id": "PhpConcatenationWithEmptyStringCanBeInlinedInspection", - "shortDescription": { - "text": "Concatenation to empty string can be merged with assignment" - }, - "fullDescription": { - "text": "Reports the '.=' concatenation assignments performed right after assignment to an empty string literal. Such assignments can be merged together.", - "markdown": "Reports the `.=` concatenation assignments performed right after assignment to an empty string literal. Such assignments can be merged together." - }, - "defaultConfiguration": { - "enabled": true, - "level": "note", - "parameters": { - "suppressToolId": "PhpConcatenationWithEmptyStringCanBeInlinedInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" - } - }, - "relationships": [ - { - "target": { - "id": "PHP/Code smell", - "index": 1, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, { "id": "PhpDisabledQualityToolComposerInspection", "shortDescription": { @@ -6804,19 +6771,19 @@ ] }, { - "id": "PhpArrayIndexResetIsUnnecessaryInspection", + "id": "PhpConcatenationWithEmptyStringCanBeInlinedInspection", "shortDescription": { - "text": "Array internal pointer reset is unnecessary" + "text": "Concatenation to empty string can be merged with assignment" }, "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 '.=' concatenation assignments performed right after assignment to an empty string literal. Such assignments can be merged together.", + "markdown": "Reports the `.=` concatenation assignments performed right after assignment to an empty string literal. Such assignments can be merged together." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpArrayIndexResetIsUnnecessaryInspection", + "suppressToolId": "PhpConcatenationWithEmptyStringCanBeInlinedInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -6902,6 +6869,39 @@ } ] }, + { + "id": "PhpArrayIndexResetIsUnnecessaryInspection", + "shortDescription": { + "text": "Array internal pointer reset is unnecessary" + }, + "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." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PhpArrayIndexResetIsUnnecessaryInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "PHP/Code smell", + "index": 1, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "PhpApplyingEmptyIndexOperatorOnStringInspection", "shortDescription": { @@ -7089,7 +7089,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -7188,7 +7188,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -7386,7 +7386,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -7464,19 +7464,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" } @@ -7484,8 +7484,8 @@ "relationships": [ { "target": { - "id": "PHP/Code style", - "index": 3, + "id": "PHP/PHPDoc", + "index": 2, "toolComponent": { "name": "QDPHP" } @@ -7497,19 +7497,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" } @@ -7517,8 +7517,8 @@ "relationships": [ { "target": { - "id": "PHP/PHPDoc", - "index": 2, + "id": "PHP/Code style", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -7617,7 +7617,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 70, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -7914,7 +7914,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -8124,28 +8124,28 @@ ] }, { - "id": "PhpRandArgumentsInReverseOrderInspection", + "id": "PhpAssignmentReplaceableWithPrefixExpressionInspection", "shortDescription": { - "text": "Misordered 'rand' function arguments" + "text": "Assignment can be replaced with increment or decrement" }, "fullDescription": { - "text": "Reports the 'rand($min, $max)' family function calls in which the 'max' argument is less than 'min'. For such functions as 'mt_rand' and 'random_int', this will result in a fatal error.", - "markdown": "Reports the `rand($min, $max)` family function calls in which the `max` argument is less than `min`. For such functions as `mt_rand` and `random_int`, this will result in a fatal error." + "text": "Reports the assignments that can be replaced with incrementing ('++') or decrementing ('--') operations.", + "markdown": "Reports the assignments that can be replaced with incrementing (`++`) or decrementing (`--`) operations." }, "defaultConfiguration": { - "enabled": true, - "level": "error", + "enabled": false, + "level": "note", "parameters": { - "suppressToolId": "PhpRandArgumentsInReverseOrderInspection", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "PhpAssignmentReplaceableWithPrefixExpressionInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" } }, "relationships": [ { "target": { - "id": "PHP/Probable bugs", - "index": 9, + "id": "PHP/Replaceable assignments", + "index": 82, "toolComponent": { "name": "QDPHP" } @@ -8157,28 +8157,28 @@ ] }, { - "id": "PhpAssignmentReplaceableWithPrefixExpressionInspection", + "id": "PhpRandArgumentsInReverseOrderInspection", "shortDescription": { - "text": "Assignment can be replaced with increment or decrement" + "text": "Misordered 'rand' function arguments" }, "fullDescription": { - "text": "Reports the assignments that can be replaced with incrementing ('++') or decrementing ('--') operations.", - "markdown": "Reports the assignments that can be replaced with incrementing (`++`) or decrementing (`--`) operations." + "text": "Reports the 'rand($min, $max)' family function calls in which the 'max' argument is less than 'min'. For such functions as 'mt_rand' and 'random_int', this will result in a fatal error.", + "markdown": "Reports the `rand($min, $max)` family function calls in which the `max` argument is less than `min`. For such functions as `mt_rand` and `random_int`, this will result in a fatal error." }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "error", "parameters": { - "suppressToolId": "PhpAssignmentReplaceableWithPrefixExpressionInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" + "suppressToolId": "PhpRandArgumentsInReverseOrderInspection", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ { "target": { - "id": "PHP/Replaceable assignments", - "index": 82, + "id": "PHP/Probable bugs", + "index": 9, "toolComponent": { "name": "QDPHP" } @@ -8574,7 +8574,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -8651,39 +8651,6 @@ } ] }, - { - "id": "PhpStatementWithoutBracesInspection", - "shortDescription": { - "text": "Control statement body without braces" - }, - "fullDescription": { - "text": "Reports the control structures (such as loops or conditionals) whose bodies are not enclosed in braces. See Control structures (php.net) for details.", - "markdown": "Reports the control structures (such as loops or conditionals) whose bodies are not enclosed in braces.\n\n\nSee [Control structures (php.net)](https://www.php.net/manual/en/language.control-structures.php) for details." - }, - "defaultConfiguration": { - "enabled": false, - "level": "note", - "parameters": { - "suppressToolId": "PhpStatementWithoutBracesInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" - } - }, - "relationships": [ - { - "target": { - "id": "PHP/Code style", - "index": 3, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, { "id": "PhpPregMatchRedundantClosureInspection", "shortDescription": { @@ -8717,6 +8684,39 @@ } ] }, + { + "id": "PhpStatementWithoutBracesInspection", + "shortDescription": { + "text": "Control statement body without braces" + }, + "fullDescription": { + "text": "Reports the control structures (such as loops or conditionals) whose bodies are not enclosed in braces. See Control structures (php.net) for details.", + "markdown": "Reports the control structures (such as loops or conditionals) whose bodies are not enclosed in braces.\n\n\nSee [Control structures (php.net)](https://www.php.net/manual/en/language.control-structures.php) for details." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "PhpStatementWithoutBracesInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" + } + }, + "relationships": [ + { + "target": { + "id": "PHP/Code style", + "index": 3, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "PhpShortOpenEchoTagInspection", "shortDescription": { @@ -9168,7 +9168,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -9300,7 +9300,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -9510,28 +9510,28 @@ ] }, { - "id": "PhpIncorrectMagicMethodSignatureInspection", + "id": "PhpUnitMissingTargetForTestInspection", "shortDescription": { - "text": "Incorrect magic method signature" + "text": "Missing target element for PHPUnit test" }, "fullDescription": { - "text": "Reports incompatible magic methods signatures. See RFC: Ensure correct signatures of magic methods (php.net) for details.", - "markdown": "Reports incompatible magic methods signatures.\n\n\nSee [RFC: Ensure correct signatures of magic methods (php.net)](https://wiki.php.net/rfc/magic-methods-signature) for details." + "text": "Reports the test classes and methods, for which no corresponding production classes or methods were found.", + "markdown": "Reports the test classes and methods, for which no corresponding production classes or methods were found." }, "defaultConfiguration": { - "enabled": true, - "level": "error", + "enabled": false, + "level": "note", "parameters": { - "suppressToolId": "PhpIncorrectMagicMethodSignatureInspection", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "PhpUnitMissingTargetForTestInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" } }, "relationships": [ { "target": { - "id": "PHP/General", - "index": 6, + "id": "PHP/PHPUnit", + "index": 20, "toolComponent": { "name": "QDPHP" } @@ -9543,28 +9543,28 @@ ] }, { - "id": "PhpUnitMissingTargetForTestInspection", + "id": "PhpIncorrectMagicMethodSignatureInspection", "shortDescription": { - "text": "Missing target element for PHPUnit test" + "text": "Incorrect magic method signature" }, "fullDescription": { - "text": "Reports the test classes and methods, for which no corresponding production classes or methods were found.", - "markdown": "Reports the test classes and methods, for which no corresponding production classes or methods were found." + "text": "Reports incompatible magic methods signatures. See RFC: Ensure correct signatures of magic methods (php.net) for details.", + "markdown": "Reports incompatible magic methods signatures.\n\n\nSee [RFC: Ensure correct signatures of magic methods (php.net)](https://wiki.php.net/rfc/magic-methods-signature) for details." }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "error", "parameters": { - "suppressToolId": "PhpUnitMissingTargetForTestInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" + "suppressToolId": "PhpIncorrectMagicMethodSignatureInspection", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ { "target": { - "id": "PHP/PHPUnit", - "index": 20, + "id": "PHP/General", + "index": 6, "toolComponent": { "name": "QDPHP" } @@ -9795,7 +9795,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -9828,7 +9828,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -10521,7 +10521,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -10719,7 +10719,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -10830,19 +10830,19 @@ ] }, { - "id": "PhpRegExpRedundantModifierInspection", + "id": "PhpAttributeCanBeAddedToOverriddenMemberInspection", "shortDescription": { - "text": "Redundant modifier" + "text": "Attribute can be added to overriding member " }, "fullDescription": { - "text": "Reports the 'i' (case insensitivity) modifiers that are used in regular expression patterns containing no letters. Such modifiers are redundant and can be safely removed.", - "markdown": "Reports the `i` (case insensitivity) modifiers that are used in regular expression patterns containing no letters. Such modifiers are redundant and can be safely removed." + "text": "Reports the methods' and parameters' attributes that can be propagated to overriding methods/parameters. See Attributes (php.net) for details.", + "markdown": "Reports the methods' and parameters' attributes that can be propagated to overriding methods/parameters.\n\n\nSee [Attributes (php.net)](https://wiki.php.net/rfc/attributes_v2) for details." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpRegExpRedundantModifierInspection", + "suppressToolId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -10850,8 +10850,8 @@ "relationships": [ { "target": { - "id": "PHP/Regular expressions", - "index": 68, + "id": "PHP/Attributes", + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -10863,19 +10863,19 @@ ] }, { - "id": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "id": "PhpRegExpRedundantModifierInspection", "shortDescription": { - "text": "Attribute can be added to overriding member " + "text": "Redundant modifier" }, "fullDescription": { - "text": "Reports the methods' and parameters' attributes that can be propagated to overriding methods/parameters. See Attributes (php.net) for details.", - "markdown": "Reports the methods' and parameters' attributes that can be propagated to overriding methods/parameters.\n\n\nSee [Attributes (php.net)](https://wiki.php.net/rfc/attributes_v2) for details." + "text": "Reports the 'i' (case insensitivity) modifiers that are used in regular expression patterns containing no letters. Such modifiers are redundant and can be safely removed.", + "markdown": "Reports the `i` (case insensitivity) modifiers that are used in regular expression patterns containing no letters. Such modifiers are redundant and can be safely removed." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "suppressToolId": "PhpRegExpRedundantModifierInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -10883,8 +10883,8 @@ "relationships": [ { "target": { - "id": "PHP/Attributes", - "index": 45, + "id": "PHP/Regular expressions", + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -11049,7 +11049,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -11841,7 +11841,7 @@ { "target": { "id": "PHP/Control flow", - "index": 12, + "index": 11, "toolComponent": { "name": "QDPHP" } @@ -12039,7 +12039,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 70, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -12105,7 +12105,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 26, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -15168,7 +15168,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -15432,7 +15432,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -15531,7 +15531,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -15564,7 +15564,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -15630,7 +15630,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -15696,7 +15696,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -15828,7 +15828,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -15993,7 +15993,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -16092,7 +16092,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -16455,7 +16455,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -16587,7 +16587,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -16719,7 +16719,7 @@ { "target": { "id": "XML", - "index": 40, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -16863,19 +16863,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": true, "level": "warning", "parameters": { - "suppressToolId": "RegExpRepeatedSpace", + "suppressToolId": "RegExpDuplicateAlternationBranch", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -16896,19 +16896,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": true, "level": "warning", "parameters": { - "suppressToolId": "RegExpDuplicateAlternationBranch", + "suppressToolId": "RegExpRepeatedSpace", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -16969,6 +16969,249 @@ ], "isComprehensive": false }, + { + "name": "gherkin", + "version": "232.9881", + "rules": [ + { + "id": "GherkinScenarioToScenarioOutline", + "shortDescription": { + "text": "Scenario with Examples section" + }, + "fullDescription": { + "text": "Reports Gherkin scenarios that contain an 'Examples' section. Use the quick-fix to convert 'Scenario' to 'Scenario Outline'.", + "markdown": "Reports Gherkin scenarios that contain an `Examples` section.\n\nUse the quick-fix to convert `Scenario` to `Scenario Outline`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "GherkinScenarioToScenarioOutline", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 15, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CucumberTableInspection", + "shortDescription": { + "text": "Unused or missing columns in Cucumber tables" + }, + "fullDescription": { + "text": "Reports tables in 'Examples' sections in Cucumber .feature files with unused or missing columns.", + "markdown": "Reports tables in `Examples` sections in Cucumber .feature files with unused or missing columns." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "CucumberTableInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 15, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GherkinBrokenTableInspection", + "shortDescription": { + "text": "Gherkin table is broken" + }, + "fullDescription": { + "text": "Reports a table if there is at least one row with the number of cells different from the number of cells in the table header.", + "markdown": "Reports a table if there is at least one row with the number of cells different from the number of cells in the table header." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "GherkinBrokenTableInspection", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 15, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GherkinMisplacedBackground", + "shortDescription": { + "text": "Misplaced background section" + }, + "fullDescription": { + "text": "Reports 'Background' sections that are located incorrectly. The 'Background' section must be located before the 'Scenario' section.", + "markdown": "Reports `Background` sections that are located incorrectly. The `Background` section must be located before the `Scenario` section." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "GherkinMisplacedBackground", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 15, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CucumberMissedExamples", + "shortDescription": { + "text": "Missing examples section" + }, + "fullDescription": { + "text": "Reports scenario outlines in Cucumber .feature files that do not have the 'Examples' section. Use the quick-fix to automatically create the 'Examples' section with a pre-filled table header.", + "markdown": "Reports scenario outlines in Cucumber .feature files that do not have the `Examples` section.\n\nUse the quick-fix to automatically create the `Examples` section with a pre-filled table header." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "CucumberMissedExamples", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 15, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CucumberUndefinedStep", + "shortDescription": { + "text": "Undefined step" + }, + "fullDescription": { + "text": "Reports steps in Cucumber (or some other Gherkin) .feature files that do not have matching step definitions. Use the quick-fix to automatically create a new step definition.", + "markdown": "Reports steps in Cucumber (or some other Gherkin) .feature files that do not have matching step definitions.\n\nUse the quick-fix to automatically create a new step definition." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "CucumberUndefinedStep", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 15, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CucumberExamplesColon", + "shortDescription": { + "text": "Missing ':' after examples keyword" + }, + "fullDescription": { + "text": "Reports 'Examples' sections in Cucumber .feature files if they do not have ':' after the 'Examples' keyword.", + "markdown": "Reports `Examples` sections in Cucumber .feature files if they do not have ':' after the `Examples` keyword." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "CucumberExamplesColon", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 15, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, { "name": "JavaScript", "version": "232.9881", @@ -16995,7 +17238,7 @@ { "target": { "id": "JavaScript and TypeScript/Unused symbols", - "index": 15, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -17160,7 +17403,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 25, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -17424,7 +17667,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -17655,7 +17898,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 25, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -17688,7 +17931,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -17820,7 +18063,7 @@ { "target": { "id": "JavaScript and TypeScript/Unused symbols", - "index": 15, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -17853,7 +18096,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 25, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -18030,28 +18273,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": 53, + "id": "JavaScript and TypeScript/Async code and promises", + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -18063,28 +18306,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": 55, + "id": "JavaScript and TypeScript/Switch statement issues", + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -18216,7 +18459,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -18414,7 +18657,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 25, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -18525,19 +18768,19 @@ ] }, { - "id": "EmptyTryBlockJS", + "id": "ES6ClassMemberInitializationOrder", "shortDescription": { - "text": "Empty 'try' block" + "text": "Use of possibly unassigned property in a static initializer" }, "fullDescription": { - "text": "Reports an empty 'try' block, which usually indicates an error.", - "markdown": "Reports an empty `try` block, which usually indicates an error." + "text": "Reports a class member initializer which references another non-hoisted class member while the latter may be not initialized yet. Initialization of class members happens consequently for fields, so a field cannot reference another field that is declared later.", + "markdown": "Reports a class member initializer which references another non-hoisted class member while the latter may be not initialized yet. \n\nInitialization of class members happens consequently for fields, so a field cannot reference another field that is declared later." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "EmptyTryBlockJS", + "suppressToolId": "ES6ClassMemberInitializationOrder", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -18545,8 +18788,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Try statement issues", - "index": 35, + "id": "JavaScript and TypeScript/General", + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -18558,19 +18801,19 @@ ] }, { - "id": "ES6ClassMemberInitializationOrder", + "id": "EmptyTryBlockJS", "shortDescription": { - "text": "Use of possibly unassigned property in a static initializer" + "text": "Empty 'try' block" }, "fullDescription": { - "text": "Reports a class member initializer which references another non-hoisted class member while the latter may be not initialized yet. Initialization of class members happens consequently for fields, so a field cannot reference another field that is declared later.", - "markdown": "Reports a class member initializer which references another non-hoisted class member while the latter may be not initialized yet. \n\nInitialization of class members happens consequently for fields, so a field cannot reference another field that is declared later." + "text": "Reports an empty 'try' block, which usually indicates an error.", + "markdown": "Reports an empty `try` block, which usually indicates an error." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "ES6ClassMemberInitializationOrder", + "suppressToolId": "EmptyTryBlockJS", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -18578,8 +18821,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/General", - "index": 24, + "id": "JavaScript and TypeScript/Try statement issues", + "index": 35, "toolComponent": { "name": "QDPHP" } @@ -18711,7 +18954,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -18777,7 +19020,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -18843,7 +19086,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -18876,7 +19119,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -18909,7 +19152,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -19008,7 +19251,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -19272,7 +19515,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -19338,7 +19581,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -19371,7 +19614,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 69, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -19437,7 +19680,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 69, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -19602,7 +19845,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -19635,7 +19878,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -19800,7 +20043,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -19965,7 +20208,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -20043,19 +20286,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" } @@ -20063,8 +20306,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "id": "JavaScript and TypeScript/Control flow issues", + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -20076,19 +20319,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" } @@ -20096,8 +20339,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "id": "JavaScript and TypeScript/TypeScript", + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -20262,7 +20505,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -20394,7 +20637,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -20439,19 +20682,19 @@ ] }, { - "id": "NonBlockStatementBodyJS", + "id": "JSValidateJSDoc", "shortDescription": { - "text": "Statement body without braces" + "text": "Syntax errors and unresolved references in JSDoc" }, "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 a syntax discrepancy in a documentation comment.", + "markdown": "Reports a syntax discrepancy in a documentation comment." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "NonBlockStatementBodyJS", + "suppressToolId": "JSValidateJSDoc", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -20459,8 +20702,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Code style issues", - "index": 47, + "id": "JavaScript and TypeScript/General", + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -20493,7 +20736,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -20505,19 +20748,19 @@ ] }, { - "id": "JSValidateJSDoc", + "id": "NonBlockStatementBodyJS", "shortDescription": { - "text": "Syntax errors and unresolved references in JSDoc" + "text": "Statement body without braces" }, "fullDescription": { - "text": "Reports a syntax discrepancy in a documentation comment.", - "markdown": "Reports a syntax discrepancy in a documentation comment." + "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": "JSValidateJSDoc", + "suppressToolId": "NonBlockStatementBodyJS", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -20525,8 +20768,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/General", - "index": 24, + "id": "JavaScript and TypeScript/Code style issues", + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -20691,7 +20934,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -20724,7 +20967,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -20790,7 +21033,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 69, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -20889,7 +21132,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -20922,7 +21165,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -21153,7 +21396,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -21186,7 +21429,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 25, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -21285,7 +21528,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 25, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -21318,7 +21561,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -21450,7 +21693,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -21549,7 +21792,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 69, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -21594,28 +21837,28 @@ ] }, { - "id": "UnusedCatchParameterJS", + "id": "NpmUsedModulesInstalled", "shortDescription": { - "text": "Unused 'catch' parameter" + "text": "Missing module dependency" }, "fullDescription": { - "text": "Reports a 'catch' parameter that is not used in the corresponding block. The 'catch' parameters named 'ignore' or 'ignored' are ignored. Use the checkbox below to disable this inspection for 'catch' blocks with comments.", - "markdown": "Reports a `catch` parameter that is not used in the corresponding block. The `catch` parameters named `ignore` or `ignored` are ignored.\n\n\nUse the checkbox below to disable this inspection for `catch`\nblocks with comments." + "text": "Reports a module from a 'require()' call or an 'import' statement that is not installed or is not listed in package.json dependencies. Suggests installing the module and/or including it into package.json. For 'require()' calls, works only in the files from the scope of Node.js Core JavaScript library.", + "markdown": "Reports a module from a `require()` call or an `import` statement that is not installed or is not listed in package.json dependencies.\n\nSuggests installing the module and/or including it into package.json.\n\nFor `require()` calls, works only in the files from the scope of *Node.js Core* JavaScript library." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "suppressToolId": "UnusedCatchParameterJS", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "NpmUsedModulesInstalled", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Try statement issues", - "index": 35, + "id": "JavaScript and TypeScript/Imports and dependencies", + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -21627,28 +21870,28 @@ ] }, { - "id": "NpmUsedModulesInstalled", + "id": "UnusedCatchParameterJS", "shortDescription": { - "text": "Missing module dependency" + "text": "Unused 'catch' parameter" }, "fullDescription": { - "text": "Reports a module from a 'require()' call or an 'import' statement that is not installed or is not listed in package.json dependencies. Suggests installing the module and/or including it into package.json. For 'require()' calls, works only in the files from the scope of Node.js Core JavaScript library.", - "markdown": "Reports a module from a `require()` call or an `import` statement that is not installed or is not listed in package.json dependencies.\n\nSuggests installing the module and/or including it into package.json.\n\nFor `require()` calls, works only in the files from the scope of *Node.js Core* JavaScript library." + "text": "Reports a 'catch' parameter that is not used in the corresponding block. The 'catch' parameters named 'ignore' or 'ignored' are ignored. Use the checkbox below to disable this inspection for 'catch' blocks with comments.", + "markdown": "Reports a `catch` parameter that is not used in the corresponding block. The `catch` parameters named `ignore` or `ignored` are ignored.\n\n\nUse the checkbox below to disable this inspection for `catch`\nblocks with comments." }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "suppressToolId": "NpmUsedModulesInstalled", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "UnusedCatchParameterJS", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Imports and dependencies", - "index": 59, + "id": "JavaScript and TypeScript/Try statement issues", + "index": 35, "toolComponent": { "name": "QDPHP" } @@ -21813,7 +22056,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -21846,7 +22089,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -22077,7 +22320,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -22176,7 +22419,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 69, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -22440,7 +22683,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -22506,7 +22749,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -22539,7 +22782,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -22605,7 +22848,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -22617,28 +22860,28 @@ ] }, { - "id": "JSUnfilteredForInLoop", + "id": "JSIncompatibleTypesComparison", "shortDescription": { - "text": "Unfiltered for..in loop" + "text": "Comparison of expressions having incompatible types" }, "fullDescription": { - "text": "Reports unfiltered 'for-in' loops. The use of this construct results in processing not only own properties of an object but properties from its prototype as well. It may be unexpected in some specific cases, for example, in utility methods that copy or modify all properties or when 'Object''s prototype may be incorrectly modified. For example, the following code will print 42 and myMethod: 'Object.prototype.myMethod = function myMethod() {};\nlet a = { foo: 42 };\nfor (let i in a) {\n console.log(a[i]);\n}' Suggests replacing the whole loop with a 'Object.keys()' method or adding a 'hasOwnProperty()' check. After applying the quick-fix the code looks as follows: 'for (let i in a) {\n if (a.hasOwnProperty(i)) {\n console.log(a[i]);\n }\n}'", - "markdown": "Reports unfiltered `for-in` loops. \n\nThe use of this construct results in processing not only own properties of an object but properties from its prototype as well. It may be unexpected in some specific cases, for example, in utility methods that copy or modify all properties or when `Object`'s prototype may be incorrectly modified. For example, the following code will print **42** and **myMethod** : \n\n\n Object.prototype.myMethod = function myMethod() {};\n let a = { foo: 42 };\n for (let i in a) {\n console.log(a[i]);\n }\n\nSuggests replacing the whole loop with a `Object.keys()` method or adding a `hasOwnProperty()` check. After applying the quick-fix the code looks as follows:\n\n\n for (let i in a) {\n if (a.hasOwnProperty(i)) {\n console.log(a[i]);\n }\n }\n" + "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": "warning", + "level": "note", "parameters": { - "suppressToolId": "JSUnfilteredForInLoop", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "JSIncompatibleTypesComparison", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/General", - "index": 24, + "id": "JavaScript and TypeScript/Probable bugs", + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -22683,28 +22926,28 @@ ] }, { - "id": "JSIncompatibleTypesComparison", + "id": "JSUnfilteredForInLoop", "shortDescription": { - "text": "Comparison of expressions having incompatible types" + "text": "Unfiltered for..in loop" }, "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 unfiltered 'for-in' loops. The use of this construct results in processing not only own properties of an object but properties from its prototype as well. It may be unexpected in some specific cases, for example, in utility methods that copy or modify all properties or when 'Object''s prototype may be incorrectly modified. For example, the following code will print 42 and myMethod: 'Object.prototype.myMethod = function myMethod() {};\nlet a = { foo: 42 };\nfor (let i in a) {\n console.log(a[i]);\n}' Suggests replacing the whole loop with a 'Object.keys()' method or adding a 'hasOwnProperty()' check. After applying the quick-fix the code looks as follows: 'for (let i in a) {\n if (a.hasOwnProperty(i)) {\n console.log(a[i]);\n }\n}'", + "markdown": "Reports unfiltered `for-in` loops. \n\nThe use of this construct results in processing not only own properties of an object but properties from its prototype as well. It may be unexpected in some specific cases, for example, in utility methods that copy or modify all properties or when `Object`'s prototype may be incorrectly modified. For example, the following code will print **42** and **myMethod** : \n\n\n Object.prototype.myMethod = function myMethod() {};\n let a = { foo: 42 };\n for (let i in a) {\n console.log(a[i]);\n }\n\nSuggests replacing the whole loop with a `Object.keys()` method or adding a `hasOwnProperty()` check. After applying the quick-fix the code looks as follows:\n\n\n for (let i in a) {\n if (a.hasOwnProperty(i)) {\n console.log(a[i]);\n }\n }\n" }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "suppressToolId": "JSIncompatibleTypesComparison", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "JSUnfilteredForInLoop", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Probable bugs", - "index": 44, + "id": "JavaScript and TypeScript/General", + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -22737,7 +22980,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 25, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -22803,7 +23046,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 25, + "index": 26, "toolComponent": { "name": "QDPHP" } @@ -22902,7 +23145,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 69, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -23166,7 +23409,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 69, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -23199,7 +23442,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -23310,28 +23553,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": 24, + "id": "JavaScript and TypeScript/Code style issues", + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -23343,28 +23586,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": 47, + "id": "JavaScript and TypeScript/General", + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -23496,7 +23739,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -23727,7 +23970,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 52, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -23892,7 +24135,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -23991,7 +24234,7 @@ { "target": { "id": "JavaScript and TypeScript/Unused symbols", - "index": 15, + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -24011,23 +24254,23 @@ "isComprehensive": false }, { - "name": "gherkin", + "name": "org.editorconfig.editorconfigjetbrains", "version": "232.9881", "rules": [ { - "id": "GherkinScenarioToScenarioOutline", + "id": "EditorConfigRootDeclarationUniqueness", "shortDescription": { - "text": "Scenario with Examples section" + "text": "Extra top-level declaration" }, "fullDescription": { - "text": "Reports Gherkin scenarios that contain an 'Examples' section. Use the quick-fix to convert 'Scenario' to 'Scenario Outline'.", - "markdown": "Reports Gherkin scenarios that contain an `Examples` section.\n\nUse the quick-fix to convert `Scenario` to `Scenario Outline`." + "text": "Reports multiple top-level declarations. There can be only one optional “root=true” top-level declaration in the EditorConfig file. Using multiple top-level declarations is not allowed.", + "markdown": "Reports multiple top-level declarations. There can be only one optional \"root=true\" top-level declaration in the EditorConfig file. Using multiple top-level declarations is not allowed." }, "defaultConfiguration": { "enabled": false, "level": "error", "parameters": { - "suppressToolId": "GherkinScenarioToScenarioOutline", + "suppressToolId": "EditorConfigRootDeclarationUniqueness", "ideaSeverity": "ERROR", "qodanaSeverity": "Critical" } @@ -24035,8 +24278,8 @@ "relationships": [ { "target": { - "id": "Cucumber", - "index": 16, + "id": "EditorConfig", + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -24048,28 +24291,28 @@ ] }, { - "id": "CucumberTableInspection", + "id": "EditorConfigNumerousWildcards", "shortDescription": { - "text": "Unused or missing columns in Cucumber tables" + "text": "Too many wildcards" }, "fullDescription": { - "text": "Reports tables in 'Examples' sections in Cucumber .feature files with unused or missing columns.", - "markdown": "Reports tables in `Examples` sections in Cucumber .feature files with unused or missing columns." + "text": "Reports sections that contain too many wildcards. Using a lot of wildcards may lead to performance issues.", + "markdown": "Reports sections that contain too many wildcards. Using a lot of wildcards may lead to performance issues." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "suppressToolId": "CucumberTableInspection", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "EditorConfigNumerousWildcards", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "Cucumber", - "index": 16, + "id": "EditorConfig", + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -24081,28 +24324,28 @@ ] }, { - "id": "GherkinBrokenTableInspection", + "id": "EditorConfigKeyCorrectness", "shortDescription": { - "text": "Gherkin table is broken" + "text": "Unknown property" }, "fullDescription": { - "text": "Reports a table if there is at least one row with the number of cells different from the number of cells in the table header.", - "markdown": "Reports a table if there is at least one row with the number of cells different from the number of cells in the table header." + "text": "Reports properties that are not supported by the IDE. Note: some “ij” domain properties may require specific language plugins.", + "markdown": "Reports properties that are not supported by the IDE. Note: some \"ij\" domain properties may require specific language plugins." }, "defaultConfiguration": { "enabled": false, - "level": "error", + "level": "warning", "parameters": { - "suppressToolId": "GherkinBrokenTableInspection", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "EditorConfigKeyCorrectness", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "Cucumber", - "index": 16, + "id": "EditorConfig", + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -24114,28 +24357,28 @@ ] }, { - "id": "GherkinMisplacedBackground", + "id": "EditorConfigEncoding", "shortDescription": { - "text": "Misplaced background section" + "text": "File encoding doesn't match EditorConfig charset" }, "fullDescription": { - "text": "Reports 'Background' sections that are located incorrectly. The 'Background' section must be located before the 'Scenario' section.", - "markdown": "Reports `Background` sections that are located incorrectly. The `Background` section must be located before the `Scenario` section." + "text": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file.", + "markdown": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file." }, "defaultConfiguration": { "enabled": false, - "level": "error", + "level": "warning", "parameters": { - "suppressToolId": "GherkinMisplacedBackground", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "EditorConfigEncoding", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "Cucumber", - "index": 16, + "id": "EditorConfig", + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -24147,19 +24390,19 @@ ] }, { - "id": "CucumberMissedExamples", + "id": "EditorConfigRootDeclarationCorrectness", "shortDescription": { - "text": "Missing examples section" + "text": "Unexpected top-level declaration" }, "fullDescription": { - "text": "Reports scenario outlines in Cucumber .feature files that do not have the 'Examples' section. Use the quick-fix to automatically create the 'Examples' section with a pre-filled table header.", - "markdown": "Reports scenario outlines in Cucumber .feature files that do not have the `Examples` section.\n\nUse the quick-fix to automatically create the `Examples` section with a pre-filled table header." + "text": "Reports unexpected top-level declarations. Top-level declarations other than “root=true” are not allowed in the EditorConfig file.", + "markdown": "Reports unexpected top-level declarations. Top-level declarations other than \"root=true\" are not allowed in the EditorConfig file." }, "defaultConfiguration": { "enabled": false, "level": "error", "parameters": { - "suppressToolId": "CucumberMissedExamples", + "suppressToolId": "EditorConfigRootDeclarationCorrectness", "ideaSeverity": "ERROR", "qodanaSeverity": "Critical" } @@ -24167,8 +24410,8 @@ "relationships": [ { "target": { - "id": "Cucumber", - "index": 16, + "id": "EditorConfig", + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -24180,19 +24423,19 @@ ] }, { - "id": "CucumberUndefinedStep", + "id": "EditorConfigPatternRedundancy", "shortDescription": { - "text": "Undefined step" + "text": "Duplicate or redundant pattern" }, "fullDescription": { - "text": "Reports steps in Cucumber (or some other Gherkin) .feature files that do not have matching step definitions. Use the quick-fix to automatically create a new step definition.", - "markdown": "Reports steps in Cucumber (or some other Gherkin) .feature files that do not have matching step definitions.\n\nUse the quick-fix to automatically create a new step definition." + "text": "Reports file patterns that are redundant as there already are other patterns that define the same scope of files or even a broader one. For example, in '[{*.java,*}]' the first '*.java' pattern defines a narrower scope compared to '*'. That is why it is redundant and can be removed.", + "markdown": "Reports file patterns that are redundant as there already are other patterns that define the same scope of files or even a broader one. For example, in `[{*.java,*}]` the first `*.java` pattern defines a narrower scope compared to `*`. That is why it is redundant and can be removed." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "CucumberUndefinedStep", + "suppressToolId": "EditorConfigPatternRedundancy", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -24200,8 +24443,8 @@ "relationships": [ { "target": { - "id": "Cucumber", - "index": 16, + "id": "EditorConfig", + "index": 19, "toolComponent": { "name": "QDPHP" } @@ -24213,66 +24456,21 @@ ] }, { - "id": "CucumberExamplesColon", - "shortDescription": { - "text": "Missing ':' after examples keyword" - }, - "fullDescription": { - "text": "Reports 'Examples' sections in Cucumber .feature files if they do not have ':' after the 'Examples' keyword.", - "markdown": "Reports `Examples` sections in Cucumber .feature files if they do not have ':' after the `Examples` keyword." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "suppressToolId": "CucumberExamplesColon", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" - } - }, - "relationships": [ - { - "target": { - "id": "Cucumber", - "index": 16, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - } - ], - "language": "en-US", - "contents": [ - "localizedData", - "nonLocalizedData" - ], - "isComprehensive": false - }, - { - "name": "org.editorconfig.editorconfigjetbrains", - "version": "232.9881", - "rules": [ - { - "id": "EditorConfigRootDeclarationUniqueness", + "id": "EditorConfigDeprecatedDescriptor", "shortDescription": { - "text": "Extra top-level declaration" + "text": "Deprecated property" }, "fullDescription": { - "text": "Reports multiple top-level declarations. There can be only one optional “root=true” top-level declaration in the EditorConfig file. Using multiple top-level declarations is not allowed.", - "markdown": "Reports multiple top-level declarations. There can be only one optional \"root=true\" top-level declaration in the EditorConfig file. Using multiple top-level declarations is not allowed." + "text": "Reports EditorConfig properties that are no longer supported.", + "markdown": "Reports EditorConfig properties that are no longer supported." }, "defaultConfiguration": { "enabled": false, - "level": "error", + "level": "warning", "parameters": { - "suppressToolId": "EditorConfigRootDeclarationUniqueness", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "EditorConfigDeprecatedDescriptor", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ @@ -24291,21 +24489,21 @@ ] }, { - "id": "EditorConfigNumerousWildcards", + "id": "EditorConfigShadowedOption", "shortDescription": { - "text": "Too many wildcards" + "text": "Overridden property" }, "fullDescription": { - "text": "Reports sections that contain too many wildcards. Using a lot of wildcards may lead to performance issues.", - "markdown": "Reports sections that contain too many wildcards. Using a lot of wildcards may lead to performance issues." + "text": "Reports properties that are already defined in other sections. For example: '[*.java]\nindent_size=4\n[{*.java,*.js}]\nindent_size=2' The second section includes all '*.java' files too but it also redefines indent_size. As a result the value 2 will be used for files matching '*.java'.", + "markdown": "Reports properties that are already defined in other sections.\n\nFor example:\n\n\n [*.java]\n indent_size=4\n [{*.java,*.js}]\n indent_size=2\n\nThe second section includes all `*.java` files too but it also redefines indent_size. As a result the value 2 will be used for files matching `*.java`." }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "suppressToolId": "EditorConfigNumerousWildcards", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "EditorConfigShadowedOption", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ @@ -24324,21 +24522,21 @@ ] }, { - "id": "EditorConfigKeyCorrectness", + "id": "EditorConfigEmptyHeader", "shortDescription": { - "text": "Unknown property" + "text": "Empty header" }, "fullDescription": { - "text": "Reports properties that are not supported by the IDE. Note: some “ij” domain properties may require specific language plugins.", - "markdown": "Reports properties that are not supported by the IDE. Note: some \"ij\" domain properties may require specific language plugins." + "text": "Reports sections with an empty header. Section header must contain file path globs in the format similar to one supported by 'gitignore'.", + "markdown": "Reports sections with an empty header. Section header must contain file path globs in the format similar to one supported by `gitignore`." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "error", "parameters": { - "suppressToolId": "EditorConfigKeyCorrectness", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "EditorConfigEmptyHeader", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ @@ -24357,21 +24555,21 @@ ] }, { - "id": "EditorConfigEncoding", + "id": "EditorConfigValueUniqueness", "shortDescription": { - "text": "File encoding doesn't match EditorConfig charset" + "text": "Non-unique list value" }, "fullDescription": { - "text": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file.", - "markdown": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file." + "text": "Reports duplicates in lists of values.", + "markdown": "Reports duplicates in lists of values." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "error", "parameters": { - "suppressToolId": "EditorConfigEncoding", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "EditorConfigValueUniqueness", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ @@ -24390,217 +24588,19 @@ ] }, { - "id": "EditorConfigRootDeclarationCorrectness", + "id": "EditorConfigMissingRequiredDeclaration", "shortDescription": { - "text": "Unexpected top-level declaration" + "text": "Required declarations are missing" }, "fullDescription": { - "text": "Reports unexpected top-level declarations. Top-level declarations other than “root=true” are not allowed in the EditorConfig file.", - "markdown": "Reports unexpected top-level declarations. Top-level declarations other than \"root=true\" are not allowed in the EditorConfig file." + "text": "Reports properties that miss the required declarations. Refer to the documentation for more information.", + "markdown": "Reports properties that miss the required declarations. Refer to the documentation for more information." }, "defaultConfiguration": { "enabled": false, "level": "error", "parameters": { - "suppressToolId": "EditorConfigRootDeclarationCorrectness", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" - } - }, - "relationships": [ - { - "target": { - "id": "EditorConfig", - "index": 19, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "EditorConfigPatternRedundancy", - "shortDescription": { - "text": "Duplicate or redundant pattern" - }, - "fullDescription": { - "text": "Reports file patterns that are redundant as there already are other patterns that define the same scope of files or even a broader one. For example, in '[{*.java,*}]' the first '*.java' pattern defines a narrower scope compared to '*'. That is why it is redundant and can be removed.", - "markdown": "Reports file patterns that are redundant as there already are other patterns that define the same scope of files or even a broader one. For example, in `[{*.java,*}]` the first `*.java` pattern defines a narrower scope compared to `*`. That is why it is redundant and can be removed." - }, - "defaultConfiguration": { - "enabled": false, - "level": "warning", - "parameters": { - "suppressToolId": "EditorConfigPatternRedundancy", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" - } - }, - "relationships": [ - { - "target": { - "id": "EditorConfig", - "index": 19, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "EditorConfigDeprecatedDescriptor", - "shortDescription": { - "text": "Deprecated property" - }, - "fullDescription": { - "text": "Reports EditorConfig properties that are no longer supported.", - "markdown": "Reports EditorConfig properties that are no longer supported." - }, - "defaultConfiguration": { - "enabled": false, - "level": "warning", - "parameters": { - "suppressToolId": "EditorConfigDeprecatedDescriptor", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" - } - }, - "relationships": [ - { - "target": { - "id": "EditorConfig", - "index": 19, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "EditorConfigShadowedOption", - "shortDescription": { - "text": "Overridden property" - }, - "fullDescription": { - "text": "Reports properties that are already defined in other sections. For example: '[*.java]\nindent_size=4\n[{*.java,*.js}]\nindent_size=2' The second section includes all '*.java' files too but it also redefines indent_size. As a result the value 2 will be used for files matching '*.java'.", - "markdown": "Reports properties that are already defined in other sections.\n\nFor example:\n\n\n [*.java]\n indent_size=4\n [{*.java,*.js}]\n indent_size=2\n\nThe second section includes all `*.java` files too but it also redefines indent_size. As a result the value 2 will be used for files matching `*.java`." - }, - "defaultConfiguration": { - "enabled": false, - "level": "warning", - "parameters": { - "suppressToolId": "EditorConfigShadowedOption", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" - } - }, - "relationships": [ - { - "target": { - "id": "EditorConfig", - "index": 19, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "EditorConfigEmptyHeader", - "shortDescription": { - "text": "Empty header" - }, - "fullDescription": { - "text": "Reports sections with an empty header. Section header must contain file path globs in the format similar to one supported by 'gitignore'.", - "markdown": "Reports sections with an empty header. Section header must contain file path globs in the format similar to one supported by `gitignore`." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "suppressToolId": "EditorConfigEmptyHeader", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" - } - }, - "relationships": [ - { - "target": { - "id": "EditorConfig", - "index": 19, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "EditorConfigValueUniqueness", - "shortDescription": { - "text": "Non-unique list value" - }, - "fullDescription": { - "text": "Reports duplicates in lists of values.", - "markdown": "Reports duplicates in lists of values." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "suppressToolId": "EditorConfigValueUniqueness", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" - } - }, - "relationships": [ - { - "target": { - "id": "EditorConfig", - "index": 19, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "EditorConfigMissingRequiredDeclaration", - "shortDescription": { - "text": "Required declarations are missing" - }, - "fullDescription": { - "text": "Reports properties that miss the required declarations. Refer to the documentation for more information.", - "markdown": "Reports properties that miss the required declarations. Refer to the documentation for more information." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "suppressToolId": "EditorConfigMissingRequiredDeclaration", + "suppressToolId": "EditorConfigMissingRequiredDeclaration", "ideaSeverity": "ERROR", "qodanaSeverity": "Critical" } @@ -25899,7 +25899,7 @@ { "target": { "id": "CSS/Probable bugs", - "index": 51, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -26130,7 +26130,7 @@ { "target": { "id": "CSS/Probable bugs", - "index": 51, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -26460,7 +26460,7 @@ { "target": { "id": "CSS/Probable bugs", - "index": 51, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -27711,7 +27711,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 70, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -28356,7 +28356,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 70, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -28439,14 +28439,14 @@ "language": "en-US", "versionControlProvenance": [ { - "repositoryUri": "https://github.com/zephir-lang/zephir.git", - "revisionId": "a3bc02de3a207fdc7795714bd81c50ce8014d859", + "repositoryUri": "https://github.com/zephir-lang/zephir", + "revisionId": "cf3ab03e8f1923787643ad37cb8abc158332c284", "branch": "phpcs-changes", "properties": { - "repoUrl": "https://github.com/zephir-lang/zephir.git", - "lastAuthorName": "Anton Vasiliev", + "repoUrl": "https://github.com/zephir-lang/zephir", + "lastAuthorName": "Nikolaos Dimopoulos", "vcsType": "Git", - "lastAuthorEmail": "1695147@gmail.com" + "lastAuthorEmail": "nikos@niden.net" } } ], @@ -28532,6 +28532,7 @@ "partialFingerprints": { "equalIndicator/v1": "007fa875708218660836ace1924fc922751392efd8537e891680598c5cf15c3f" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -28621,6 +28622,7 @@ "partialFingerprints": { "equalIndicator/v1": "08f2f448026d85d619648c5cd79b372a3ceffd6ff784cac4e438ae722c1acf96" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -28710,6 +28712,7 @@ "partialFingerprints": { "equalIndicator/v1": "0ae41db8f8c0bef77b8d675ee99d6a3523098f4cff89c1d9c1245f8318af02cd" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -28799,6 +28802,7 @@ "partialFingerprints": { "equalIndicator/v1": "0d67bca7fae6d45ad7bf2511bf847317eb7e7514c7087f3ae8354745a3be6e50" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -28888,6 +28892,7 @@ "partialFingerprints": { "equalIndicator/v1": "12396187edc198e27c96f5755ad98754d322bac119bd2b300b2ebfb8ec29e475" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -28908,26 +28913,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Operators/Arithmetical/ArithmeticalBaseOperator.php", + "uri": "src/Operators/Other/FetchOperator.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 600, - "startColumn": 41, - "charOffset": 28421, - "charLength": 1312, + "startLine": 139, + "startColumn": 17, + "charOffset": 5345, + "charLength": 1460, "snippet": { - "text": "$compilationContext->headersManager->add('kernel/operators');\n\n $expected = $this->getExpected($compilationContext, $expression);\n $compilationContext->backend->zvalOperator(\n $this->zvalOperator,\n $expected,\n $variableLeft,\n $variableRight,\n $compilationContext\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n $expected->setDynamicTypes(\n $this->getDynamicTypes($variableLeft, $variableRight)\n );\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" + "text": "$exprVariable = new Expression($expression['right']['left']);\n $exprVariable->setReadOnly(true);\n $exprVariable->setNoisy(false);\n\n $exprCompiledVariable = $exprVariable->compile($compilationContext);\n if ('variable' != $exprCompiledVariable->getType()) {\n throw new CompilerException(\n 'Expression type: ' . $exprCompiledVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n $evalVariable = $compilationContext->symbolTable->getVariableForRead(\n $exprCompiledVariable->getCode(),\n $compilationContext,\n $expression['right']['left']\n );\n if ('variable' != $evalVariable->getType()) {\n throw new CompilerException(\n 'Variable type: ' . $variable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n if ($evalVariable->hasDifferentDynamicType(['undefined', 'object', 'null'])) {\n $compilationContext->logger->warning(\n 'Possible attempt to use non object in fetch operator',\n ['non-valid-fetch', $expression['right']]\n );\n }" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 600, + "startLine": 139, "startColumn": 1, - "charOffset": 28381, - "charLength": 1352, + "charOffset": 5329, + "charLength": 1476, "snippet": { - "text": " $compilationContext->headersManager->add('kernel/operators');\n\n $expected = $this->getExpected($compilationContext, $expression);\n $compilationContext->backend->zvalOperator(\n $this->zvalOperator,\n $expected,\n $variableLeft,\n $variableRight,\n $compilationContext\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n $expected->setDynamicTypes(\n $this->getDynamicTypes($variableLeft, $variableRight)\n );\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" + "text": " $exprVariable = new Expression($expression['right']['left']);\n $exprVariable->setReadOnly(true);\n $exprVariable->setNoisy(false);\n\n $exprCompiledVariable = $exprVariable->compile($compilationContext);\n if ('variable' != $exprCompiledVariable->getType()) {\n throw new CompilerException(\n 'Expression type: ' . $exprCompiledVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n $evalVariable = $compilationContext->symbolTable->getVariableForRead(\n $exprCompiledVariable->getCode(),\n $compilationContext,\n $expression['right']['left']\n );\n if ('variable' != $evalVariable->getType()) {\n throw new CompilerException(\n 'Variable type: ' . $variable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n if ($evalVariable->hasDifferentDynamicType(['undefined', 'object', 'null'])) {\n $compilationContext->logger->warning(\n 'Possible attempt to use non object in fetch operator',\n ['non-valid-fetch', $expression['right']]\n );\n }" }, "sourceLanguage": "PHP" } @@ -28942,26 +28947,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Operators/Arithmetical/ArithmeticalBaseOperator.php", + "uri": "src/Operators/Other/FetchOperator.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 707, - "startColumn": 41, - "charOffset": 34365, - "charLength": 1312, + "startLine": 183, + "startColumn": 17, + "charOffset": 7441, + "charLength": 1464, "snippet": { - "text": "$compilationContext->headersManager->add('kernel/operators');\n\n $expected = $this->getExpected($compilationContext, $expression);\n $compilationContext->backend->zvalOperator(\n $this->zvalOperator,\n $expected,\n $variableLeft,\n $variableRight,\n $compilationContext\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n $expected->setDynamicTypes(\n $this->getDynamicTypes($variableLeft, $variableRight)\n );\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" + "text": "$exprVariable = new Expression($expression['right']['left']);\n $exprVariable->setReadOnly(true);\n $exprVariable->setNoisy(false);\n\n $exprCompiledVariable = $exprVariable->compile($compilationContext);\n if ('variable' != $exprCompiledVariable->getType()) {\n throw new CompilerException(\n 'Expression type: ' . $exprCompiledVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n $evalVariable = $compilationContext->symbolTable->getVariableForRead(\n $exprCompiledVariable->getCode(),\n $compilationContext,\n $expression['right']['left']\n );\n if ('variable' != $evalVariable->getType()) {\n throw new CompilerException(\n 'Variable type: ' . $evalVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n if ($evalVariable->hasDifferentDynamicType(['undefined', 'object', 'null'])) {\n $compilationContext->logger->warning(\n 'Possible attempt to use non object in fetch operator',\n ['non-valid-fetch', $expression['right']]\n );\n }" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 707, + "startLine": 183, "startColumn": 1, - "charOffset": 34325, - "charLength": 1352, + "charOffset": 7425, + "charLength": 1480, "snippet": { - "text": " $compilationContext->headersManager->add('kernel/operators');\n\n $expected = $this->getExpected($compilationContext, $expression);\n $compilationContext->backend->zvalOperator(\n $this->zvalOperator,\n $expected,\n $variableLeft,\n $variableRight,\n $compilationContext\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n $expected->setDynamicTypes(\n $this->getDynamicTypes($variableLeft, $variableRight)\n );\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" + "text": " $exprVariable = new Expression($expression['right']['left']);\n $exprVariable->setReadOnly(true);\n $exprVariable->setNoisy(false);\n\n $exprCompiledVariable = $exprVariable->compile($compilationContext);\n if ('variable' != $exprCompiledVariable->getType()) {\n throw new CompilerException(\n 'Expression type: ' . $exprCompiledVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n $evalVariable = $compilationContext->symbolTable->getVariableForRead(\n $exprCompiledVariable->getCode(),\n $compilationContext,\n $expression['right']['left']\n );\n if ('variable' != $evalVariable->getType()) {\n throw new CompilerException(\n 'Variable type: ' . $evalVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n if ($evalVariable->hasDifferentDynamicType(['undefined', 'object', 'null'])) {\n $compilationContext->logger->warning(\n 'Possible attempt to use non object in fetch operator',\n ['non-valid-fetch', $expression['right']]\n );\n }" }, "sourceLanguage": "PHP" } @@ -28975,8 +28980,9 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "44d3147872714da7dd7925d66f77cc75018a72ec1e8c22628bd251c55f358eea" + "equalIndicator/v1": "24f08abd3bb01f9d7345fa1ca459533dab83e08a1e2216c322b5acbb63cde9b6" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -28997,26 +29003,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/CompilerFile.php", + "uri": "src/Operators/Arithmetical/DivOperator.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 184, - "startColumn": 9, - "charOffset": 4992, - "charLength": 571, + "startLine": 595, + "startColumn": 41, + "charOffset": 28052, + "charLength": 1044, "snippet": { - "text": "$code .= PHP_EOL;\n\n $code .= '#include \"kernel/main.h\"' . PHP_EOL;\n\n if ('class' == $classDefinition->getType()) {\n foreach ($compilationContext->headersManager->get() as $header => $one) {\n $code .= '#include \"' . $header . '.h\"' . PHP_EOL;\n }\n }\n\n if (count($this->headerCBlocks) > 0) {\n $code .= implode(PHP_EOL, $this->headerCBlocks) . PHP_EOL;\n }\n\n /**\n * Prepend the required files to the header\n */\n $compilationContext->codePrinter->preOutput($code);" + "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedCode = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedCode . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 184, + "startLine": 595, "startColumn": 1, - "charOffset": 4984, - "charLength": 579, + "charOffset": 28012, + "charLength": 1084, "snippet": { - "text": " $code .= PHP_EOL;\n\n $code .= '#include \"kernel/main.h\"' . PHP_EOL;\n\n if ('class' == $classDefinition->getType()) {\n foreach ($compilationContext->headersManager->get() as $header => $one) {\n $code .= '#include \"' . $header . '.h\"' . PHP_EOL;\n }\n }\n\n if (count($this->headerCBlocks) > 0) {\n $code .= implode(PHP_EOL, $this->headerCBlocks) . PHP_EOL;\n }\n\n /**\n * Prepend the required files to the header\n */\n $compilationContext->codePrinter->preOutput($code);" + "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedCode = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedCode . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" }, "sourceLanguage": "PHP" } @@ -29031,26 +29037,60 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/CompilerFileAnonymous.php", + "uri": "src/Operators/Arithmetical/ModOperator.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 244, - "startColumn": 9, - "charOffset": 7132, - "charLength": 571, + "startLine": 630, + "startColumn": 41, + "charOffset": 29563, + "charLength": 1204, "snippet": { - "text": "$code .= PHP_EOL;\n\n $code .= '#include \"kernel/main.h\"' . PHP_EOL;\n\n if ('class' == $classDefinition->getType()) {\n foreach ($compilationContext->headersManager->get() as $header => $one) {\n $code .= '#include \"' . $header . '.h\"' . PHP_EOL;\n }\n }\n\n if (count($this->headerCBlocks) > 0) {\n $code .= implode(PHP_EOL, $this->headerCBlocks) . PHP_EOL;\n }\n\n /**\n * Prepend the required files to the header\n */\n $compilationContext->codePrinter->preOutput($code);" + "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression(\n 'variable',\n $expected->getName(),\n $expression\n );" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 244, + "startLine": 630, "startColumn": 1, - "charOffset": 7124, - "charLength": 579, + "charOffset": 29523, + "charLength": 1244, "snippet": { - "text": " $code .= PHP_EOL;\n\n $code .= '#include \"kernel/main.h\"' . PHP_EOL;\n\n if ('class' == $classDefinition->getType()) {\n foreach ($compilationContext->headersManager->get() as $header => $one) {\n $code .= '#include \"' . $header . '.h\"' . PHP_EOL;\n }\n }\n\n if (count($this->headerCBlocks) > 0) {\n $code .= implode(PHP_EOL, $this->headerCBlocks) . PHP_EOL;\n }\n\n /**\n * Prepend the required files to the header\n */\n $compilationContext->codePrinter->preOutput($code);" + "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression(\n 'variable',\n $expected->getName(),\n $expression\n );" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + }, + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Operators/Bitwise/BitwiseBaseOperator.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 641, + "startColumn": 41, + "charOffset": 30112, + "charLength": 1050, + "snippet": { + "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedSymbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedSymbol . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 641, + "startColumn": 1, + "charOffset": 30072, + "charLength": 1090, + "snippet": { + "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedSymbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedSymbol . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" }, "sourceLanguage": "PHP" } @@ -29064,8 +29104,99 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "4b5cee72bcbbadce4fc761c12530223b00f00b3b7e5c2faa3973277df457d6c6" + "equalIndicator/v1": "3f69053074a524ab597f3415079b660a6b7d8373ef878c83f84ce1ea942336eb" }, + "baselineState": "unchanged", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "DuplicatedCode", + "kind": "fail", + "level": "note", + "message": { + "text": "Duplicated code", + "markdown": "Duplicated code" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/CompilerFile.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 184, + "startColumn": 9, + "charOffset": 4992, + "charLength": 571, + "snippet": { + "text": "$code .= PHP_EOL;\n\n $code .= '#include \"kernel/main.h\"' . PHP_EOL;\n\n if ('class' == $classDefinition->getType()) {\n foreach ($compilationContext->headersManager->get() as $header => $one) {\n $code .= '#include \"' . $header . '.h\"' . PHP_EOL;\n }\n }\n\n if (count($this->headerCBlocks) > 0) {\n $code .= implode(PHP_EOL, $this->headerCBlocks) . PHP_EOL;\n }\n\n /**\n * Prepend the required files to the header\n */\n $compilationContext->codePrinter->preOutput($code);" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 184, + "startColumn": 1, + "charOffset": 4984, + "charLength": 579, + "snippet": { + "text": " $code .= PHP_EOL;\n\n $code .= '#include \"kernel/main.h\"' . PHP_EOL;\n\n if ('class' == $classDefinition->getType()) {\n foreach ($compilationContext->headersManager->get() as $header => $one) {\n $code .= '#include \"' . $header . '.h\"' . PHP_EOL;\n }\n }\n\n if (count($this->headerCBlocks) > 0) {\n $code .= implode(PHP_EOL, $this->headerCBlocks) . PHP_EOL;\n }\n\n /**\n * Prepend the required files to the header\n */\n $compilationContext->codePrinter->preOutput($code);" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + }, + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/CompilerFileAnonymous.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 244, + "startColumn": 9, + "charOffset": 7132, + "charLength": 571, + "snippet": { + "text": "$code .= PHP_EOL;\n\n $code .= '#include \"kernel/main.h\"' . PHP_EOL;\n\n if ('class' == $classDefinition->getType()) {\n foreach ($compilationContext->headersManager->get() as $header => $one) {\n $code .= '#include \"' . $header . '.h\"' . PHP_EOL;\n }\n }\n\n if (count($this->headerCBlocks) > 0) {\n $code .= implode(PHP_EOL, $this->headerCBlocks) . PHP_EOL;\n }\n\n /**\n * Prepend the required files to the header\n */\n $compilationContext->codePrinter->preOutput($code);" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 244, + "startColumn": 1, + "charOffset": 7124, + "charLength": 579, + "snippet": { + "text": " $code .= PHP_EOL;\n\n $code .= '#include \"kernel/main.h\"' . PHP_EOL;\n\n if ('class' == $classDefinition->getType()) {\n foreach ($compilationContext->headersManager->get() as $header => $one) {\n $code .= '#include \"' . $header . '.h\"' . PHP_EOL;\n }\n }\n\n if (count($this->headerCBlocks) > 0) {\n $code .= implode(PHP_EOL, $this->headerCBlocks) . PHP_EOL;\n }\n\n /**\n * Prepend the required files to the header\n */\n $compilationContext->codePrinter->preOutput($code);" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4b5cee72bcbbadce4fc761c12530223b00f00b3b7e5c2faa3973277df457d6c6" + }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -29189,6 +29320,7 @@ "partialFingerprints": { "equalIndicator/v1": "4b94f01d2137a3c924a6e906729935c1a01d5f8d05150b8e7780cfa9e6d51377" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -29278,6 +29410,7 @@ "partialFingerprints": { "equalIndicator/v1": "4c84af03a538a10ccbd7475768837a6f57838da11904651cdd871fb94359d988" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -29435,6 +29568,7 @@ "partialFingerprints": { "equalIndicator/v1": "4d36d56beb9e89409bd76c2f6ecb22e953444d6fdf1fd7e4049e2d6bf5a9afbd" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -29524,6 +29658,7 @@ "partialFingerprints": { "equalIndicator/v1": "599df81d41f5be810b08fb69c471bc5bca897579db4c7866fbcbf605b38c241f" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -29647,6 +29782,7 @@ "partialFingerprints": { "equalIndicator/v1": "5d53dd48ab9c75067d8b728476c9f845850bb812b1cb8753fcd37c8cbbed9fb2" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -29770,6 +29906,7 @@ "partialFingerprints": { "equalIndicator/v1": "63fb053eb03a3eeb273a001ccc30905905075bfbff24662ac374dd80b3e9654e" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -29893,6 +30030,7 @@ "partialFingerprints": { "equalIndicator/v1": "68c15a0339486870360e7eb97b3bce1d6c56a259032f453b3b503df6ee1874df" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -29910,430 +30048,6 @@ "markdown": "Duplicated code" }, "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Statements/Let/Variable.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 160, - "startColumn": 17, - "charOffset": 4766, - "charLength": 1210, - "snippet": { - "text": "switch ($statement['operator']) {\n case 'assign':\n if ($variable != $resolvedExpr->getCode()) {\n $symbolVariable->setMustInitNull(true);\n $compilationContext->symbolTable->mustGrownStack(true);\n\n /* Inherit the dynamic type data from the assigned value */\n $symbolVariable->setDynamicTypes('array');\n $symbolVariable->increaseVariantIfNull();\n $symbol = $compilationContext->backend->getVariableCode($symbolVariable);\n\n $codePrinter->output(\n 'ZEPHIR_CPY_WRT(' . $symbol . ', ' . $compilationContext->backend->resolveValue(\n $resolvedExpr,\n $compilationContext\n ) . ');'\n );\n }\n break;\n\n default:\n throw new IllegalOperationException($statement, $resolvedExpr, $resolvedExpr->getOriginal());\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 160, - "startColumn": 1, - "charOffset": 4750, - "charLength": 1226, - "snippet": { - "text": " switch ($statement['operator']) {\n case 'assign':\n if ($variable != $resolvedExpr->getCode()) {\n $symbolVariable->setMustInitNull(true);\n $compilationContext->symbolTable->mustGrownStack(true);\n\n /* Inherit the dynamic type data from the assigned value */\n $symbolVariable->setDynamicTypes('array');\n $symbolVariable->increaseVariantIfNull();\n $symbol = $compilationContext->backend->getVariableCode($symbolVariable);\n\n $codePrinter->output(\n 'ZEPHIR_CPY_WRT(' . $symbol . ', ' . $compilationContext->backend->resolveValue(\n $resolvedExpr,\n $compilationContext\n ) . ');'\n );\n }\n break;\n\n default:\n throw new IllegalOperationException($statement, $resolvedExpr, $resolvedExpr->getOriginal());\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - }, - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Statements/Let/Variable.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 1306, - "startColumn": 17, - "charOffset": 56371, - "charLength": 1210, - "snippet": { - "text": "switch ($statement['operator']) {\n case 'assign':\n if ($variable != $resolvedExpr->getCode()) {\n $symbolVariable->setMustInitNull(true);\n $compilationContext->symbolTable->mustGrownStack(true);\n\n /* Inherit the dynamic type data from the assigned value */\n $symbolVariable->setDynamicTypes('array');\n $symbolVariable->increaseVariantIfNull();\n $symbol = $compilationContext->backend->getVariableCode($symbolVariable);\n\n $codePrinter->output(\n 'ZEPHIR_CPY_WRT(' . $symbol . ', ' . $compilationContext->backend->resolveValue(\n $resolvedExpr,\n $compilationContext\n ) . ');'\n );\n }\n break;\n\n default:\n throw new IllegalOperationException($statement, $resolvedExpr, $resolvedExpr->getOriginal());\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 1306, - "startColumn": 1, - "charOffset": 56355, - "charLength": 1226, - "snippet": { - "text": " switch ($statement['operator']) {\n case 'assign':\n if ($variable != $resolvedExpr->getCode()) {\n $symbolVariable->setMustInitNull(true);\n $compilationContext->symbolTable->mustGrownStack(true);\n\n /* Inherit the dynamic type data from the assigned value */\n $symbolVariable->setDynamicTypes('array');\n $symbolVariable->increaseVariantIfNull();\n $symbol = $compilationContext->backend->getVariableCode($symbolVariable);\n\n $codePrinter->output(\n 'ZEPHIR_CPY_WRT(' . $symbol . ', ' . $compilationContext->backend->resolveValue(\n $resolvedExpr,\n $compilationContext\n ) . ');'\n );\n }\n break;\n\n default:\n throw new IllegalOperationException($statement, $resolvedExpr, $resolvedExpr->getOriginal());\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - }, - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Statements/Let/Variable.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 1434, - "startColumn": 25, - "charOffset": 63052, - "charLength": 1512, - "snippet": { - "text": "switch ($statement['operator']) {\n case 'assign':\n if ($variable != $resolvedExpr->getCode()) {\n $symbolVariable->setMustInitNull(true);\n $compilationContext->symbolTable->mustGrownStack(true);\n\n /* Inherit the dynamic type data from the assigned value */\n $symbolVariable->setDynamicTypes('array');\n $symbolVariable->increaseVariantIfNull();\n $symbol = $compilationContext->backend->getVariableCode($symbolVariable);\n\n $codePrinter->output(\n 'ZEPHIR_CPY_WRT(' . $symbol . ', ' . $compilationContext->backend->resolveValue(\n $resolvedExpr,\n $compilationContext\n ) . ');'\n );\n }\n break;\n\n default:\n throw new IllegalOperationException(\n $statement,\n $resolvedExpr,\n $resolvedExpr->getOriginal()\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 1434, - "startColumn": 1, - "charOffset": 63028, - "charLength": 1536, - "snippet": { - "text": " switch ($statement['operator']) {\n case 'assign':\n if ($variable != $resolvedExpr->getCode()) {\n $symbolVariable->setMustInitNull(true);\n $compilationContext->symbolTable->mustGrownStack(true);\n\n /* Inherit the dynamic type data from the assigned value */\n $symbolVariable->setDynamicTypes('array');\n $symbolVariable->increaseVariantIfNull();\n $symbol = $compilationContext->backend->getVariableCode($symbolVariable);\n\n $codePrinter->output(\n 'ZEPHIR_CPY_WRT(' . $symbol . ', ' . $compilationContext->backend->resolveValue(\n $resolvedExpr,\n $compilationContext\n ) . ');'\n );\n }\n break;\n\n default:\n throw new IllegalOperationException(\n $statement,\n $resolvedExpr,\n $resolvedExpr->getOriginal()\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "73a249f2c92c2bbff062013d2f3003dcb64dd1142e1672fcd73e3c521720ac87" - }, - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "DuplicatedCode", - "kind": "fail", - "level": "note", - "message": { - "text": "Duplicated code", - "markdown": "Duplicated code" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Statements/Let/Variable.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 495, - "startColumn": 25, - "charOffset": 18936, - "charLength": 1366, - "snippet": { - "text": "$exprVariableCode = $compilationContext->backend->getVariableCode($itemVariable);\n switch ($statement['operator']) {\n case 'assign':\n $codePrinter->output($variable . ' = zephir_get_numberval(' . $exprVariableCode . ');');\n break;\n case 'add-assign':\n $codePrinter->output(\n $variable . ' += zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n case 'sub-assign':\n $codePrinter->output(\n $variable . ' -= zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n case 'mul-assign':\n $codePrinter->output(\n $variable . ' *= zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n default:\n throw new IllegalOperationException($statement, $itemVariable);\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 495, - "startColumn": 1, - "charOffset": 18912, - "charLength": 1390, - "snippet": { - "text": " $exprVariableCode = $compilationContext->backend->getVariableCode($itemVariable);\n switch ($statement['operator']) {\n case 'assign':\n $codePrinter->output($variable . ' = zephir_get_numberval(' . $exprVariableCode . ');');\n break;\n case 'add-assign':\n $codePrinter->output(\n $variable . ' += zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n case 'sub-assign':\n $codePrinter->output(\n $variable . ' -= zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n case 'mul-assign':\n $codePrinter->output(\n $variable . ' *= zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n default:\n throw new IllegalOperationException($statement, $itemVariable);\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - }, - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Statements/Let/Variable.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 736, - "startColumn": 25, - "charOffset": 29251, - "charLength": 1370, - "snippet": { - "text": "$exprVariableCode = $compilationContext->backend->getVariableCode($exprVariable);\n switch ($statement['operator']) {\n case 'assign':\n $codePrinter->output($variable . ' = zephir_get_numberval(' . $exprVariableCode . ');');\n break;\n\n case 'add-assign':\n $codePrinter->output(\n $variable . ' += zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n\n case 'sub-assign':\n $codePrinter->output(\n $variable . ' -= zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n\n case 'mul-assign':\n $codePrinter->output(\n $variable . ' *= zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n\n default:\n throw new IllegalOperationException($statement, $itemVariable);\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 736, - "startColumn": 1, - "charOffset": 29227, - "charLength": 1394, - "snippet": { - "text": " $exprVariableCode = $compilationContext->backend->getVariableCode($exprVariable);\n switch ($statement['operator']) {\n case 'assign':\n $codePrinter->output($variable . ' = zephir_get_numberval(' . $exprVariableCode . ');');\n break;\n\n case 'add-assign':\n $codePrinter->output(\n $variable . ' += zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n\n case 'sub-assign':\n $codePrinter->output(\n $variable . ' -= zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n\n case 'mul-assign':\n $codePrinter->output(\n $variable . ' *= zephir_get_numberval(' . $exprVariableCode . ');'\n );\n break;\n\n default:\n throw new IllegalOperationException($statement, $itemVariable);\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "857b788110f540572ff1a22318763c12c0283e4a57e2497a866234856acd6a82" - }, - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "DuplicatedCode", - "kind": "fail", - "level": "note", - "message": { - "text": "Duplicated code", - "markdown": "Duplicated code" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Optimizers/FunctionCall/FilePutContentsOptimizer.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 42, - "startColumn": 9, - "charOffset": 981, - "charLength": 582, - "snippet": { - "text": "if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n $context->headersManager->add('kernel/file');\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable();\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 42, - "startColumn": 1, - "charOffset": 973, - "charLength": 590, - "snippet": { - "text": " if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n $context->headersManager->add('kernel/file');\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable();\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - }, - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Optimizers/FunctionCall/FwriteOptimizer.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 42, - "startColumn": 9, - "charOffset": 952, - "charLength": 582, - "snippet": { - "text": "if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n $context->headersManager->add('kernel/file');\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable();\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 42, - "startColumn": 1, - "charOffset": 944, - "charLength": 590, - "snippet": { - "text": " if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n $context->headersManager->add('kernel/file');\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable();\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "85c329c4716072967778fb33b25cf012514ce0ed7d1994738b7a6d4e5857125c" - }, - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "DuplicatedCode", - "kind": "fail", - "level": "note", - "message": { - "text": "Duplicated code", - "markdown": "Duplicated code" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Statements/Let/Variable.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 1112, - "startColumn": 25, - "charOffset": 46462, - "charLength": 1243, - "snippet": { - "text": "$symbolVariable->setDynamicTypes('double');\n if ($readDetector->detect($variable, $resolvedExpr->getOriginal())) {\n $tempVariable = $compilationContext->symbolTable->getTempVariableForWrite(\n 'double',\n $compilationContext\n );\n $codePrinter->output($tempVariable->getName() . ' = ' . $resolvedExpr->getCode() . ';');\n $symbolVariable->initVariant($compilationContext);\n $compilationContext->backend->assignDouble(\n $symbolVariable,\n $tempVariable,\n $compilationContext\n );\n } else {\n $symbolVariable->initVariant($compilationContext);\n $compilationContext->backend->assignDouble(\n $symbolVariable,\n $resolvedExpr->getCode(),\n $compilationContext\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 1112, - "startColumn": 1, - "charOffset": 46438, - "charLength": 1267, - "snippet": { - "text": " $symbolVariable->setDynamicTypes('double');\n if ($readDetector->detect($variable, $resolvedExpr->getOriginal())) {\n $tempVariable = $compilationContext->symbolTable->getTempVariableForWrite(\n 'double',\n $compilationContext\n );\n $codePrinter->output($tempVariable->getName() . ' = ' . $resolvedExpr->getCode() . ';');\n $symbolVariable->initVariant($compilationContext);\n $compilationContext->backend->assignDouble(\n $symbolVariable,\n $tempVariable,\n $compilationContext\n );\n } else {\n $symbolVariable->initVariant($compilationContext);\n $compilationContext->backend->assignDouble(\n $symbolVariable,\n $resolvedExpr->getCode(),\n $compilationContext\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - }, - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Statements/Let/Variable.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 1212, - "startColumn": 25, - "charOffset": 51345, - "charLength": 1243, - "snippet": { - "text": "$symbolVariable->setDynamicTypes('double');\n if ($readDetector->detect($variable, $resolvedExpr->getOriginal())) {\n $tempVariable = $compilationContext->symbolTable->getTempVariableForWrite(\n 'double',\n $compilationContext\n );\n $codePrinter->output($tempVariable->getName() . ' = ' . $resolvedExpr->getCode() . ';');\n $symbolVariable->initVariant($compilationContext);\n $compilationContext->backend->assignDouble(\n $symbolVariable,\n $tempVariable,\n $compilationContext\n );\n } else {\n $symbolVariable->initVariant($compilationContext);\n $compilationContext->backend->assignDouble(\n $symbolVariable,\n $resolvedExpr->getCode(),\n $compilationContext\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 1212, - "startColumn": 1, - "charOffset": 51321, - "charLength": 1267, - "snippet": { - "text": " $symbolVariable->setDynamicTypes('double');\n if ($readDetector->detect($variable, $resolvedExpr->getOriginal())) {\n $tempVariable = $compilationContext->symbolTable->getTempVariableForWrite(\n 'double',\n $compilationContext\n );\n $codePrinter->output($tempVariable->getName() . ' = ' . $resolvedExpr->getCode() . ';');\n $symbolVariable->initVariant($compilationContext);\n $compilationContext->backend->assignDouble(\n $symbolVariable,\n $tempVariable,\n $compilationContext\n );\n } else {\n $symbolVariable->initVariant($compilationContext);\n $compilationContext->backend->assignDouble(\n $symbolVariable,\n $resolvedExpr->getCode(),\n $compilationContext\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "8a3bd0f30a4d5226b63462648dc8491ef5daa237aa4867268be782b6cc8b1b54" - }, - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "DuplicatedCode", - "kind": "fail", - "level": "note", - "message": { - "text": "Duplicated code", - "markdown": "Duplicated code" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Operators/Arithmetical/DivOperator.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 311, - "startColumn": 41, - "charOffset": 13127, - "charLength": 1363, - "snippet": { - "text": "$compilationContext->headersManager->add('kernel/operators');\n if ($variableRight->isLocalOnly()) {\n return new CompiledExpression(\n 'double',\n 'zephir_safe_div_long_zval(' . $variableLeft->getName(\n ) . ', &' . $variableRight->getName() . ')',\n $expression\n );\n } else {\n $variableRightCode = $compilationContext->backend->getVariableCode(\n $variableRight\n );\n\n return new CompiledExpression(\n 'double',\n 'zephir_safe_div_long_zval(' . $variableLeft->getName(\n ) . ', ' . $variableRightCode . ')',\n $expression\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 311, - "startColumn": 1, - "charOffset": 13087, - "charLength": 1403, - "snippet": { - "text": " $compilationContext->headersManager->add('kernel/operators');\n if ($variableRight->isLocalOnly()) {\n return new CompiledExpression(\n 'double',\n 'zephir_safe_div_long_zval(' . $variableLeft->getName(\n ) . ', &' . $variableRight->getName() . ')',\n $expression\n );\n } else {\n $variableRightCode = $compilationContext->backend->getVariableCode(\n $variableRight\n );\n\n return new CompiledExpression(\n 'double',\n 'zephir_safe_div_long_zval(' . $variableLeft->getName(\n ) . ', ' . $variableRightCode . ')',\n $expression\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - }, { "physicalLocation": { "artifactLocation": { @@ -30341,77 +30055,22 @@ "uriBaseId": "SRCROOT" }, "region": { - "startLine": 405, + "startLine": 595, "startColumn": 41, - "charOffset": 18298, - "charLength": 1363, + "charOffset": 28052, + "charLength": 540, "snippet": { - "text": "$compilationContext->headersManager->add('kernel/operators');\n if ($variableRight->isLocalOnly()) {\n return new CompiledExpression(\n 'double',\n 'zephir_safe_div_long_zval(' . $variableLeft->getName(\n ) . ', &' . $variableRight->getName() . ')',\n $expression\n );\n } else {\n $variableRightCode = $compilationContext->backend->getVariableCode(\n $variableRight\n );\n\n return new CompiledExpression(\n 'double',\n 'zephir_safe_div_long_zval(' . $variableLeft->getName(\n ) . ', ' . $variableRightCode . ')',\n $expression\n );\n }\n break;" + "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedCode = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedCode . ', ' . $op1 . ', ' . $op2 . ');'\n );" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 405, + "startLine": 595, "startColumn": 1, - "charOffset": 18258, - "charLength": 1403, - "snippet": { - "text": " $compilationContext->headersManager->add('kernel/operators');\n if ($variableRight->isLocalOnly()) {\n return new CompiledExpression(\n 'double',\n 'zephir_safe_div_long_zval(' . $variableLeft->getName(\n ) . ', &' . $variableRight->getName() . ')',\n $expression\n );\n } else {\n $variableRightCode = $compilationContext->backend->getVariableCode(\n $variableRight\n );\n\n return new CompiledExpression(\n 'double',\n 'zephir_safe_div_long_zval(' . $variableLeft->getName(\n ) . ', ' . $variableRightCode . ')',\n $expression\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "8fa7d657bb1c0f7c05c9876141421a5b43d8ee26e980f5d92d23516208d44150" - }, - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "DuplicatedCode", - "kind": "fail", - "level": "note", - "message": { - "text": "Duplicated code", - "markdown": "Duplicated code" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Optimizers/FunctionCall/VarDumpOptimizer.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 47, - "startColumn": 13, - "charOffset": 1290, - "charLength": 1935, - "snippet": { - "text": "if (!$variable || !$variable->isVariable()) {\n /*\n * Complex expressions require a temporary variable\n */\n switch ($resolvedParam->getType()) {\n case 'array':\n $type = 'array';\n break;\n default:\n $type = 'variable';\n break;\n }\n\n $variable = $context->symbolTable->addTemp($type, $context);\n $variable->initVariant($context);\n\n $statement = new LetStatement([\n 'type' => 'let',\n 'assignments' => [\n [\n 'assign-type' => $type,\n 'variable' => $variable->getName(),\n 'operator' => 'assign',\n 'expr' => [\n 'type' => $resolvedParam->getType(),\n 'value' => $resolvedParam->getCode(),\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n ],\n ]);\n $statement->compile($context);\n } else {\n /**\n * This mark the variable as used.\n */\n $variable = $context->symbolTable->getVariableForRead($resolvedParam->getCode(), $context, $expression);\n }\n\n $symbol = $context->backend->getVariableCode($variable);" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 47, - "startColumn": 13, - "charOffset": 1290, - "charLength": 1935, + "charOffset": 28012, + "charLength": 580, "snippet": { - "text": "if (!$variable || !$variable->isVariable()) {\n /*\n * Complex expressions require a temporary variable\n */\n switch ($resolvedParam->getType()) {\n case 'array':\n $type = 'array';\n break;\n default:\n $type = 'variable';\n break;\n }\n\n $variable = $context->symbolTable->addTemp($type, $context);\n $variable->initVariant($context);\n\n $statement = new LetStatement([\n 'type' => 'let',\n 'assignments' => [\n [\n 'assign-type' => $type,\n 'variable' => $variable->getName(),\n 'operator' => 'assign',\n 'expr' => [\n 'type' => $resolvedParam->getType(),\n 'value' => $resolvedParam->getCode(),\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n ],\n ]);\n $statement->compile($context);\n } else {\n /**\n * This mark the variable as used.\n */\n $variable = $context->symbolTable->getVariableForRead($resolvedParam->getCode(), $context, $expression);\n }\n\n $symbol = $context->backend->getVariableCode($variable);" + "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedCode = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedCode . ', ' . $op1 . ', ' . $op2 . ');'\n );" }, "sourceLanguage": "PHP" } @@ -30426,81 +30085,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Optimizers/FunctionCall/VarExportOptimizer.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 57, - "startColumn": 9, - "charOffset": 1516, - "charLength": 1790, - "snippet": { - "text": "if (!$symbolVariable || !$symbolVariable->isVariable()) {\n /*\n * Complex expressions require a temporary variable\n */\n switch ($resolvedParam->getType()) {\n case 'array':\n $type = 'array';\n break;\n default:\n $type = 'variable';\n break;\n }\n\n $variable = $context->symbolTable->addTemp($type, $context);\n $variable->initVariant($context);\n\n $statement = new LetStatement([\n 'type' => 'let',\n 'assignments' => [\n [\n 'assign-type' => $type,\n 'variable' => $variable->getName(),\n 'operator' => 'assign',\n 'expr' => [\n 'type' => $resolvedParam->getType(),\n 'value' => $resolvedParam->getCode(),\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n ],\n ]);\n $statement->compile($context);\n } else {\n /**\n * This mark the variable as used.\n */\n $variable = $context->symbolTable->getVariableForRead($resolvedParam->getCode(), $context, $expression);\n }\n $variableSymbol = $context->backend->getVariableCode($variable);" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 57, - "startColumn": 1, - "charOffset": 1508, - "charLength": 1798, - "snippet": { - "text": " if (!$symbolVariable || !$symbolVariable->isVariable()) {\n /*\n * Complex expressions require a temporary variable\n */\n switch ($resolvedParam->getType()) {\n case 'array':\n $type = 'array';\n break;\n default:\n $type = 'variable';\n break;\n }\n\n $variable = $context->symbolTable->addTemp($type, $context);\n $variable->initVariant($context);\n\n $statement = new LetStatement([\n 'type' => 'let',\n 'assignments' => [\n [\n 'assign-type' => $type,\n 'variable' => $variable->getName(),\n 'operator' => 'assign',\n 'expr' => [\n 'type' => $resolvedParam->getType(),\n 'value' => $resolvedParam->getCode(),\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n ],\n ]);\n $statement->compile($context);\n } else {\n /**\n * This mark the variable as used.\n */\n $variable = $context->symbolTable->getVariableForRead($resolvedParam->getCode(), $context, $expression);\n }\n $variableSymbol = $context->backend->getVariableCode($variable);" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "9c667466bb2f3e596e8dc820bfd85552e107e589217e244f70d57b9be4e7fc54" - }, - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "DuplicatedCode", - "kind": "fail", - "level": "note", - "message": { - "text": "Duplicated code", - "markdown": "Duplicated code" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Operators/Arithmetical/DivOperator.php", + "uri": "src/Operators/Arithmetical/ModOperator.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 595, + "startLine": 630, "startColumn": 41, - "charOffset": 28534, - "charLength": 1044, + "charOffset": 29563, + "charLength": 526, "snippet": { - "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedCode = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedCode . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" + "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 595, + "startLine": 630, "startColumn": 1, - "charOffset": 28494, - "charLength": 1084, + "charOffset": 29523, + "charLength": 566, "snippet": { - "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedCode = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedCode . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" + "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" }, "sourceLanguage": "PHP" } @@ -30519,22 +30123,22 @@ "uriBaseId": "SRCROOT" }, "region": { - "startLine": 630, - "startColumn": 41, - "charOffset": 30297, - "charLength": 1204, + "startLine": 745, + "startColumn": 49, + "charOffset": 35768, + "charLength": 566, "snippet": { - "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression(\n 'variable',\n $expected->getName(),\n $expression\n );" + "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 630, + "startLine": 745, "startColumn": 1, - "charOffset": 30257, - "charLength": 1244, + "charOffset": 35720, + "charLength": 614, "snippet": { - "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression(\n 'variable',\n $expected->getName(),\n $expression\n );" + "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" }, "sourceLanguage": "PHP" } @@ -30553,22 +30157,22 @@ "uriBaseId": "SRCROOT" }, "region": { - "startLine": 642, + "startLine": 641, "startColumn": 41, - "charOffset": 30877, - "charLength": 1050, + "charOffset": 30112, + "charLength": 546, "snippet": { - "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedSymbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedSymbol . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" + "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedSymbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedSymbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 642, + "startLine": 641, "startColumn": 1, - "charOffset": 30837, - "charLength": 1090, + "charOffset": 30072, + "charLength": 586, "snippet": { - "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedSymbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedSymbol . ', ' . $op1 . ', ' . $op2 . ');'\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" + "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedSymbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedSymbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" }, "sourceLanguage": "PHP" } @@ -30582,8 +30186,9 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "9ca54e68a3caa7b98880634a9404b885939c1fbe4d17af0129629eef2770f078" + "equalIndicator/v1": "6d36e4ef6709e868286eaa84de3db359e148aee2d9ea1c2b24fc6a6c90c45642" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -30604,26 +30209,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Operators/Arithmetical/DivOperator.php", + "uri": "src/Optimizers/FunctionCall/FilePutContentsOptimizer.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 595, - "startColumn": 41, - "charOffset": 28534, - "charLength": 540, + "startLine": 42, + "startColumn": 9, + "charOffset": 981, + "charLength": 582, "snippet": { - "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedCode = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedCode . ', ' . $op1 . ', ' . $op2 . ');'\n );" + "text": "if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n $context->headersManager->add('kernel/file');\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable();\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 595, + "startLine": 42, "startColumn": 1, - "charOffset": 28494, - "charLength": 580, + "charOffset": 973, + "charLength": 590, "snippet": { - "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedCode = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedCode . ', ' . $op1 . ', ' . $op2 . ');'\n );" + "text": " if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n $context->headersManager->add('kernel/file');\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable();\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);" }, "sourceLanguage": "PHP" } @@ -30638,26 +30243,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Operators/Arithmetical/ModOperator.php", + "uri": "src/Optimizers/FunctionCall/FwriteOptimizer.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 630, - "startColumn": 41, - "charOffset": 30297, - "charLength": 526, + "startLine": 42, + "startColumn": 9, + "charOffset": 952, + "charLength": 582, "snippet": { - "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" + "text": "if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n $context->headersManager->add('kernel/file');\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable();\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 630, + "startLine": 42, "startColumn": 1, - "charOffset": 30257, - "charLength": 566, + "charOffset": 944, + "charLength": 590, "snippet": { - "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" + "text": " if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n $context->headersManager->add('kernel/file');\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable();\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);" }, "sourceLanguage": "PHP" } @@ -30668,30 +30273,52 @@ "kind": "module" } ] - }, + } + ], + "partialFingerprints": { + "equalIndicator/v1": "85c329c4716072967778fb33b25cf012514ce0ed7d1994738b7a6d4e5857125c" + }, + "baselineState": "unchanged", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "DuplicatedCode", + "kind": "fail", + "level": "note", + "message": { + "text": "Duplicated code", + "markdown": "Duplicated code" + }, + "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "src/Operators/Arithmetical/ModOperator.php", + "uri": "src/Optimizers/FunctionCall/VarDumpOptimizer.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 745, - "startColumn": 49, - "charOffset": 36616, - "charLength": 566, + "startLine": 47, + "startColumn": 13, + "charOffset": 1290, + "charLength": 1935, "snippet": { - "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" + "text": "if (!$variable || !$variable->isVariable()) {\n /*\n * Complex expressions require a temporary variable\n */\n switch ($resolvedParam->getType()) {\n case 'array':\n $type = 'array';\n break;\n default:\n $type = 'variable';\n break;\n }\n\n $variable = $context->symbolTable->addTemp($type, $context);\n $variable->initVariant($context);\n\n $statement = new LetStatement([\n 'type' => 'let',\n 'assignments' => [\n [\n 'assign-type' => $type,\n 'variable' => $variable->getName(),\n 'operator' => 'assign',\n 'expr' => [\n 'type' => $resolvedParam->getType(),\n 'value' => $resolvedParam->getCode(),\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n ],\n ]);\n $statement->compile($context);\n } else {\n /**\n * This mark the variable as used.\n */\n $variable = $context->symbolTable->getVariableForRead($resolvedParam->getCode(), $context, $expression);\n }\n\n $symbol = $context->backend->getVariableCode($variable);" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 745, - "startColumn": 1, - "charOffset": 36568, - "charLength": 614, + "startLine": 47, + "startColumn": 13, + "charOffset": 1290, + "charLength": 1935, "snippet": { - "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $symbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $symbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" + "text": "if (!$variable || !$variable->isVariable()) {\n /*\n * Complex expressions require a temporary variable\n */\n switch ($resolvedParam->getType()) {\n case 'array':\n $type = 'array';\n break;\n default:\n $type = 'variable';\n break;\n }\n\n $variable = $context->symbolTable->addTemp($type, $context);\n $variable->initVariant($context);\n\n $statement = new LetStatement([\n 'type' => 'let',\n 'assignments' => [\n [\n 'assign-type' => $type,\n 'variable' => $variable->getName(),\n 'operator' => 'assign',\n 'expr' => [\n 'type' => $resolvedParam->getType(),\n 'value' => $resolvedParam->getCode(),\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n ],\n ]);\n $statement->compile($context);\n } else {\n /**\n * This mark the variable as used.\n */\n $variable = $context->symbolTable->getVariableForRead($resolvedParam->getCode(), $context, $expression);\n }\n\n $symbol = $context->backend->getVariableCode($variable);" }, "sourceLanguage": "PHP" } @@ -30706,26 +30333,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Operators/Bitwise/BitwiseBaseOperator.php", + "uri": "src/Optimizers/FunctionCall/VarExportOptimizer.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 642, - "startColumn": 41, - "charOffset": 30877, - "charLength": 546, + "startLine": 57, + "startColumn": 9, + "charOffset": 1516, + "charLength": 1790, "snippet": { - "text": "$op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedSymbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedSymbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" + "text": "if (!$symbolVariable || !$symbolVariable->isVariable()) {\n /*\n * Complex expressions require a temporary variable\n */\n switch ($resolvedParam->getType()) {\n case 'array':\n $type = 'array';\n break;\n default:\n $type = 'variable';\n break;\n }\n\n $variable = $context->symbolTable->addTemp($type, $context);\n $variable->initVariant($context);\n\n $statement = new LetStatement([\n 'type' => 'let',\n 'assignments' => [\n [\n 'assign-type' => $type,\n 'variable' => $variable->getName(),\n 'operator' => 'assign',\n 'expr' => [\n 'type' => $resolvedParam->getType(),\n 'value' => $resolvedParam->getCode(),\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n ],\n ]);\n $statement->compile($context);\n } else {\n /**\n * This mark the variable as used.\n */\n $variable = $context->symbolTable->getVariableForRead($resolvedParam->getCode(), $context, $expression);\n }\n $variableSymbol = $context->backend->getVariableCode($variable);" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 642, + "startLine": 57, "startColumn": 1, - "charOffset": 30837, - "charLength": 586, + "charOffset": 1508, + "charLength": 1798, "snippet": { - "text": " $op2 = $compilationContext->backend->getVariableCode($variableRight);\n\n $expected = $this->getExpected($compilationContext, $expression);\n $expectedSymbol = $compilationContext->backend->getVariableCode($expected);\n $compilationContext->codePrinter->output(\n $this->zvalOperator . '(' . $expectedSymbol . ', ' . $op1 . ', ' . $op2 . ');'\n );" + "text": " if (!$symbolVariable || !$symbolVariable->isVariable()) {\n /*\n * Complex expressions require a temporary variable\n */\n switch ($resolvedParam->getType()) {\n case 'array':\n $type = 'array';\n break;\n default:\n $type = 'variable';\n break;\n }\n\n $variable = $context->symbolTable->addTemp($type, $context);\n $variable->initVariant($context);\n\n $statement = new LetStatement([\n 'type' => 'let',\n 'assignments' => [\n [\n 'assign-type' => $type,\n 'variable' => $variable->getName(),\n 'operator' => 'assign',\n 'expr' => [\n 'type' => $resolvedParam->getType(),\n 'value' => $resolvedParam->getCode(),\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n 'file' => $expression['file'],\n 'line' => $expression['line'],\n 'char' => $expression['char'],\n ],\n ],\n ]);\n $statement->compile($context);\n } else {\n /**\n * This mark the variable as used.\n */\n $variable = $context->symbolTable->getVariableForRead($resolvedParam->getCode(), $context, $expression);\n }\n $variableSymbol = $context->backend->getVariableCode($variable);" }, "sourceLanguage": "PHP" } @@ -30739,8 +30366,9 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "9cb52081a37ee97f431a9a31ff429b11d9e13096e945235a0344b97b9d8df208" + "equalIndicator/v1": "9c667466bb2f3e596e8dc820bfd85552e107e589217e244f70d57b9be4e7fc54" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -30864,6 +30492,7 @@ "partialFingerprints": { "equalIndicator/v1": "9cc60933b60115369adb7ae20f2fad84bcadcda683e07663d606855d40f8d9bc" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -30953,6 +30582,7 @@ "partialFingerprints": { "equalIndicator/v1": "a2db45685cf7e89e0b892e3f49ab2536a98f512729f5bc953c503ea69172a94e" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -31042,95 +30672,7 @@ "partialFingerprints": { "equalIndicator/v1": "a520debf0252582235eface5631c62fea290e447afb6e745f53d01fcba26ee87" }, - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "DuplicatedCode", - "kind": "fail", - "level": "note", - "message": { - "text": "Duplicated code", - "markdown": "Duplicated code" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Statements/Let/Variable.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 1466, - "startColumn": 33, - "charOffset": 64736, - "charLength": 1147, - "snippet": { - "text": "if ($itemVariable->getName() != $variable) {\n $symbolVariable->setMustInitNull(true);\n $compilationContext->symbolTable->mustGrownStack(true);\n\n /* Inherit the dynamic type data from the assigned value */\n $symbolVariable->setDynamicTypes(array_keys($itemVariable->getDynamicTypes()));\n\n $symbolVariable->setClassTypes($itemVariable->getClassTypes());\n $symbolVariable->increaseVariantIfNull();\n\n $compilationContext->backend->copyOnWrite(\n $symbolVariable,\n $itemVariable,\n $compilationContext\n );\n if ($itemVariable->isTemporal()) {\n $itemVariable->setIdle(true);\n }\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 1466, - "startColumn": 1, - "charOffset": 64704, - "charLength": 1179, - "snippet": { - "text": " if ($itemVariable->getName() != $variable) {\n $symbolVariable->setMustInitNull(true);\n $compilationContext->symbolTable->mustGrownStack(true);\n\n /* Inherit the dynamic type data from the assigned value */\n $symbolVariable->setDynamicTypes(array_keys($itemVariable->getDynamicTypes()));\n\n $symbolVariable->setClassTypes($itemVariable->getClassTypes());\n $symbolVariable->increaseVariantIfNull();\n\n $compilationContext->backend->copyOnWrite(\n $symbolVariable,\n $itemVariable,\n $compilationContext\n );\n if ($itemVariable->isTemporal()) {\n $itemVariable->setIdle(true);\n }\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - }, - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Statements/Let/Variable.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 1524, - "startColumn": 33, - "charOffset": 67967, - "charLength": 1146, - "snippet": { - "text": "if ($itemVariable->getName() != $variable) {\n $symbolVariable->setMustInitNull(true);\n $compilationContext->symbolTable->mustGrownStack(true);\n\n /* Inherit the dynamic type data from the assigned value */\n $symbolVariable->setDynamicTypes(array_keys($itemVariable->getDynamicTypes()));\n $symbolVariable->setClassTypes($itemVariable->getClassTypes());\n $symbolVariable->increaseVariantIfNull();\n\n $compilationContext->backend->copyOnWrite(\n $symbolVariable,\n $itemVariable,\n $compilationContext\n );\n if ($itemVariable->isTemporal()) {\n $itemVariable->setIdle(true);\n }\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 1524, - "startColumn": 1, - "charOffset": 67935, - "charLength": 1178, - "snippet": { - "text": " if ($itemVariable->getName() != $variable) {\n $symbolVariable->setMustInitNull(true);\n $compilationContext->symbolTable->mustGrownStack(true);\n\n /* Inherit the dynamic type data from the assigned value */\n $symbolVariable->setDynamicTypes(array_keys($itemVariable->getDynamicTypes()));\n $symbolVariable->setClassTypes($itemVariable->getClassTypes());\n $symbolVariable->increaseVariantIfNull();\n\n $compilationContext->backend->copyOnWrite(\n $symbolVariable,\n $itemVariable,\n $compilationContext\n );\n if ($itemVariable->isTemporal()) {\n $itemVariable->setIdle(true);\n }\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "a6513ede383af31711fea0aea621d5c1ea4a4fea5bc605bcff58b2b3d6a4be8c" - }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -31220,6 +30762,7 @@ "partialFingerprints": { "equalIndicator/v1": "b552b9808f9cf70b1ecefa055b86445de001d35dad47517e9435eca0f8a97632" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -31309,95 +30852,7 @@ "partialFingerprints": { "equalIndicator/v1": "b86f2c8f01924e92a9b683c40d0371fd72e37cdd8bc53ace61830c749bcb2f8a" }, - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "DuplicatedCode", - "kind": "fail", - "level": "note", - "message": { - "text": "Duplicated code", - "markdown": "Duplicated code" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Operators/Arithmetical/DivOperator.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 134, - "startColumn": 17, - "charOffset": 5064, - "charLength": 1069, - "snippet": { - "text": "switch ($right->getType()) {\n case 'int':\n case 'uint':\n case 'long':\n case 'ulong':\n case 'double':\n return new CompiledExpression(\n 'long',\n '(' . $left->getBooleanCode() . ' - ' . $right->getCode() . ')',\n $expression\n );\n\n case 'bool':\n return new CompiledExpression(\n 'bool',\n '(' . $left->getBooleanCode() . ' ' . $this->bitOperator . ' ' . $right->getBooleanCode(\n ) . ')',\n $expression\n );\n\n default:\n throw new CompilerException(\n \"Cannot operate 'bool' with '\" . $right->getType() . \"'\",\n $expression\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 134, - "startColumn": 1, - "charOffset": 5048, - "charLength": 1085, - "snippet": { - "text": " switch ($right->getType()) {\n case 'int':\n case 'uint':\n case 'long':\n case 'ulong':\n case 'double':\n return new CompiledExpression(\n 'long',\n '(' . $left->getBooleanCode() . ' - ' . $right->getCode() . ')',\n $expression\n );\n\n case 'bool':\n return new CompiledExpression(\n 'bool',\n '(' . $left->getBooleanCode() . ' ' . $this->bitOperator . ' ' . $right->getBooleanCode(\n ) . ')',\n $expression\n );\n\n default:\n throw new CompilerException(\n \"Cannot operate 'bool' with '\" . $right->getType() . \"'\",\n $expression\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - }, - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Operators/Arithmetical/ModOperator.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 143, - "startColumn": 17, - "charOffset": 5577, - "charLength": 1069, - "snippet": { - "text": "switch ($right->getType()) {\n case 'int':\n case 'uint':\n case 'long':\n case 'ulong':\n case 'double':\n return new CompiledExpression(\n 'long',\n '(' . $left->getBooleanCode() . ' - ' . $right->getCode() . ')',\n $expression\n );\n\n case 'bool':\n return new CompiledExpression(\n 'bool',\n '(' . $left->getBooleanCode() . ' ' . $this->bitOperator . ' ' . $right->getBooleanCode(\n ) . ')',\n $expression\n );\n\n default:\n throw new CompilerException(\n \"Cannot operate 'bool' with '\" . $right->getType() . \"'\",\n $expression\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 143, - "startColumn": 1, - "charOffset": 5561, - "charLength": 1085, - "snippet": { - "text": " switch ($right->getType()) {\n case 'int':\n case 'uint':\n case 'long':\n case 'ulong':\n case 'double':\n return new CompiledExpression(\n 'long',\n '(' . $left->getBooleanCode() . ' - ' . $right->getCode() . ')',\n $expression\n );\n\n case 'bool':\n return new CompiledExpression(\n 'bool',\n '(' . $left->getBooleanCode() . ' ' . $this->bitOperator . ' ' . $right->getBooleanCode(\n ) . ')',\n $expression\n );\n\n default:\n throw new CompilerException(\n \"Cannot operate 'bool' with '\" . $right->getType() . \"'\",\n $expression\n );\n }\n break;" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "ba49be6454237722094770ba33c98775c21913ca28a248521970ce2cb6005048" - }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -31487,6 +30942,7 @@ "partialFingerprints": { "equalIndicator/v1": "c297ffead8a798d3eb526d472b3c5f063c68e46328f4bd67f2159b53db037e0c" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -31644,6 +31100,7 @@ "partialFingerprints": { "equalIndicator/v1": "daceb7645de2ce66ffc3380fd5e91089998f247f3c6a0bf1f6021c7b53ab00cb" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -31733,6 +31190,7 @@ "partialFingerprints": { "equalIndicator/v1": "df506eed38ba50eda828a4a252b9c78b9430fb05d68dcc90ac65ce12ab5eb980" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -31753,115 +31211,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Optimizers/FunctionCall/MemstrOptimizer.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 41, - "startColumn": 9, - "charOffset": 904, - "charLength": 392, - "snippet": { - "text": "if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n if ('string' == $expression['parameters'][1]['parameter']['type']) {\n $str = Name::addSlashes($expression['parameters'][1]['parameter']['value']);\n unset($expression['parameters'][1]);\n }" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 41, - "startColumn": 1, - "charOffset": 896, - "charLength": 400, - "snippet": { - "text": " if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n if ('string' == $expression['parameters'][1]['parameter']['type']) {\n $str = Name::addSlashes($expression['parameters'][1]['parameter']['value']);\n unset($expression['parameters'][1]);\n }" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - }, - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Optimizers/FunctionCall/MethodExistsOptimizer.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 38, - "startColumn": 9, - "charOffset": 879, - "charLength": 392, - "snippet": { - "text": "if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n if ('string' == $expression['parameters'][1]['parameter']['type']) {\n $str = Name::addSlashes($expression['parameters'][1]['parameter']['value']);\n unset($expression['parameters'][1]);\n }" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 38, - "startColumn": 1, - "charOffset": 871, - "charLength": 400, - "snippet": { - "text": " if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n if ('string' == $expression['parameters'][1]['parameter']['type']) {\n $str = Name::addSlashes($expression['parameters'][1]['parameter']['value']);\n unset($expression['parameters'][1]);\n }" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "e1dc5f4694fcbd691dc96a462008cbdf13f317264d1ba5f846c6407a43296598" - }, - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "DuplicatedCode", - "kind": "fail", - "level": "note", - "message": { - "text": "Duplicated code", - "markdown": "Duplicated code" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Statements/Let/StaticPropertyAppend.php", + "uri": "src/Optimizers/FunctionCall/MemstrOptimizer.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 50, + "startLine": 41, "startColumn": 9, - "charOffset": 1166, - "charLength": 2877, + "charOffset": 904, + "charLength": 392, "snippet": { - "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\"Cannot locate class '\" . $className . \"'\", $statement);\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" + "text": "if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n if ('string' == $expression['parameters'][1]['parameter']['type']) {\n $str = Name::addSlashes($expression['parameters'][1]['parameter']['value']);\n unset($expression['parameters'][1]);\n }" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 50, - "startColumn": 9, - "charOffset": 1166, - "charLength": 2877, + "startLine": 41, + "startColumn": 1, + "charOffset": 896, + "charLength": 400, "snippet": { - "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\"Cannot locate class '\" . $className . \"'\", $statement);\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" + "text": " if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n if ('string' == $expression['parameters'][1]['parameter']['type']) {\n $str = Name::addSlashes($expression['parameters'][1]['parameter']['value']);\n unset($expression['parameters'][1]);\n }" }, "sourceLanguage": "PHP" } @@ -31876,26 +31245,82 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Statements/Let/StaticPropertyArrayIndex.php", + "uri": "src/Optimizers/FunctionCall/MethodExistsOptimizer.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 52, + "startLine": 38, "startColumn": 9, - "charOffset": 1242, - "charLength": 2877, + "charOffset": 879, + "charLength": 392, "snippet": { - "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\"Cannot locate class '\" . $className . \"'\", $statement);\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" + "text": "if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n if ('string' == $expression['parameters'][1]['parameter']['type']) {\n $str = Name::addSlashes($expression['parameters'][1]['parameter']['value']);\n unset($expression['parameters'][1]);\n }" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 52, - "startColumn": 9, - "charOffset": 1242, - "charLength": 2877, + "startLine": 38, + "startColumn": 1, + "charOffset": 871, + "charLength": 400, "snippet": { - "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\"Cannot locate class '\" . $className . \"'\", $statement);\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" + "text": " if (!isset($expression['parameters'])) {\n return false;\n }\n\n if (2 != count($expression['parameters'])) {\n return false;\n }\n\n if ('string' == $expression['parameters'][1]['parameter']['type']) {\n $str = Name::addSlashes($expression['parameters'][1]['parameter']['value']);\n unset($expression['parameters'][1]);\n }" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e1dc5f4694fcbd691dc96a462008cbdf13f317264d1ba5f846c6407a43296598" + }, + "baselineState": "unchanged", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "DuplicatedCode", + "kind": "fail", + "level": "note", + "message": { + "text": "Duplicated code", + "markdown": "Duplicated code" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Operators/Arithmetical/ArithmeticalBaseOperator.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 595, + "startColumn": 41, + "charOffset": 27996, + "charLength": 1312, + "snippet": { + "text": "$compilationContext->headersManager->add('kernel/operators');\n\n $expected = $this->getExpected($compilationContext, $expression);\n $compilationContext->backend->zvalOperator(\n $this->zvalOperator,\n $expected,\n $variableLeft,\n $variableRight,\n $compilationContext\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n $expected->setDynamicTypes(\n $this->getDynamicTypes($variableLeft, $variableRight)\n );\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 595, + "startColumn": 1, + "charOffset": 27956, + "charLength": 1352, + "snippet": { + "text": " $compilationContext->headersManager->add('kernel/operators');\n\n $expected = $this->getExpected($compilationContext, $expression);\n $compilationContext->backend->zvalOperator(\n $this->zvalOperator,\n $expected,\n $variableLeft,\n $variableRight,\n $compilationContext\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n $expected->setDynamicTypes(\n $this->getDynamicTypes($variableLeft, $variableRight)\n );\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" }, "sourceLanguage": "PHP" } @@ -31910,26 +31335,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Statements/Let/StaticPropertyArrayIndexAppend.php", + "uri": "src/Operators/Arithmetical/ArithmeticalBaseOperator.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 52, - "startColumn": 9, - "charOffset": 1231, - "charLength": 2947, + "startLine": 701, + "startColumn": 41, + "charOffset": 33776, + "charLength": 1312, "snippet": { - "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\n \"Cannot locate class '\" . $className . \"'\",\n $statement\n );\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" + "text": "$compilationContext->headersManager->add('kernel/operators');\n\n $expected = $this->getExpected($compilationContext, $expression);\n $compilationContext->backend->zvalOperator(\n $this->zvalOperator,\n $expected,\n $variableLeft,\n $variableRight,\n $compilationContext\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n $expected->setDynamicTypes(\n $this->getDynamicTypes($variableLeft, $variableRight)\n );\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 52, - "startColumn": 9, - "charOffset": 1231, - "charLength": 2947, + "startLine": 701, + "startColumn": 1, + "charOffset": 33736, + "charLength": 1352, "snippet": { - "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\n \"Cannot locate class '\" . $className . \"'\",\n $statement\n );\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" + "text": " $compilationContext->headersManager->add('kernel/operators');\n\n $expected = $this->getExpected($compilationContext, $expression);\n $compilationContext->backend->zvalOperator(\n $this->zvalOperator,\n $expected,\n $variableLeft,\n $variableRight,\n $compilationContext\n );\n\n if ($variableLeft->isTemporal()) {\n $variableLeft->setIdle(true);\n }\n if ($variableRight->isTemporal()) {\n $variableRight->setIdle(true);\n }\n\n $expected->setDynamicTypes(\n $this->getDynamicTypes($variableLeft, $variableRight)\n );\n\n return new CompiledExpression('variable', $expected->getName(), $expression);" }, "sourceLanguage": "PHP" } @@ -31943,8 +31368,9 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "e6388c9a408c11b6121122837c3a96fa31789243a4f2e1d0ce1a771dceab2000" + "equalIndicator/v1": "e2ab5b6f5941508f0ba058657d169f316fe00dd42f7b672ac1f6eccef2d0ec30" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -31965,26 +31391,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Optimizers/FunctionCall/TrimOptimizer.php", + "uri": "src/Statements/Let/StaticPropertyAppend.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 48, + "startLine": 50, "startColumn": 9, - "charOffset": 1087, - "charLength": 992, + "charOffset": 1166, + "charLength": 2877, "snippet": { - "text": "$charlist = 'NULL ';\n if (2 == count($expression['parameters'])) {\n if ('null' == $expression['parameters'][1]['parameter']['type']) {\n unset($expression['parameters'][1]);\n }\n }\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable(true, $context);\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $context->headersManager->add('kernel/string');\n\n $symbolVariable->setDynamicTypes('string');\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);\n\n if (isset($resolvedParams[1])) {\n $charlist = $resolvedParams[1];\n }\n\n if ($call->mustInitSymbolVariable()) {\n $symbolVariable->initVariant($context);\n }\n\n $symbol = $context->backend->getVariableCode($symbolVariable);" + "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\"Cannot locate class '\" . $className . \"'\", $statement);\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 48, - "startColumn": 1, - "charOffset": 1079, - "charLength": 1000, + "startLine": 50, + "startColumn": 9, + "charOffset": 1166, + "charLength": 2877, "snippet": { - "text": " $charlist = 'NULL ';\n if (2 == count($expression['parameters'])) {\n if ('null' == $expression['parameters'][1]['parameter']['type']) {\n unset($expression['parameters'][1]);\n }\n }\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable(true, $context);\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $context->headersManager->add('kernel/string');\n\n $symbolVariable->setDynamicTypes('string');\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);\n\n if (isset($resolvedParams[1])) {\n $charlist = $resolvedParams[1];\n }\n\n if ($call->mustInitSymbolVariable()) {\n $symbolVariable->initVariant($context);\n }\n\n $symbol = $context->backend->getVariableCode($symbolVariable);" + "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\"Cannot locate class '\" . $className . \"'\", $statement);\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" }, "sourceLanguage": "PHP" } @@ -31999,26 +31425,60 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Optimizers/FunctionCall/UncamelizeOptimizer.php", + "uri": "src/Statements/Let/StaticPropertyArrayIndex.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 50, + "startLine": 52, "startColumn": 9, - "charOffset": 1245, - "charLength": 994, + "charOffset": 1242, + "charLength": 2877, "snippet": { - "text": "$delimiter = 'NULL ';\n if (2 == count($expression['parameters'])) {\n if ('null' == $expression['parameters'][1]['parameter']['type']) {\n unset($expression['parameters'][1]);\n }\n }\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable(true, $context);\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $context->headersManager->add('kernel/string');\n\n $symbolVariable->setDynamicTypes('string');\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);\n\n if (isset($resolvedParams[1])) {\n $delimiter = $resolvedParams[1];\n }\n\n if ($call->mustInitSymbolVariable()) {\n $symbolVariable->initVariant($context);\n }\n\n $symbol = $context->backend->getVariableCode($symbolVariable);" + "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\"Cannot locate class '\" . $className . \"'\", $statement);\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 50, - "startColumn": 1, - "charOffset": 1237, - "charLength": 1002, + "startLine": 52, + "startColumn": 9, + "charOffset": 1242, + "charLength": 2877, "snippet": { - "text": " $delimiter = 'NULL ';\n if (2 == count($expression['parameters'])) {\n if ('null' == $expression['parameters'][1]['parameter']['type']) {\n unset($expression['parameters'][1]);\n }\n }\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable(true, $context);\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $context->headersManager->add('kernel/string');\n\n $symbolVariable->setDynamicTypes('string');\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);\n\n if (isset($resolvedParams[1])) {\n $delimiter = $resolvedParams[1];\n }\n\n if ($call->mustInitSymbolVariable()) {\n $symbolVariable->initVariant($context);\n }\n\n $symbol = $context->backend->getVariableCode($symbolVariable);" + "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\"Cannot locate class '\" . $className . \"'\", $statement);\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + }, + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Statements/Let/StaticPropertyArrayIndexAppend.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 52, + "startColumn": 9, + "charOffset": 1231, + "charLength": 2947, + "snippet": { + "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\n \"Cannot locate class '\" . $className . \"'\",\n $statement\n );\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 52, + "startColumn": 9, + "charOffset": 1231, + "charLength": 2947, + "snippet": { + "text": "$compiler = $compilationContext->compiler;\n if (!in_array($className, ['self', 'static', 'parent'])) {\n $className = $compilationContext->getFullName($className);\n if ($compiler->isClass($className)) {\n $classDefinition = $compiler->getClassDefinition($className);\n } else {\n if ($compiler->isBundledClass($className)) {\n $classDefinition = $compiler->getInternalClassDefinition($className);\n } else {\n throw new CompilerException(\n \"Cannot locate class '\" . $className . \"'\",\n $statement\n );\n }\n }\n } else {\n if (in_array($className, ['self', 'static'])) {\n $classDefinition = $compilationContext->classDefinition;\n } else {\n if ('parent' == $className) {\n $classDefinition = $compilationContext->classDefinition;\n $extendsClass = $classDefinition->getExtendsClass();\n if (!$extendsClass) {\n throw new CompilerException(\n 'Cannot assign static property \"'\n . $property\n . '\" on parent because class '\n . $classDefinition->getCompleteName()\n . ' does not extend any class',\n $statement\n );\n } else {\n $classDefinition = $classDefinition->getExtendsClassDefinition();\n }\n }\n }\n }\n\n $this->checkClassHasProperty(\n $classDefinition,\n $property,\n $statement\n );\n\n /** @var Property $propertyDefinition */\n $propertyDefinition = $classDefinition->getProperty($property);\n $this->checkAccessNonStaticProperty(\n $propertyDefinition,\n $classDefinition,\n $property,\n $statement\n );\n\n if ($propertyDefinition->isPrivate()) {\n if ($classDefinition != $compilationContext->classDefinition) {\n throw new CompilerException(\n \"Cannot access private static property '\"\n . $classDefinition->getCompleteName()\n . '::'\n . $property\n . \"' out of its declaring context\",\n $statement\n );\n }\n }\n\n $compilationContext->headersManager->add('kernel/object');\n $classEntry = $classDefinition->getClassEntry($compilationContext);\n $this->_assignStaticPropertyArrayMultipleIndex(\n $classEntry,\n $property,\n $resolvedExpr,\n $compilationContext,\n $statement\n );" }, "sourceLanguage": "PHP" } @@ -32032,8 +31492,9 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "ecfe95d185fb897b5b506b22c4bc611675bb9e573263e7a804a9836d4c0361df" + "equalIndicator/v1": "e6388c9a408c11b6121122837c3a96fa31789243a4f2e1d0ce1a771dceab2000" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32054,26 +31515,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Operators/Other/FetchOperator.php", + "uri": "src/Optimizers/FunctionCall/TrimOptimizer.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 140, - "startColumn": 17, - "charOffset": 5368, - "charLength": 1460, + "startLine": 48, + "startColumn": 9, + "charOffset": 1087, + "charLength": 992, "snippet": { - "text": "$exprVariable = new Expression($expression['right']['left']);\n $exprVariable->setReadOnly(true);\n $exprVariable->setNoisy(false);\n\n $exprCompiledVariable = $exprVariable->compile($compilationContext);\n if ('variable' != $exprCompiledVariable->getType()) {\n throw new CompilerException(\n 'Expression type: ' . $exprCompiledVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n $evalVariable = $compilationContext->symbolTable->getVariableForRead(\n $exprCompiledVariable->getCode(),\n $compilationContext,\n $expression['right']['left']\n );\n if ('variable' != $evalVariable->getType()) {\n throw new CompilerException(\n 'Variable type: ' . $variable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n if ($evalVariable->hasDifferentDynamicType(['undefined', 'object', 'null'])) {\n $compilationContext->logger->warning(\n 'Possible attempt to use non object in fetch operator',\n ['non-valid-fetch', $expression['right']]\n );\n }" + "text": "$charlist = 'NULL ';\n if (2 == count($expression['parameters'])) {\n if ('null' == $expression['parameters'][1]['parameter']['type']) {\n unset($expression['parameters'][1]);\n }\n }\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable(true, $context);\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $context->headersManager->add('kernel/string');\n\n $symbolVariable->setDynamicTypes('string');\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);\n\n if (isset($resolvedParams[1])) {\n $charlist = $resolvedParams[1];\n }\n\n if ($call->mustInitSymbolVariable()) {\n $symbolVariable->initVariant($context);\n }\n\n $symbol = $context->backend->getVariableCode($symbolVariable);" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 140, + "startLine": 48, "startColumn": 1, - "charOffset": 5352, - "charLength": 1476, + "charOffset": 1079, + "charLength": 1000, "snippet": { - "text": " $exprVariable = new Expression($expression['right']['left']);\n $exprVariable->setReadOnly(true);\n $exprVariable->setNoisy(false);\n\n $exprCompiledVariable = $exprVariable->compile($compilationContext);\n if ('variable' != $exprCompiledVariable->getType()) {\n throw new CompilerException(\n 'Expression type: ' . $exprCompiledVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n $evalVariable = $compilationContext->symbolTable->getVariableForRead(\n $exprCompiledVariable->getCode(),\n $compilationContext,\n $expression['right']['left']\n );\n if ('variable' != $evalVariable->getType()) {\n throw new CompilerException(\n 'Variable type: ' . $variable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n if ($evalVariable->hasDifferentDynamicType(['undefined', 'object', 'null'])) {\n $compilationContext->logger->warning(\n 'Possible attempt to use non object in fetch operator',\n ['non-valid-fetch', $expression['right']]\n );\n }" + "text": " $charlist = 'NULL ';\n if (2 == count($expression['parameters'])) {\n if ('null' == $expression['parameters'][1]['parameter']['type']) {\n unset($expression['parameters'][1]);\n }\n }\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable(true, $context);\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $context->headersManager->add('kernel/string');\n\n $symbolVariable->setDynamicTypes('string');\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);\n\n if (isset($resolvedParams[1])) {\n $charlist = $resolvedParams[1];\n }\n\n if ($call->mustInitSymbolVariable()) {\n $symbolVariable->initVariant($context);\n }\n\n $symbol = $context->backend->getVariableCode($symbolVariable);" }, "sourceLanguage": "PHP" } @@ -32088,26 +31549,26 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Operators/Other/FetchOperator.php", + "uri": "src/Optimizers/FunctionCall/UncamelizeOptimizer.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 184, - "startColumn": 17, - "charOffset": 7464, - "charLength": 1464, + "startLine": 50, + "startColumn": 9, + "charOffset": 1245, + "charLength": 994, "snippet": { - "text": "$exprVariable = new Expression($expression['right']['left']);\n $exprVariable->setReadOnly(true);\n $exprVariable->setNoisy(false);\n\n $exprCompiledVariable = $exprVariable->compile($compilationContext);\n if ('variable' != $exprCompiledVariable->getType()) {\n throw new CompilerException(\n 'Expression type: ' . $exprCompiledVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n $evalVariable = $compilationContext->symbolTable->getVariableForRead(\n $exprCompiledVariable->getCode(),\n $compilationContext,\n $expression['right']['left']\n );\n if ('variable' != $evalVariable->getType()) {\n throw new CompilerException(\n 'Variable type: ' . $evalVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n if ($evalVariable->hasDifferentDynamicType(['undefined', 'object', 'null'])) {\n $compilationContext->logger->warning(\n 'Possible attempt to use non object in fetch operator',\n ['non-valid-fetch', $expression['right']]\n );\n }" + "text": "$delimiter = 'NULL ';\n if (2 == count($expression['parameters'])) {\n if ('null' == $expression['parameters'][1]['parameter']['type']) {\n unset($expression['parameters'][1]);\n }\n }\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable(true, $context);\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $context->headersManager->add('kernel/string');\n\n $symbolVariable->setDynamicTypes('string');\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);\n\n if (isset($resolvedParams[1])) {\n $delimiter = $resolvedParams[1];\n }\n\n if ($call->mustInitSymbolVariable()) {\n $symbolVariable->initVariant($context);\n }\n\n $symbol = $context->backend->getVariableCode($symbolVariable);" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 184, + "startLine": 50, "startColumn": 1, - "charOffset": 7448, - "charLength": 1480, + "charOffset": 1237, + "charLength": 1002, "snippet": { - "text": " $exprVariable = new Expression($expression['right']['left']);\n $exprVariable->setReadOnly(true);\n $exprVariable->setNoisy(false);\n\n $exprCompiledVariable = $exprVariable->compile($compilationContext);\n if ('variable' != $exprCompiledVariable->getType()) {\n throw new CompilerException(\n 'Expression type: ' . $exprCompiledVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n $evalVariable = $compilationContext->symbolTable->getVariableForRead(\n $exprCompiledVariable->getCode(),\n $compilationContext,\n $expression['right']['left']\n );\n if ('variable' != $evalVariable->getType()) {\n throw new CompilerException(\n 'Variable type: ' . $evalVariable->getType() . ' cannot be used as object',\n $expression['right']['left']\n );\n }\n\n if ($evalVariable->hasDifferentDynamicType(['undefined', 'object', 'null'])) {\n $compilationContext->logger->warning(\n 'Possible attempt to use non object in fetch operator',\n ['non-valid-fetch', $expression['right']]\n );\n }" + "text": " $delimiter = 'NULL ';\n if (2 == count($expression['parameters'])) {\n if ('null' == $expression['parameters'][1]['parameter']['type']) {\n unset($expression['parameters'][1]);\n }\n }\n\n /*\n * Process the expected symbol to be returned\n */\n $call->processExpectedReturn($context);\n\n $symbolVariable = $call->getSymbolVariable(true, $context);\n $this->checkNotVariableString($symbolVariable, $expression);\n\n $context->headersManager->add('kernel/string');\n\n $symbolVariable->setDynamicTypes('string');\n\n $resolvedParams = $call->getReadOnlyResolvedParams($expression['parameters'], $context, $expression);\n\n if (isset($resolvedParams[1])) {\n $delimiter = $resolvedParams[1];\n }\n\n if ($call->mustInitSymbolVariable()) {\n $symbolVariable->initVariant($context);\n }\n\n $symbol = $context->backend->getVariableCode($symbolVariable);" }, "sourceLanguage": "PHP" } @@ -32121,8 +31582,9 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "edc9f919d3799cf3465125a8c04b68cb45ad7a525d2034a589f8394246cef8a7" + "equalIndicator/v1": "ecfe95d185fb897b5b506b22c4bc611675bb9e573263e7a804a9836d4c0361df" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32212,6 +31674,7 @@ "partialFingerprints": { "equalIndicator/v1": "ee5ac15645dac240d3a11ee68eec3b9879e016f7240275fdae3339b21c23f4ad" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32301,6 +31764,7 @@ "partialFingerprints": { "equalIndicator/v1": "efce78143face75554db6a523489645a5fdfbb257132f7a7c6c8996224bd232a" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32390,6 +31854,7 @@ "partialFingerprints": { "equalIndicator/v1": "f5100c21fdcabe67b5c986419306ee8c1d0c9ff4dab52fc23e74c7e3b6221c83" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32445,6 +31910,7 @@ "partialFingerprints": { "equalIndicator/v1": "86fd4e479dea5e9ac17025dfc059677c3dafd655750281e2e553e9147df86e1e" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32500,6 +31966,7 @@ "partialFingerprints": { "equalIndicator/v1": "fd614b6d75285018cff55a963992918f4171f55ce3b155009f405c717c22e968" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32555,6 +32022,7 @@ "partialFingerprints": { "equalIndicator/v1": "0f24f8a2cb526e35900b262beaba75e0332358debfb0bfcee5f6c4d87d933131" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32610,6 +32078,7 @@ "partialFingerprints": { "equalIndicator/v1": "388429471940f618787be53d9cfebb607abe02909473f435a943948b11b4bf8e" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32665,6 +32134,7 @@ "partialFingerprints": { "equalIndicator/v1": "6837f21a2020d4c1cddc38a3505af4f347ae13b03cebfb1451515fc67138fb1b" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32720,6 +32190,7 @@ "partialFingerprints": { "equalIndicator/v1": "77863d2ddf259e8d9d2050e9476c36cd5863c97703b9e573c1326f9f568c9d5b" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32775,6 +32246,7 @@ "partialFingerprints": { "equalIndicator/v1": "7f5de0870ec898b1680e5cbb4867c23f27372c9a67e3b0c0e52697531ce92690" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32830,6 +32302,7 @@ "partialFingerprints": { "equalIndicator/v1": "a30521646e25186b820c1c400e05b20589e14a2b4336f4e4f44b8ae2be54c276" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32885,6 +32358,7 @@ "partialFingerprints": { "equalIndicator/v1": "b5c352b560807d2a81a76c4accd132f5224c98a579b2340b413bd225439582ac" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32940,6 +32414,7 @@ "partialFingerprints": { "equalIndicator/v1": "c86cfd8ad97a38eaa1bcf974efc06d210d0f2262cac82c820632261a03ba22a5" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -32995,6 +32470,7 @@ "partialFingerprints": { "equalIndicator/v1": "40d0b747a1f8e7c33d39dd31021acb642bcd03ec2203fdc91eb625ec985aab8c" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33050,6 +32526,7 @@ "partialFingerprints": { "equalIndicator/v1": "7396fe10dd43e57c19745f441a70348431044417934c9e2c2151a535531e8094" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33105,6 +32582,7 @@ "partialFingerprints": { "equalIndicator/v1": "34b9c7787e54cca9109c76146fb5dd81a54415ad7706a10cb41622fca0a7df72" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33160,6 +32638,7 @@ "partialFingerprints": { "equalIndicator/v1": "639491302fec5cd8545ca8fc36cadce5bbfc5cf33d5a758494c16553f9b4ad4a" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33215,6 +32694,7 @@ "partialFingerprints": { "equalIndicator/v1": "96692b641ca56badc02ece320184e765c799b340be00e9246379d1e953134fcc" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33270,6 +32750,7 @@ "partialFingerprints": { "equalIndicator/v1": "d7f3248a0b3d8e6fac793009a2ce7c8c955a70462594b98a6f2efeee5033d860" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33325,6 +32806,7 @@ "partialFingerprints": { "equalIndicator/v1": "cdba39ccc70934f7041973f3dd2bb5c52517ca73c9369bfb4582e2eb0b94e648" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33380,6 +32862,7 @@ "partialFingerprints": { "equalIndicator/v1": "d6b49f0574e9f7a971dac1029ca72eac46b5a1a68b35009c1c5a1be048f1de5d" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33435,6 +32918,7 @@ "partialFingerprints": { "equalIndicator/v1": "d8fc7944b03e4b505cc9baa64309ba1ac7687557faafee3dc3fb0e38b3c927ad" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33490,6 +32974,7 @@ "partialFingerprints": { "equalIndicator/v1": "f06a836071c2c373655cfc8f599e556d5abfa79a68b93948001f4ab6594599b6" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33545,61 +33030,7 @@ "partialFingerprints": { "equalIndicator/v1": "8ac7868a4ca09e6833fb99c7383b0b551295344932723aa0db062870f062b6f8" }, - "properties": { - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate", - "tags": [ - "PHP" - ] - } - }, - { - "ruleId": "PhpDuplicateSwitchCaseBodyInspection", - "kind": "fail", - "level": "note", - "message": { - "text": "Branch in 'switch' is a duplicate of 'case 'ulong'' branch", - "markdown": "Branch in 'switch' is a duplicate of 'case 'ulong'' branch" - }, - "locations": [ - { - "physicalLocation": { - "artifactLocation": { - "uri": "src/Operators/Bitwise/BitwiseBaseOperator.php", - "uriBaseId": "SRCROOT" - }, - "region": { - "startLine": 627, - "startColumn": 37, - "charOffset": 29985, - "charLength": 581, - "snippet": { - "text": "case 'bool':\n $compilationContext->headersManager->add('kernel/operators');\n\n return new CompiledExpression(\n 'int',\n '((int) (zephir_get_numberval(' . $symbol . ')) ' . $this->operator . ' ' . $variableRight->getName(\n ) . ')',\n $expression\n );\n break;" - }, - "sourceLanguage": "PHP" - }, - "contextRegion": { - "startLine": 625, - "startColumn": 1, - "charOffset": 29889, - "charLength": 736, - "snippet": { - "text": "\n /* a(var) + a(bool) */\n case 'bool':\n $compilationContext->headersManager->add('kernel/operators');\n\n return new CompiledExpression(\n 'int',\n '((int) (zephir_get_numberval(' . $symbol . ')) ' . $this->operator . ' ' . $variableRight->getName(\n ) . ')',\n $expression\n );\n break;\n\n /* a(var) + a(var) */" - }, - "sourceLanguage": "PHP" - } - }, - "logicalLocations": [ - { - "fullyQualifiedName": "project", - "kind": "module" - } - ] - } - ], - "partialFingerprints": { - "equalIndicator/v1": "e31bf6a428dd07f2c70396763a9a47f3df7d9af9a82fa83825065b75bfdba5df" - }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33655,6 +33086,7 @@ "partialFingerprints": { "equalIndicator/v1": "4784c30899df298a1c80ac8a4013c87998109e10a00d21af559493908eda78c1" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "ERROR", "qodanaSeverity": "Critical", @@ -33710,6 +33142,7 @@ "partialFingerprints": { "equalIndicator/v1": "52956a1b95edf8732f4d3feffd38ef990ce10eeeb23954de17701ccd4cef5d01" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WARNING", "qodanaSeverity": "High", @@ -33765,6 +33198,7 @@ "partialFingerprints": { "equalIndicator/v1": "9f2530558094bcf672efc0cabe088629aafab7dfdb85a1b264ae2ebcc4c19e35" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WARNING", "qodanaSeverity": "High", @@ -33820,6 +33254,7 @@ "partialFingerprints": { "equalIndicator/v1": "6c608f3473df452e0d9efe5ac036eca02df35cb9c9fd4c14ed6abdde62609454" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33875,6 +33310,7 @@ "partialFingerprints": { "equalIndicator/v1": "7a9b26a98853332953d1eb416c2b687a02a7b6f4a9c2477ef14b4c6257d2662f" }, + "baselineState": "unchanged", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -33886,9 +33322,9 @@ ], "automationDetails": { "id": "project/qodana/2023-11-30", - "guid": "c4ce784a-cd17-4286-8d04-e840979a85ad", + "guid": "d4cffa2a-172c-40fb-940d-4831b7efc77b", "properties": { - "jobUrl": "https://github.com/zephir-lang/zephir/actions/runs/7040653342" + "jobUrl": "" } }, "newlineSequences": [ @@ -33897,7 +33333,7 @@ ], "properties": { "configProfile": "recommended", - "deviceId": "200820300000000-a3da-3f01-d610-dbadfc66b7f7" + "deviceId": "200820300000000-7ae6-504a-cf1a-901f5dd50b66" } } ]