From 351e34ecf58c9125a2eba6492a3d025adf0d6fee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Sat, 7 Dec 2019 20:26:39 -0300 Subject: [PATCH] Upgrade PHPStan to version 0.12.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MaurĂ­cio Meneghini Fauth --- composer.json | 4 +- libraries/classes/Config.php | 1 + libraries/classes/Console.php | 1 - .../Database/StructureController.php | 2 + .../Controllers/Table/SearchController.php | 18 ++--- libraries/classes/Display/Results.php | 6 +- libraries/classes/Gis/GisVisualization.php | 1 + .../classes/Plugins/AuthenticationPlugin.php | 1 + libraries/classes/Plugins/ExportPlugin.php | 2 + .../Plugins/Schema/Dia/RelationStatsDia.php | 1 + .../Plugins/Schema/Pdf/PdfRelationSchema.php | 2 - libraries/entry_points/table/replace.php | 3 +- libraries/mult_submits.inc.php | 2 +- phpstan-baseline.neon | 67 +++++++++++++++++++ phpstan.neon.dist | 33 +++------ test/classes/ConfigTest.php | 1 + 16 files changed, 97 insertions(+), 48 deletions(-) create mode 100644 phpstan-baseline.neon diff --git a/composer.json b/composer.json index 716f4c25e6..2b8cf5f268 100644 --- a/composer.json +++ b/composer.json @@ -86,8 +86,8 @@ "facebook/webdriver": "^1.7.1", "phpmyadmin/coding-standard": "^1.0", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.11.5", - "phpstan/phpstan-phpunit": "^0.11.2", + "phpstan/phpstan": "^0.12.0", + "phpstan/phpstan-phpunit": "^0.12.0", "phpunit/phpunit": "^7.5 || ^8.0", "pragmarx/google2fa-qrcode": "^1.0.1", "samyoul/u2f-php-server": "^1.1", diff --git a/libraries/classes/Config.php b/libraries/classes/Config.php index aaefec9d97..b57a889712 100644 --- a/libraries/classes/Config.php +++ b/libraries/classes/Config.php @@ -773,6 +773,7 @@ class Config */ public function loadDefaults(): bool { + /** @var array $cfg */ $cfg = []; if (! @file_exists($this->default_source)) { $this->error_config_default_file = true; diff --git a/libraries/classes/Console.php b/libraries/classes/Console.php index cc0190de91..635217464a 100644 --- a/libraries/classes/Console.php +++ b/libraries/classes/Console.php @@ -107,7 +107,6 @@ class Console } else { $welcomeMessage = __('No bookmarks'); } - unset($count_bookmarks, $private_message, $shared_message); return $template->render('console/bookmark_content', [ 'welcome_message' => $welcomeMessage, 'bookmarks' => $bookmarks, diff --git a/libraries/classes/Controllers/Database/StructureController.php b/libraries/classes/Controllers/Database/StructureController.php index 741160c9c5..5f4a6e91a4 100644 --- a/libraries/classes/Controllers/Database/StructureController.php +++ b/libraries/classes/Controllers/Database/StructureController.php @@ -1035,6 +1035,7 @@ class StructureController extends AbstractController } if ($this->isShowStats) { + /** @var int $tblsize */ $tblsize = $current_table['Data_length'] + $current_table['Index_length']; $sum_size += $tblsize; @@ -1093,6 +1094,7 @@ class StructureController extends AbstractController } if ($this->isShowStats) { + /** @var int $tblsize */ $tblsize = $current_table['Data_length'] + $current_table['Index_length']; $sum_size += $tblsize; diff --git a/libraries/classes/Controllers/Table/SearchController.php b/libraries/classes/Controllers/Table/SearchController.php index 3422a7e666..ef09c4e403 100644 --- a/libraries/classes/Controllers/Table/SearchController.php +++ b/libraries/classes/Controllers/Table/SearchController.php @@ -234,8 +234,8 @@ class SearchController extends AbstractController } /** - * No selection criteria received -> display the selection form - */ + * No selection criteria received -> display the selection form + */ if (! isset($_POST['columnsToDisplay']) && ! isset($_POST['displayAllColumns']) ) { @@ -264,10 +264,8 @@ class SearchController extends AbstractController ); /** - * Handle AJAX request for data row on point select - * - * @var boolean Object containing parameters for the POST request - */ + * Handle AJAX request for data row on point select + */ if (isset($_POST['get_data_row']) && $_POST['get_data_row'] == true ) { @@ -276,11 +274,9 @@ class SearchController extends AbstractController return; } /** - * Handle AJAX request for changing field information - * (value,collation,operators,field values) in input form - * - * @var boolean Object containing parameters for the POST request - */ + * Handle AJAX request for changing field information + * (value,collation,operators,field values) in input form + */ if (isset($_POST['change_tbl_info']) && $_POST['change_tbl_info'] == true ) { diff --git a/libraries/classes/Display/Results.php b/libraries/classes/Display/Results.php index bff2bb8354..740ce21016 100644 --- a/libraries/classes/Display/Results.php +++ b/libraries/classes/Display/Results.php @@ -4116,11 +4116,9 @@ class Results array $analyzed_sql_results, $is_limited_display = false ) { - /** - * The statement this table is built for. - * @var SelectStatement - */ + // The statement this table is built for. if (isset($analyzed_sql_results['statement'])) { + /** @var SelectStatement $statement */ $statement = $analyzed_sql_results['statement']; } else { $statement = null; diff --git a/libraries/classes/Gis/GisVisualization.php b/libraries/classes/Gis/GisVisualization.php index b3c8ad9aa0..943d8aba9f 100644 --- a/libraries/classes/Gis/GisVisualization.php +++ b/libraries/classes/Gis/GisVisualization.php @@ -521,6 +521,7 @@ class GisVisualization } elseif ($format == 'ol') { return $this->asOl(); } + return ''; } /** diff --git a/libraries/classes/Plugins/AuthenticationPlugin.php b/libraries/classes/Plugins/AuthenticationPlugin.php index 67417e9237..6f0bae2592 100644 --- a/libraries/classes/Plugins/AuthenticationPlugin.php +++ b/libraries/classes/Plugins/AuthenticationPlugin.php @@ -364,5 +364,6 @@ abstract class AuthenticationPlugin if (! defined('TESTSUITE')) { exit; } + return; } } diff --git a/libraries/classes/Plugins/ExportPlugin.php b/libraries/classes/Plugins/ExportPlugin.php index 23f81a0349..37e9ed4ec2 100644 --- a/libraries/classes/Plugins/ExportPlugin.php +++ b/libraries/classes/Plugins/ExportPlugin.php @@ -218,6 +218,7 @@ abstract class ExportPlugin */ public function getTableDefStandIn($db, $view, $crlf, $aliases = []) { + return ''; } /** @@ -230,6 +231,7 @@ abstract class ExportPlugin */ protected function getTriggers($db, $table) { + return ''; } /** diff --git a/libraries/classes/Plugins/Schema/Dia/RelationStatsDia.php b/libraries/classes/Plugins/Schema/Dia/RelationStatsDia.php index 8173019e09..36a42c9062 100644 --- a/libraries/classes/Plugins/Schema/Dia/RelationStatsDia.php +++ b/libraries/classes/Plugins/Schema/Dia/RelationStatsDia.php @@ -223,5 +223,6 @@ class RelationStatsDia ' ); + return; } } diff --git a/libraries/classes/Plugins/Schema/Pdf/PdfRelationSchema.php b/libraries/classes/Plugins/Schema/Pdf/PdfRelationSchema.php index 722e8b7a24..770b36aece 100644 --- a/libraries/classes/Plugins/Schema/Pdf/PdfRelationSchema.php +++ b/libraries/classes/Plugins/Schema/Pdf/PdfRelationSchema.php @@ -786,8 +786,6 @@ class PdfRelationSchema extends ExportRelationSchema && isset($this->diagram->PMA_links['doc'][$foreigner['foreign_table']][$foreigner['foreign_field']]) ) { $links[6] = $this->diagram->PMA_links['doc'][$foreigner['foreign_table']][$foreigner['foreign_field']]; - } else { - unset($links[6]); } $this->diagram->row($diagram_row, $links); } // end foreach diff --git a/libraries/entry_points/table/replace.php b/libraries/entry_points/table/replace.php index 1a786de1b0..2fdf6b020a 100644 --- a/libraries/entry_points/table/replace.php +++ b/libraries/entry_points/table/replace.php @@ -434,7 +434,6 @@ unset( $warning_messages, $total_affected_rows, $last_messages, - $last_message, $row_skipped, $insert_errors ); @@ -454,11 +453,11 @@ if ($response->isAjax() && ! isset($_POST['ajax_page_request'])) { if (isset($_POST['rel_fields_list']) && $_POST['rel_fields_list'] != '') { $map = $relation->getForeigners($db, $table, '', 'both'); + /** @var array $relation_fields */ $relation_fields = []; parse_str($_POST['rel_fields_list'], $relation_fields); // loop for each relation cell - /** @var array $relation_fields */ foreach ($relation_fields as $cell_index => $curr_rel_field) { foreach ($curr_rel_field as $relation_field => $relation_field_value) { $where_comparison = "='" . $relation_field_value . "'"; diff --git a/libraries/mult_submits.inc.php b/libraries/mult_submits.inc.php index 9638e93654..38ac696207 100644 --- a/libraries/mult_submits.inc.php +++ b/libraries/mult_submits.inc.php @@ -44,7 +44,7 @@ foreach ($request_params as $one_request_param) { } $response = Response::getInstance(); -global $db, $table, $clause_is_unique, $from_prefix, $goto, +global $db, $table, $clause_is_unique, $from_prefix, $goto, $message, $mult_btn, $original_sql_query, $query_type, $reload, $selected, $selected_fld, $selected_recent_table, $sql_query, $submit_mult, $table_type, $to_prefix, $url_query, $pmaThemeImage; diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000000..d15be73c65 --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,67 @@ +parameters: + ignoreErrors: + - + message: "#^Instantiated class PhpMyAdmin\\\\Config\\\\Forms\\\\BaseForm is abstract\\.$#" + count: 1 + path: libraries/classes/Controllers/Setup/FormController.php + + - + message: "#^Function uploadprogress_get_info not found\\.$#" + count: 1 + path: libraries/classes/Plugins/Import/Upload/UploadProgress.php + + - + message: "#^Instantiated class COM not found\\.$#" + count: 1 + path: libraries/classes/SysInfoWINNT.php + + - + message: "#^Call to method ConnectServer\\(\\) on an unknown class COM\\.$#" + count: 1 + path: libraries/classes/SysInfoWINNT.php + + - + message: "#^Variable \\$http_response_header in isset\\(\\) always exists and is not nullable\\.$#" + count: 1 + path: libraries/classes/Utils/HttpRequest.php + + - + message: "#^Method PhpMyAdmin\\\\Controllers\\\\Server\\\\SqlController\\:\\:index\\(\\) invoked with 2 parameters, 0 required\\.$#" + count: 1 + path: libraries/entry_points/database/sql.php + + - + message: "#^Call to an undefined method PhpMyAdmin\\\\Controllers\\\\Database\\\\SearchController\\:\\:indexAction\\(\\)\\.$#" + count: 1 + path: libraries/entry_points/table/find_replace.php + + - + message: "#^Call to an undefined method PhpMyAdmin\\\\Controllers\\\\Database\\\\SearchController\\:\\:indexAction\\(\\)\\.$#" + count: 1 + path: libraries/entry_points/table/select.php + + - + message: "#^Method PhpMyAdmin\\\\Controllers\\\\Server\\\\SqlController\\:\\:index\\(\\) invoked with 2 parameters, 0 required\\.$#" + count: 1 + path: libraries/entry_points/table/sql.php + + - + message: "#^Call to an undefined method PhpMyAdmin\\\\Controllers\\\\Database\\\\StructureController\\:\\:indexAction\\(\\)\\.$#" + count: 1 + path: libraries/entry_points/table/structure.php + + - + message: "#^Call to an undefined method PhpMyAdmin\\\\Controllers\\\\Database\\\\SearchController\\:\\:indexAction\\(\\)\\.$#" + count: 1 + path: libraries/entry_points/table/zoom_select.php + + - + message: "#^Access to private property PhpMyAdmin\\\\DatabaseInterface&PHPUnit\\\\Framework\\\\MockObject\\\\MockObject\\:\\:\\$_table_cache\\.$#" + count: 1 + path: test/classes/TableTest.php + + - + message: "#^Instantiated class Sami\\\\Sami not found\\.$#" + count: 1 + path: test/sami-config.php + diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 36e37dba33..75ee5ea827 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,31 +1,14 @@ +includes: + - phpstan-baseline.neon parameters: level: 2 paths: - - %rootDir%/../../../ - bootstrap: %rootDir%/../../../test/bootstrap-phpstan.php + - . + bootstrap: test/bootstrap-phpstan.php reportUnmatchedIgnoredErrors: true inferPrivatePropertyTypeFromConstructor: true - ignoreErrors: - - - message: "#^Access to private property PhpMyAdmin\\\\DatabaseInterface&PHPUnit\\\\Framework\\\\MockObject\\\\MockObject\\:\\:\\$_table_cache\\.$#" - path: %currentWorkingDirectory%/test/classes/TableTest.php - - - message: '#PhpMyAdmin\\Twig\\I18n\\NodeTrans::__construct\(\) does not call parent constructor from Twig_Extensions_Node_Trans#' - path: %currentWorkingDirectory%/libraries/classes/Twig/I18n/NodeTrans.php - - - message: '#Variable \$http_response_header in isset\(\) always exists and is not nullable#' - path: %currentWorkingDirectory%/libraries/classes/Utils/HttpRequest.php - - - message: '#Instantiated class Sami\\Sami not found#' - path: %currentWorkingDirectory%/test/sami-config.php - - - message: '#Function uploadprogress_get_info not found#' - path: %currentWorkingDirectory%/libraries/classes/Plugins/Import/Upload/UploadProgress.php - - - message: '#(Instantiated class COM not found|Call to method ConnectServer\(\) on an unknown class COM)#' - path: %currentWorkingDirectory%/libraries/classes/SysInfoWINNT.php excludes_analyse: - - %rootDir%/../../../tmp/* - - %rootDir%/../../../vendor/* - - %rootDir%/../../../node_modules/* - - %rootDir%/../../../examples/openid.php + - tmp/* + - vendor/* + - node_modules/* + - examples/openid.php diff --git a/test/classes/ConfigTest.php b/test/classes/ConfigTest.php index fa7e8b496d..6e3a77f099 100644 --- a/test/classes/ConfigTest.php +++ b/test/classes/ConfigTest.php @@ -394,6 +394,7 @@ class ConfigTest extends PmaTestCase $this->object->default_source = $prevDefaultSource; + /** @var array $cfg */ $cfg = []; include $this->object->default_source; $loadedConf = $cfg;