From f524ea3f16d6c3727805919fd09c22210a4144d0 Mon Sep 17 00:00:00 2001 From: wpdev Date: Fri, 31 Jul 2026 06:22:00 +0800 Subject: [PATCH] =?UTF-8?q?build:=20=E7=A7=BB=E6=A4=8D=20PHPCS=20+=20PHPSt?= =?UTF-8?q?an=20L6=20=E5=93=81=E8=B3=AA=20gate=EF=BC=88PR-I=20=E5=89=8D?= =?UTF-8?q?=E5=8D=8A=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - phpcs.xml(自 A 移植):ruleset 改名、*/tools/* 例外換成 */back-compat/*、 中文註解全域排除 Squiz.Commenting.InlineComment.InvalidEndChar、 interface 別名檔排除 OneObjectStructurePerFile - 檔頭正規化:16 個檔案的 declare(strict_types=1) 與前導 // 註解移到 file docblock 之後,並移除 Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY --- .gitignore | 1 + .phpstan/stubs.php | 34 + admin/class-tmdo-admin.php | 13 +- admin/class-tmdo-dashboard-widget.php | 9 +- admin/class-tmdo-setup-wizard.php | 7 +- admin/templates/comment-stress-test.php | 7 +- admin/templates/term-stress-test.php | 7 +- cli/class-tmdo-cli-member.php | 7 +- cli/class-tmdo-cli-post.php | 7 +- cli/class-tmdo-cli-term-comment.php | 7 +- includes/advisor/class-tmdo-fsm-advisor.php | 7 +- includes/class-tmdo-back-compat.php | 226 +- includes/class-tmdo-comment-stress-tester.php | 7 +- includes/class-tmdo-post-shadow-verifier.php | 7 +- includes/class-tmdo-post-stress-tester.php | 7 +- includes/class-tmdo-term-stress-tester.php | 7 +- includes/class-tmdo-user-stress-tester.php | 7 +- .../diagnostic/class-tmdo-site-health.php | 7 +- .../migration/class-tmdo-post-migration.php | 7 +- includes/trait-tmdo-anti-eav-aware.php | 350 +- phpcs.xml | 245 ++ phpstan-baseline.neon | 3691 +++++++++++++++++ phpstan.neon | 29 + 23 files changed, 4356 insertions(+), 340 deletions(-) create mode 100644 .phpstan/stubs.php create mode 100644 phpcs.xml create mode 100644 phpstan-baseline.neon create mode 100644 phpstan.neon diff --git a/.gitignore b/.gitignore index 4ac74fc..e2bd0ff 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ Thumbs.db .playwright-mcp/ .claude/ dist/ +.phpcs-cache diff --git a/.phpstan/stubs.php b/.phpstan/stubs.php new file mode 100644 index 0000000..0815596 --- /dev/null +++ b/.phpstan/stubs.php @@ -0,0 +1,34 @@ + console.log(r));' ); echo ''; foreach ( $enable as $module => $r ) { - $conf = (float) $r['confidence']; - $bar_w = (int) round( $conf * 100 ); - $color = $conf >= 0.7 ? '#46b450' : ( $conf >= 0.5 ? '#dba617' : '#c3c4c7' ); + $conf = (float) $r['confidence']; + $bar_w = (int) round( $conf * 100 ); + $color = $conf >= 0.7 ? '#46b450' : ( $conf >= 0.5 ? '#dba617' : '#c3c4c7' ); printf( '%s
%s
', esc_html( $module ), diff --git a/admin/class-tmdo-dashboard-widget.php b/admin/class-tmdo-dashboard-widget.php index 1be472b..30a46e3 100644 --- a/admin/class-tmdo-dashboard-widget.php +++ b/admin/class-tmdo-dashboard-widget.php @@ -1,7 +1,4 @@ 'WPDO_API', - 'TMDO_Schema_Registry' => 'WPDO_Schema_Registry', - 'TMDO_Entity_Registry' => 'WPDO_Entity_Registry', - 'TMDO_Custom_Table_Registry' => 'WPDO_Custom_Table_Registry', - 'TMDO_Feature_Flags' => 'WPDO_Feature_Flags', - 'TMDO_DB' => 'WPDO_DB', - 'TMDO_Crypto' => 'WPDO_Crypto', - 'TMDO_Logger' => 'WPDO_Logger', - 'TMDO_Capability' => 'WPDO_Capability', - 'TMDO_Safe_Unserialize' => 'WPDO_Safe_Unserialize', + 'TMDO_API' => 'WPDO_API', + 'TMDO_Schema_Registry' => 'WPDO_Schema_Registry', + 'TMDO_Entity_Registry' => 'WPDO_Entity_Registry', + 'TMDO_Custom_Table_Registry' => 'WPDO_Custom_Table_Registry', + 'TMDO_Feature_Flags' => 'WPDO_Feature_Flags', + 'TMDO_DB' => 'WPDO_DB', + 'TMDO_Crypto' => 'WPDO_Crypto', + 'TMDO_Logger' => 'WPDO_Logger', + 'TMDO_Capability' => 'WPDO_Capability', + 'TMDO_Safe_Unserialize' => 'WPDO_Safe_Unserialize', // Engine / Migration / Adapters(second-tier,部分 sister plugin 已直接呼叫) - 'TMDO_Hook_Bus' => 'WPDO_Hook_Bus', - 'TMDO_Mode_Manager' => 'WPDO_Mode_Manager', - 'TMDO_Migration_Engine' => 'WPDO_Migration_Engine', - 'TMDO_Migration_Orchestrator' => 'WPDO_Migration_Orchestrator', - 'TMDO_Entity_Migration_Engine' => 'WPDO_Entity_Migration_Engine', - 'TMDO_Entity_Health' => 'WPDO_Entity_Health', - 'TMDO_Schema_Manager' => 'WPDO_Schema_Manager', - 'TMDO_Sync_Bridge' => 'WPDO_Sync_Bridge', - 'TMDO_Query_Router' => 'WPDO_Query_Router', - 'TMDO_Post_Query_Router' => 'WPDO_Post_Query_Router', - 'TMDO_Hook_Bus_Bridge' => 'WPDO_Hook_Bus_Bridge', - 'TMDO_Conflict_Monitor' => 'WPDO_Conflict_Monitor', - 'TMDO_Compatibility' => 'WPDO_Compatibility', - 'TMDO_Installer' => 'WPDO_Installer', - 'TMDO_Cache_Layer' => 'WPDO_Cache_Layer', - 'TMDO_Zone_Classifier' => 'WPDO_Zone_Classifier', - 'TMDO_Core' => 'WPDO_Core', - 'TMDO_REST_API' => 'WPDO_REST_API', - 'TMDO_Snapshot_Manager' => 'WPDO_Snapshot_Manager', - 'TMDO_Snapshot_Writer' => 'WPDO_Snapshot_Writer', - 'TMDO_Snapshot_Reader' => 'WPDO_Snapshot_Reader', - 'TMDO_Snapshot_Pruner' => 'WPDO_Snapshot_Pruner', - 'TMDO_FSM_Guard' => 'WPDO_FSM_Guard', - 'TMDO_Site_Health' => 'WPDO_Site_Health', - 'TMDO_Health_Cron' => 'WPDO_Health_Cron', - 'TMDO_Email_Notifier' => 'WPDO_Email_Notifier', - 'TMDO_Slack_Notifier' => 'WPDO_Slack_Notifier', - 'TMDO_Discord_Notifier' => 'WPDO_Discord_Notifier', - 'TMDO_Telegram_Notifier' => 'WPDO_Telegram_Notifier', - 'TMDO_Monthly_Summary' => 'WPDO_Monthly_Summary', - 'TMDO_Site_Metrics_Collector' => 'WPDO_Site_Metrics_Collector', - 'TMDO_FSM_Advisor' => 'WPDO_FSM_Advisor', - 'TMDO_Module_Detector' => 'WPDO_Module_Detector', - 'TMDO_FSM_Automator' => 'WPDO_FSM_Automator', - 'TMDO_Module_Rules' => 'WPDO_Module_Rules', - 'TMDO_CSV_Writer' => 'WPDO_CSV_Writer', - 'TMDO_Export' => 'WPDO_Export', - 'TMDO_CLI' => 'WPDO_CLI', - 'TMDO_CLI_V2' => 'WPDO_CLI_V2', - 'TMDO_CLI_Member' => 'WPDO_CLI_Member', - 'TMDO_CLI_Post' => 'WPDO_CLI_Post', - 'TMDO_CLI_Term_Comment' => 'WPDO_CLI_Term_Comment', - 'TMDO_Member_Fields' => 'WPDO_Member_Fields', - 'TMDO_Post_Fields' => 'WPDO_Post_Fields', - 'TMDO_Points_Manager' => 'WPDO_Points_Manager', - 'TMDO_Demo_Entity_Counter' => 'WPDO_Demo_Entity_Counter', - 'TMDO_Postmeta_Cleaner' => 'WPDO_Postmeta_Cleaner', - 'TMDO_Termmeta_Cleaner' => 'WPDO_Termmeta_Cleaner', - 'TMDO_Commentmeta_Cleaner' => 'WPDO_Commentmeta_Cleaner', - 'TMDO_Post_Stress_Tester' => 'WPDO_Post_Stress_Tester', - 'TMDO_User_Stress_Tester' => 'WPDO_User_Stress_Tester', - 'TMDO_Term_Stress_Tester' => 'WPDO_Term_Stress_Tester', - 'TMDO_Comment_Stress_Tester' => 'WPDO_Comment_Stress_Tester', - 'TMDO_Post_Shadow_Verifier' => 'WPDO_Post_Shadow_Verifier', + 'TMDO_Hook_Bus' => 'WPDO_Hook_Bus', + 'TMDO_Mode_Manager' => 'WPDO_Mode_Manager', + 'TMDO_Migration_Engine' => 'WPDO_Migration_Engine', + 'TMDO_Migration_Orchestrator' => 'WPDO_Migration_Orchestrator', + 'TMDO_Entity_Migration_Engine' => 'WPDO_Entity_Migration_Engine', + 'TMDO_Entity_Health' => 'WPDO_Entity_Health', + 'TMDO_Schema_Manager' => 'WPDO_Schema_Manager', + 'TMDO_Sync_Bridge' => 'WPDO_Sync_Bridge', + 'TMDO_Query_Router' => 'WPDO_Query_Router', + 'TMDO_Post_Query_Router' => 'WPDO_Post_Query_Router', + 'TMDO_Hook_Bus_Bridge' => 'WPDO_Hook_Bus_Bridge', + 'TMDO_Conflict_Monitor' => 'WPDO_Conflict_Monitor', + 'TMDO_Compatibility' => 'WPDO_Compatibility', + 'TMDO_Installer' => 'WPDO_Installer', + 'TMDO_Cache_Layer' => 'WPDO_Cache_Layer', + 'TMDO_Zone_Classifier' => 'WPDO_Zone_Classifier', + 'TMDO_Core' => 'WPDO_Core', + 'TMDO_REST_API' => 'WPDO_REST_API', + 'TMDO_Snapshot_Manager' => 'WPDO_Snapshot_Manager', + 'TMDO_Snapshot_Writer' => 'WPDO_Snapshot_Writer', + 'TMDO_Snapshot_Reader' => 'WPDO_Snapshot_Reader', + 'TMDO_Snapshot_Pruner' => 'WPDO_Snapshot_Pruner', + 'TMDO_FSM_Guard' => 'WPDO_FSM_Guard', + 'TMDO_Site_Health' => 'WPDO_Site_Health', + 'TMDO_Health_Cron' => 'WPDO_Health_Cron', + 'TMDO_Email_Notifier' => 'WPDO_Email_Notifier', + 'TMDO_Slack_Notifier' => 'WPDO_Slack_Notifier', + 'TMDO_Discord_Notifier' => 'WPDO_Discord_Notifier', + 'TMDO_Telegram_Notifier' => 'WPDO_Telegram_Notifier', + 'TMDO_Monthly_Summary' => 'WPDO_Monthly_Summary', + 'TMDO_Site_Metrics_Collector' => 'WPDO_Site_Metrics_Collector', + 'TMDO_FSM_Advisor' => 'WPDO_FSM_Advisor', + 'TMDO_Module_Detector' => 'WPDO_Module_Detector', + 'TMDO_FSM_Automator' => 'WPDO_FSM_Automator', + 'TMDO_Module_Rules' => 'WPDO_Module_Rules', + 'TMDO_CSV_Writer' => 'WPDO_CSV_Writer', + 'TMDO_Export' => 'WPDO_Export', + 'TMDO_CLI' => 'WPDO_CLI', + 'TMDO_CLI_V2' => 'WPDO_CLI_V2', + 'TMDO_CLI_Member' => 'WPDO_CLI_Member', + 'TMDO_CLI_Post' => 'WPDO_CLI_Post', + 'TMDO_CLI_Term_Comment' => 'WPDO_CLI_Term_Comment', + 'TMDO_Member_Fields' => 'WPDO_Member_Fields', + 'TMDO_Post_Fields' => 'WPDO_Post_Fields', + 'TMDO_Points_Manager' => 'WPDO_Points_Manager', + 'TMDO_Demo_Entity_Counter' => 'WPDO_Demo_Entity_Counter', + 'TMDO_Postmeta_Cleaner' => 'WPDO_Postmeta_Cleaner', + 'TMDO_Termmeta_Cleaner' => 'WPDO_Termmeta_Cleaner', + 'TMDO_Commentmeta_Cleaner' => 'WPDO_Commentmeta_Cleaner', + 'TMDO_Post_Stress_Tester' => 'WPDO_Post_Stress_Tester', + 'TMDO_User_Stress_Tester' => 'WPDO_User_Stress_Tester', + 'TMDO_Term_Stress_Tester' => 'WPDO_Term_Stress_Tester', + 'TMDO_Comment_Stress_Tester' => 'WPDO_Comment_Stress_Tester', + 'TMDO_Post_Shadow_Verifier' => 'WPDO_Post_Shadow_Verifier', 'TMDO_Term_Comment_Shadow_Verifier' => 'WPDO_Term_Comment_Shadow_Verifier', - 'TMDO_Term_Comment_Backfill' => 'WPDO_Term_Comment_Backfill', - 'TMDO_Term_Comment_Misc_Bucket' => 'WPDO_Term_Comment_Misc_Bucket', - 'TMDO_Term_Comment_Garbage_Filter' => 'WPDO_Term_Comment_Garbage_Filter', - 'TMDO_Setup_Wizard' => 'WPDO_Setup_Wizard', - 'TMDO_Dashboard_Widget' => 'WPDO_Dashboard_Widget', - 'TMDO_Help_Tabs' => 'WPDO_Help_Tabs', - 'TMDO_Admin' => 'WPDO_Admin', - 'TMDO_V2_Upgrader' => 'WPDO_V2_Upgrader', - 'TMDO_SQLite_Compat' => 'WPDO_SQLite_Compat', - 'TMDO_Type_Caster' => 'WPDO_Type_Caster', - 'TMDO_Audit_Logger' => 'WPDO_Audit_Logger', - 'TMDO_Shadow_Diff_Logger' => 'WPDO_Shadow_Diff_Logger', - 'TMDO_Conflict_Detector' => 'WPDO_Conflict_Detector', - 'TMDO_Cache_Orchestrator' => 'WPDO_Cache_Orchestrator', - 'TMDO_Query_Compiler' => 'WPDO_Query_Compiler', - 'TMDO_Auto_Promoter' => 'WPDO_Auto_Promoter', - 'TMDO_Adapter_Post' => 'WPDO_Adapter_Post', - 'TMDO_Adapter_User' => 'WPDO_Adapter_User', - 'TMDO_Adapter_Term' => 'WPDO_Adapter_Term', - 'TMDO_Adapter_Comment' => 'WPDO_Adapter_Comment', - 'TMDO_Options_Manager' => 'WPDO_Options_Manager', - 'TMDO_Hot_Migration' => 'WPDO_Hot_Migration', - 'TMDO_Warm_Migration' => 'WPDO_Warm_Migration', - 'TMDO_Cold_Migration' => 'WPDO_Cold_Migration', - 'TMDO_Archive_Migration' => 'WPDO_Archive_Migration', - 'TMDO_Migration_Base' => 'WPDO_Migration_Base', - 'TMDO_Post_Migration' => 'WPDO_Post_Migration', - 'TMDO_Zone_Hot' => 'WPDO_Zone_Hot', - 'TMDO_Zone_Warm' => 'WPDO_Zone_Warm', - 'TMDO_Zone_Cold' => 'WPDO_Zone_Cold', - 'TMDO_Zone_Router' => 'WPDO_Zone_Router', - 'TMDO_Routing_Predicate' => 'WPDO_Routing_Predicate', - 'TMDO_Migration_Phase_Base' => 'WPDO_Migration_Phase_Base', - 'TMDO_Phase_Diagnose' => 'WPDO_Phase_Diagnose', - 'TMDO_Phase_Backup' => 'WPDO_Phase_Backup', - 'TMDO_Phase_Demote' => 'WPDO_Phase_Demote', - 'TMDO_Phase_Install_Schema' => 'WPDO_Phase_Install_Schema', - 'TMDO_Phase_Backfill_Bulk' => 'WPDO_Phase_Backfill_Bulk', - 'TMDO_Phase_Backfill_Unserialize' => 'WPDO_Phase_Backfill_Unserialize', - 'TMDO_Phase_Promote_Shadow' => 'WPDO_Phase_Promote_Shadow', - 'TMDO_Phase_Verify_Sample' => 'WPDO_Phase_Verify_Sample', - 'TMDO_Phase_Promote_Aeav' => 'WPDO_Phase_Promote_Aeav', - 'TMDO_Phase_Cleanup' => 'WPDO_Phase_Cleanup', - 'TMDO_Phase_Completed' => 'WPDO_Phase_Completed', - 'TMDO_Zone_Archive' => 'WPDO_Zone_Archive', - 'TMDO_Interceptor_Base' => 'WPDO_Interceptor_Base', - 'TMDO_Standard_Post_Interceptor' => 'WPDO_Standard_Post_Interceptor', - 'TMDO_Query_Interceptor_Base' => 'WPDO_Query_Interceptor_Base', - 'TMDO_Abstract_Notifier' => 'WPDO_Abstract_Notifier', + 'TMDO_Term_Comment_Backfill' => 'WPDO_Term_Comment_Backfill', + 'TMDO_Term_Comment_Misc_Bucket' => 'WPDO_Term_Comment_Misc_Bucket', + 'TMDO_Term_Comment_Garbage_Filter' => 'WPDO_Term_Comment_Garbage_Filter', + 'TMDO_Setup_Wizard' => 'WPDO_Setup_Wizard', + 'TMDO_Dashboard_Widget' => 'WPDO_Dashboard_Widget', + 'TMDO_Help_Tabs' => 'WPDO_Help_Tabs', + 'TMDO_Admin' => 'WPDO_Admin', + 'TMDO_V2_Upgrader' => 'WPDO_V2_Upgrader', + 'TMDO_SQLite_Compat' => 'WPDO_SQLite_Compat', + 'TMDO_Type_Caster' => 'WPDO_Type_Caster', + 'TMDO_Audit_Logger' => 'WPDO_Audit_Logger', + 'TMDO_Shadow_Diff_Logger' => 'WPDO_Shadow_Diff_Logger', + 'TMDO_Conflict_Detector' => 'WPDO_Conflict_Detector', + 'TMDO_Cache_Orchestrator' => 'WPDO_Cache_Orchestrator', + 'TMDO_Query_Compiler' => 'WPDO_Query_Compiler', + 'TMDO_Auto_Promoter' => 'WPDO_Auto_Promoter', + 'TMDO_Adapter_Post' => 'WPDO_Adapter_Post', + 'TMDO_Adapter_User' => 'WPDO_Adapter_User', + 'TMDO_Adapter_Term' => 'WPDO_Adapter_Term', + 'TMDO_Adapter_Comment' => 'WPDO_Adapter_Comment', + 'TMDO_Options_Manager' => 'WPDO_Options_Manager', + 'TMDO_Hot_Migration' => 'WPDO_Hot_Migration', + 'TMDO_Warm_Migration' => 'WPDO_Warm_Migration', + 'TMDO_Cold_Migration' => 'WPDO_Cold_Migration', + 'TMDO_Archive_Migration' => 'WPDO_Archive_Migration', + 'TMDO_Migration_Base' => 'WPDO_Migration_Base', + 'TMDO_Post_Migration' => 'WPDO_Post_Migration', + 'TMDO_Zone_Hot' => 'WPDO_Zone_Hot', + 'TMDO_Zone_Warm' => 'WPDO_Zone_Warm', + 'TMDO_Zone_Cold' => 'WPDO_Zone_Cold', + 'TMDO_Zone_Router' => 'WPDO_Zone_Router', + 'TMDO_Routing_Predicate' => 'WPDO_Routing_Predicate', + 'TMDO_Migration_Phase_Base' => 'WPDO_Migration_Phase_Base', + 'TMDO_Phase_Diagnose' => 'WPDO_Phase_Diagnose', + 'TMDO_Phase_Backup' => 'WPDO_Phase_Backup', + 'TMDO_Phase_Demote' => 'WPDO_Phase_Demote', + 'TMDO_Phase_Install_Schema' => 'WPDO_Phase_Install_Schema', + 'TMDO_Phase_Backfill_Bulk' => 'WPDO_Phase_Backfill_Bulk', + 'TMDO_Phase_Backfill_Unserialize' => 'WPDO_Phase_Backfill_Unserialize', + 'TMDO_Phase_Promote_Shadow' => 'WPDO_Phase_Promote_Shadow', + 'TMDO_Phase_Verify_Sample' => 'WPDO_Phase_Verify_Sample', + 'TMDO_Phase_Promote_Aeav' => 'WPDO_Phase_Promote_Aeav', + 'TMDO_Phase_Cleanup' => 'WPDO_Phase_Cleanup', + 'TMDO_Phase_Completed' => 'WPDO_Phase_Completed', + 'TMDO_Zone_Archive' => 'WPDO_Zone_Archive', + 'TMDO_Interceptor_Base' => 'WPDO_Interceptor_Base', + 'TMDO_Standard_Post_Interceptor' => 'WPDO_Standard_Post_Interceptor', + 'TMDO_Query_Interceptor_Base' => 'WPDO_Query_Interceptor_Base', + 'TMDO_Abstract_Notifier' => 'WPDO_Abstract_Notifier', ); foreach ( $tmdo_class_aliases as $tmdo_class => $wpdo_alias ) { diff --git a/includes/class-tmdo-comment-stress-tester.php b/includes/class-tmdo-comment-stress-tester.php index 4ee7abf..5f9f49a 100644 --- a/includes/class-tmdo-comment-stress-tester.php +++ b/includes/class-tmdo-comment-stress-tester.php @@ -1,7 +1,4 @@ v2 legacy post meta migration /** * TMDO_Post_Migration — Post entity migration core (v2.9.3). * @@ -35,6 +32,10 @@ declare(strict_types=1); * @since 2.9.3 */ +// phpcs:ignore WPDO.AntiEAV -- platform migration tool: WPDO v1->v2 legacy post meta migration + +declare(strict_types=1); + if ( ! defined( 'ABSPATH' ) ) { exit; } diff --git a/includes/trait-tmdo-anti-eav-aware.php b/includes/trait-tmdo-anti-eav-aware.php index 5c41300..fce975f 100644 --- a/includes/trait-tmdo-anti-eav-aware.php +++ b/includes/trait-tmdo-anti-eav-aware.php @@ -31,183 +31,183 @@ if ( ! defined( 'ABSPATH' ) ) { // the same trait body in memory. if ( ! trait_exists( 'TMDO_Anti_EAV_Aware' ) ) { -trait TMDO_Anti_EAV_Aware { + trait TMDO_Anti_EAV_Aware { - /** - * Plugin slug used as provider identifier when registering fields/tables. - * - * Partner plugins SHOULD override this with their canonical slug - * (e.g. 'tmos-core', 'tmos-events'). Default returns lowercased class name - * for backward compatibility with older partner plugins that didn't define - * a slug. - */ - protected function plugin_slug(): string { - return strtolower( static::class ); - } - - /** - * Attach the three `wpdo_register_*` hooks to the corresponding - * `on_register_*` methods. Call once during plugin boot. - * - * Idempotent — safe to call multiple times because WP de-dupes - * identical (action, callback) pairs. - */ - protected function bind_anti_eav_hooks(): void { - add_action( 'wpdo_register_fields', array( $this, 'on_register_fields' ), 10, 1 ); - add_action( 'wpdo_register_custom_tables', array( $this, 'on_register_custom_tables' ), 10, 1 ); - add_action( 'wpdo_register_entity_fields', array( $this, 'on_register_entity_fields' ), 10, 0 ); - } - - // ── Hook handlers (override in subclass) ───────────────────────────────── - - /** - * Register hot/warm/cold/archive zone field mappings. - * - * Override in subclass and call `$this->register_field( $registry, [...] )` - * for each post-meta key the plugin manages. - * - * @param TMDO_Schema_Registry $registry The shared field registry. - */ - public function on_register_fields( TMDO_Schema_Registry $registry ): void { - // Default no-op. Override in subclass. - } - - /** - * Register custom tables owned by this plugin. - * - * Override in subclass and call `$this->register_custom_table( $r, [...] )` - * for each table. - * - * @param TMDO_Custom_Table_Registry $r The shared custom-table registry. - */ - public function on_register_custom_tables( TMDO_Custom_Table_Registry $r ): void { - // Default no-op. Override in subclass. - } - - /** - * Register entity field groups (user / term / comment / post metadata). - * - * Override in subclass and call `$this->register_entity_fields( $type, $group, [...] )` - * for each logical field group the plugin contributes. - */ - public function on_register_entity_fields(): void { - // Default no-op. Override in subclass. - } - - // ── Sugar wrappers around WPDO public API ──────────────────────────────── - - /** - * Register a single zone field via TMDO_Schema_Registry. - * - * @param TMDO_Schema_Registry $registry Provided by the `wpdo_register_fields` hook. - * @param array $field_def Field definition (post_type, meta_key, zone, ...). - */ - protected function register_field( TMDO_Schema_Registry $registry, array $field_def ): void { - $registry->register( $this->plugin_slug(), $field_def ); - } - - /** - * Register a custom table via TMDO_Custom_Table_Registry. - * - * @param TMDO_Custom_Table_Registry $r Provided by the `wpdo_register_custom_tables` hook. - * @param array $table_def Table definition (table_name, primary_key, expected_columns, indexes, ...). - */ - protected function register_custom_table( TMDO_Custom_Table_Registry $r, array $table_def ): void { - $r->register( $this->plugin_slug(), $table_def ); - } - - /** - * Register an entity field group via TMDO_Entity_Registry. - * - * @param string $entity_type 'post' | 'user' | 'term' | 'comment'. - * @param string $group_name Logical group name (e.g. 'tmos_vendor', 'tmos_audience'). - * @param array> $fields Field definitions. - */ - protected function register_entity_fields( string $entity_type, string $group_name, array $fields ): bool { - if ( ! class_exists( 'TMDO_Entity_Registry' ) ) { - return false; + /** + * Plugin slug used as provider identifier when registering fields/tables. + * + * Partner plugins SHOULD override this with their canonical slug + * (e.g. 'tmos-core', 'tmos-events'). Default returns lowercased class name + * for backward compatibility with older partner plugins that didn't define + * a slug. + */ + protected function plugin_slug(): string { + return strtolower( static::class ); + } + + /** + * Attach the three `wpdo_register_*` hooks to the corresponding + * `on_register_*` methods. Call once during plugin boot. + * + * Idempotent — safe to call multiple times because WP de-dupes + * identical (action, callback) pairs. + */ + protected function bind_anti_eav_hooks(): void { + add_action( 'wpdo_register_fields', array( $this, 'on_register_fields' ), 10, 1 ); + add_action( 'wpdo_register_custom_tables', array( $this, 'on_register_custom_tables' ), 10, 1 ); + add_action( 'wpdo_register_entity_fields', array( $this, 'on_register_entity_fields' ), 10, 0 ); + } + + // ── Hook handlers (override in subclass) ───────────────────────────────── + + /** + * Register hot/warm/cold/archive zone field mappings. + * + * Override in subclass and call `$this->register_field( $registry, [...] )` + * for each post-meta key the plugin manages. + * + * @param TMDO_Schema_Registry $registry The shared field registry. + */ + public function on_register_fields( TMDO_Schema_Registry $registry ): void { + // Default no-op. Override in subclass. + } + + /** + * Register custom tables owned by this plugin. + * + * Override in subclass and call `$this->register_custom_table( $r, [...] )` + * for each table. + * + * @param TMDO_Custom_Table_Registry $r The shared custom-table registry. + */ + public function on_register_custom_tables( TMDO_Custom_Table_Registry $r ): void { + // Default no-op. Override in subclass. + } + + /** + * Register entity field groups (user / term / comment / post metadata). + * + * Override in subclass and call `$this->register_entity_fields( $type, $group, [...] )` + * for each logical field group the plugin contributes. + */ + public function on_register_entity_fields(): void { + // Default no-op. Override in subclass. + } + + // ── Sugar wrappers around WPDO public API ──────────────────────────────── + + /** + * Register a single zone field via TMDO_Schema_Registry. + * + * @param TMDO_Schema_Registry $registry Provided by the `wpdo_register_fields` hook. + * @param array $field_def Field definition (post_type, meta_key, zone, ...). + */ + protected function register_field( TMDO_Schema_Registry $registry, array $field_def ): void { + $registry->register( $this->plugin_slug(), $field_def ); + } + + /** + * Register a custom table via TMDO_Custom_Table_Registry. + * + * @param TMDO_Custom_Table_Registry $r Provided by the `wpdo_register_custom_tables` hook. + * @param array $table_def Table definition (table_name, primary_key, expected_columns, indexes, ...). + */ + protected function register_custom_table( TMDO_Custom_Table_Registry $r, array $table_def ): void { + $r->register( $this->plugin_slug(), $table_def ); + } + + /** + * Register an entity field group via TMDO_Entity_Registry. + * + * @param string $entity_type 'post' | 'user' | 'term' | 'comment'. + * @param string $group_name Logical group name (e.g. 'tmos_vendor', 'tmos_audience'). + * @param array> $fields Field definitions. + */ + protected function register_entity_fields( string $entity_type, string $group_name, array $fields ): bool { + if ( ! class_exists( 'TMDO_Entity_Registry' ) ) { + return false; + } + return TMDO_Entity_Registry::register_group( $entity_type, $group_name, $fields ); + } + + // ── Read/write convenience wrappers ────────────────────────────────────── + + /** + * Read an entity field via the TMDO_API facade. + * + * @param string $entity_type 'post' | 'user' | 'term' | 'comment'. + * @param int $entity_id Entity primary id. + * @param string $key Meta key. + * @param bool $single Return single value (default true). + */ + protected function get_field( string $entity_type, int $entity_id, string $key, bool $single = true ): mixed { + return TMDO_API::get_entity( $entity_type, $entity_id, $key, $single ); + } + + /** + * Write an entity field via the TMDO_API facade. + * + * @param string $entity_type 'post' | 'user' | 'term' | 'comment'. + * @param int $entity_id Entity primary id. + * @param string $key Meta key. + * @param mixed $value Meta value. + * + * @return bool|int False on failure, otherwise the meta id (add) or true (update). + */ + protected function set_field( string $entity_type, int $entity_id, string $key, mixed $value ): bool|int { + return TMDO_API::set_entity( $entity_type, $entity_id, $key, $value ); + } + + /** + * Subscribe to write events on a specific meta key. + * + * Convenience wrapper around `add_action('wpdo_after_write', ...)` that + * filters callbacks to the plugin's own keys via prefix match. + * + * @param string $key_prefix Meta-key prefix to react on (e.g. 'tmos_vendor_'). + * @param callable $callback `function(string $entity_type, int $entity_id, string $key, mixed $value, bool $ok, string $op, mixed $before)`. + * @param int $priority WordPress action priority (default 10). + */ + protected function on_after_write( string $key_prefix, callable $callback, int $priority = 10 ): void { + add_action( + 'wpdo_after_write', + static function ( $entity_type, $entity_id, $meta_key, $meta_value, $ok, $op, $before ) use ( $key_prefix, $callback ): void { + if ( is_string( $meta_key ) && str_starts_with( $meta_key, $key_prefix ) ) { + $callback( $entity_type, $entity_id, $meta_key, $meta_value, $ok, $op, $before ); + } + }, + $priority, + 7 + ); + } + + // ── Backward-compat (legacy 2meet-* mu-plugin trait surface) ───────────── + // The pre-v2.17.0 mu-plugin trait stub exposed two abstract static methods + // (`register_wpdo_fields`, `register_custom_tables`). Older partner plugins + // (e.g. 2meet-inquiries) implemented those static methods. The promoted + // trait keeps the names with non-abstract no-op defaults so existing + // classes continue to work without modification. + + /** + * Legacy entry point for plugins that registered fields via a static method + * before v2.17.0. New partner plugins should override `on_register_fields()` + * (instance method) instead. + * + * @deprecated 2.17.0 Use instance method `on_register_fields()` + `bind_anti_eav_hooks()` instead. + */ + public static function register_wpdo_fields(): void { + // No-op default. Legacy classes overrode this and called the registry directly. + } + + /** + * Legacy entry point for plugins that registered custom tables via a static + * method before v2.17.0. + * + * @deprecated 2.17.0 Use instance method `on_register_custom_tables()` + `bind_anti_eav_hooks()` instead. + */ + public static function register_custom_tables(): void { + // No-op default. } - return TMDO_Entity_Registry::register_group( $entity_type, $group_name, $fields ); } - // ── Read/write convenience wrappers ────────────────────────────────────── - - /** - * Read an entity field via the TMDO_API facade. - * - * @param string $entity_type 'post' | 'user' | 'term' | 'comment'. - * @param int $entity_id Entity primary id. - * @param string $key Meta key. - * @param bool $single Return single value (default true). - */ - protected function get_field( string $entity_type, int $entity_id, string $key, bool $single = true ): mixed { - return TMDO_API::get_entity( $entity_type, $entity_id, $key, $single ); - } - - /** - * Write an entity field via the TMDO_API facade. - * - * @param string $entity_type 'post' | 'user' | 'term' | 'comment'. - * @param int $entity_id Entity primary id. - * @param string $key Meta key. - * @param mixed $value Meta value. - * - * @return bool|int False on failure, otherwise the meta id (add) or true (update). - */ - protected function set_field( string $entity_type, int $entity_id, string $key, mixed $value ): bool|int { - return TMDO_API::set_entity( $entity_type, $entity_id, $key, $value ); - } - - /** - * Subscribe to write events on a specific meta key. - * - * Convenience wrapper around `add_action('wpdo_after_write', ...)` that - * filters callbacks to the plugin's own keys via prefix match. - * - * @param string $key_prefix Meta-key prefix to react on (e.g. 'tmos_vendor_'). - * @param callable $callback `function(string $entity_type, int $entity_id, string $key, mixed $value, bool $ok, string $op, mixed $before)`. - * @param int $priority WordPress action priority (default 10). - */ - protected function on_after_write( string $key_prefix, callable $callback, int $priority = 10 ): void { - add_action( - 'wpdo_after_write', - static function ( $entity_type, $entity_id, $meta_key, $meta_value, $ok, $op, $before ) use ( $key_prefix, $callback ): void { - if ( is_string( $meta_key ) && str_starts_with( $meta_key, $key_prefix ) ) { - $callback( $entity_type, $entity_id, $meta_key, $meta_value, $ok, $op, $before ); - } - }, - $priority, - 7 - ); - } - - // ── Backward-compat (legacy 2meet-* mu-plugin trait surface) ───────────── - // The pre-v2.17.0 mu-plugin trait stub exposed two abstract static methods - // (`register_wpdo_fields`, `register_custom_tables`). Older partner plugins - // (e.g. 2meet-inquiries) implemented those static methods. The promoted - // trait keeps the names with non-abstract no-op defaults so existing - // classes continue to work without modification. - - /** - * Legacy entry point for plugins that registered fields via a static method - * before v2.17.0. New partner plugins should override `on_register_fields()` - * (instance method) instead. - * - * @deprecated 2.17.0 Use instance method `on_register_fields()` + `bind_anti_eav_hooks()` instead. - */ - public static function register_wpdo_fields(): void { - // No-op default. Legacy classes overrode this and called the registry directly. - } - - /** - * Legacy entry point for plugins that registered custom tables via a static - * method before v2.17.0. - * - * @deprecated 2.17.0 Use instance method `on_register_custom_tables()` + `bind_anti_eav_hooks()` instead. - */ - public static function register_custom_tables(): void { - // No-op default. - } -} - } // end if ( ! trait_exists ) diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..cff7241 --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,245 @@ + + + WPCS ruleset for WP Data Optimizer plugin. + + + . + + + */vendor/* + */tests/* + */back-compat/* + */node_modules/* + + */admin/assets/*.js + + + + + + + + */includes/adapters/* + */includes/engine/* + + + */includes/adapters/* + */includes/engine/* + + + */includes/adapters/* + */includes/engine/* + + + */includes/adapters/* + */includes/engine/* + + + + + + + */includes/adapters/interface-entity-adapter.php + */includes/back-compat/* + + + */includes/adapters/* + */includes/engine/* + + + */includes/adapters/* + */includes/engine/* + + + + */includes/adapters/* + */includes/engine/* + + + */includes/adapters/* + */includes/engine/* + + + */includes/adapters/* + */includes/engine/* + + + + */includes/adapters/* + */includes/engine/* + + + */includes/adapters/* + */includes/engine/* + + + */includes/adapters/* + */includes/engine/* + + + */includes/adapters/* + */includes/engine/* + + + + */includes/adapters/* + */includes/engine/* + + + + + */migration/phases/* + + + + */migration/phases/* + + + + + */cli/* + + + */cli/* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000..718a01a --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,3691 @@ +parameters: + ignoreErrors: + - + message: '#^Result of && is always false\.$#' + identifier: booleanAnd.alwaysFalse + count: 1 + path: '2meet-data-optimizer.php' + + - + message: '#^Strict comparison using \!\=\= between ''0\.1\.0'' and ''0\.1\.0'' will always evaluate to false\.$#' + identifier: notIdentical.alwaysFalse + count: 1 + path: '2meet-data-optimizer.php' + + - + message: '#^Access to constant VIEW_KEY on an unknown class TMDO_Listing_Stats\.$#' + identifier: class.notFound + count: 1 + path: admin/class-tmdo-admin.php + + - + message: '#^Call to static method can_import\(\) on an unknown class TMDO_HPCT_Import\.$#' + identifier: class.notFound + count: 1 + path: admin/class-tmdo-admin.php + + - + message: '#^Call to static method is_imported\(\) on an unknown class TMDO_HPCT_Import\.$#' + identifier: class.notFound + count: 1 + path: admin/class-tmdo-admin.php + + - + message: '#^Call to static method preview\(\) on an unknown class TMDO_HPCT_Import\.$#' + identifier: class.notFound + count: 1 + path: admin/class-tmdo-admin.php + + - + message: '#^Call to static method run\(\) on an unknown class TMDO_HPCT_Import\.$#' + identifier: class.notFound + count: 1 + path: admin/class-tmdo-admin.php + + - + message: '#^Method TMDO_Admin\:\:render_stress_benchmark\(\) has parameter \$bench with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: admin/class-tmdo-admin.php + + - + message: '#^Offset ''flush_support'' does not exist on array\{groups\: array, prefetch_support\: bool\}\.$#' + identifier: offsetAccess.notFound + count: 1 + path: admin/class-tmdo-admin.php + + - + message: '#^Parameter \#1 \$text of function esc_attr expects string, float given\.$#' + identifier: argument.type + count: 1 + path: admin/class-tmdo-admin.php + + - + message: '#^Parameter \#1 \$text of function esc_html expects string, float given\.$#' + identifier: argument.type + count: 1 + path: admin/class-tmdo-admin.php + + - + message: '#^Parameter \#1 \$text of function esc_html expects string, int given\.$#' + identifier: argument.type + count: 1 + path: admin/class-tmdo-admin.php + + - + message: '#^Right side of && is always true\.$#' + identifier: booleanAnd.rightAlwaysTrue + count: 2 + path: admin/class-tmdo-admin.php + + - + message: '#^Unreachable statement \- code above always terminates\.$#' + identifier: deadCode.unreachable + count: 2 + path: admin/class-tmdo-admin.php + + - + message: '#^Method TMDO_Dashboard_Widget\:\:compute_status\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: admin/class-tmdo-dashboard-widget.php + + - + message: '#^Method TMDO_Dashboard_Widget\:\:traffic_light\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: admin/class-tmdo-dashboard-widget.php + + - + message: '#^Method TMDO_Export\:\:respond\(\) has parameter \$headers with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: admin/class-tmdo-export.php + + - + message: '#^Method TMDO_Export\:\:respond\(\) has parameter \$rows with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: admin/class-tmdo-export.php + + - + message: '#^Method TMDO_Export\:\:respond_csv\(\) has parameter \$headers with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: admin/class-tmdo-export.php + + - + message: '#^Method TMDO_Export\:\:respond_csv\(\) has parameter \$rows with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: admin/class-tmdo-export.php + + - + message: '#^Method TMDO_Export\:\:respond_json\(\) has parameter \$rows with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: admin/class-tmdo-export.php + + - + message: '#^Variable \$test_comment_count might not be defined\.$#' + identifier: variable.undefined + count: 4 + path: admin/templates/comment-stress-test.php + + - + message: '#^Variable \$diagnose might not be defined\.$#' + identifier: variable.undefined + count: 9 + path: admin/templates/post-migration-wizard.php + + - + message: '#^Variable \$garbage might not be defined\.$#' + identifier: variable.undefined + count: 5 + path: admin/templates/post-migration-wizard.php + + - + message: '#^Variable \$diagnose might not be defined\.$#' + identifier: variable.undefined + count: 3 + path: admin/templates/post-stress-test.php + + - + message: '#^Variable \$test_post_count might not be defined\.$#' + identifier: variable.undefined + count: 4 + path: admin/templates/post-stress-test.php + + - + message: '#^Variable \$taxonomies might not be defined\.$#' + identifier: variable.undefined + count: 1 + path: admin/templates/term-stress-test.php + + - + message: '#^Variable \$test_term_count might not be defined\.$#' + identifier: variable.undefined + count: 4 + path: admin/templates/term-stress-test.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_audit\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_audit\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_backfill\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_backfill\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_cutover\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_cutover\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_force_logout\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_force_logout\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_points_check\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_points_check\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_shadow_report\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_shadow_report\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_sso_sync\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Method TMDO_CLI_Member\:\:member_sso_sync\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Member'', ''member_audit''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Member'', ''member_backfill''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Member'', ''member_cutover''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Member'', ''member_force_logout''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Member'', ''member_points_check''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Member'', ''member_shadow_report''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Member'', ''member_sso_sync''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-member.php + + - + message: '#^Call to static method count_legacy_postmeta_rows\(\) on an unknown class TMDO_Hivepress_Transient_Filter\.$#' + identifier: class.notFound + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Call to static method purge_legacy_postmeta_rows\(\) on an unknown class TMDO_Hivepress_Transient_Filter\.$#' + identifier: class.notFound + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:cleanup_hp_transients\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:cleanup_hp_transients\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_benchmark\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_benchmark\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_cleanup\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_cleanup\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_cutover_legacy\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_cutover_legacy\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_diagnose\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_diagnose\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_migrate_group\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_migrate_group\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_shadow_report\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:post_shadow_report\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:postmeta_cleanup\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:postmeta_cleanup\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Post\:\:render_table\(\) has parameter \$counts with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Post'', ''cleanup_hp…''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Post'', ''post_benchmark''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Post'', ''post_cleanup''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Post'', ''post_cutover_legacy''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Post'', ''post_diagnose''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Post'', ''post_migrate_group''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Post'', ''post_shadow_report''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Post'', ''postmeta_cleanup''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Variable \$result might not be defined\.$#' + identifier: variable.undefined + count: 18 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Variable \$verify might not be defined\.$#' + identifier: variable.undefined + count: 5 + path: cli/class-tmdo-cli-post.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:comment_promote_mode\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:comment_promote_mode\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:comment_stress_test\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:comment_stress_test\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:commentmeta_cleanup\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:commentmeta_cleanup\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:cst_cleanup\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:cst_start\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:promote_mode\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:promote_mode\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:render_comment_table\(\) has parameter \$counts with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:render_term_table\(\) has parameter \$counts with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:term_comment_backfill\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:term_comment_backfill\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:term_comment_diagnose\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:term_comment_diagnose\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:term_comment_shadow_report\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:term_comment_shadow_report\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:term_promote_mode\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:term_promote_mode\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:termmeta_cleanup\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_Term_Comment\:\:termmeta_cleanup\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Term…'', ''comment_promote_mode''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Term…'', ''comment_stress_test''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Term…'', ''commentmeta_cleanup''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Term…'', ''term_comment_shadow…''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Term…'', ''term_comment…''\} given\.$#' + identifier: argument.type + count: 4 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Term…'', ''term_promote_mode''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_Term…'', ''termmeta_cleanup''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-term-comment.php + + - + message: '#^Method TMDO_CLI_V2\:\:bridge_set\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:bridge_set\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:bridge_status\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:bridge_status\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:conflict_scan\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:conflict_scan\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:crypto_migrate\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:crypto_migrate\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:crypto_status\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:crypto_status\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:lint\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:lint\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:mode_audit\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:mode_audit\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:mode_set\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:mode_set\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:shadow_disable\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:shadow_disable\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:shadow_enable\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:shadow_enable\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:snapshot_create\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:snapshot_create\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:snapshot_list\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:snapshot_list\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:snapshot_prune\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:snapshot_prune\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:snapshot_restore\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:snapshot_restore\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:snapshot_verify\(\) has parameter \$args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Method TMDO_CLI_V2\:\:snapshot_verify\(\) has parameter \$assoc_args with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''bridge_set''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''bridge_status''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''conflict_scan''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''crypto_migrate''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''crypto_status''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''lint''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''mode_audit''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''mode_set''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''shadow_disable''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''shadow_enable''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''snapshot_create''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''snapshot_list''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''snapshot_prune''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''snapshot_restore''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callable of static method WP_CLI\:\:add_command\(\) expects \(callable\(\)\: mixed\)\|object\|string, array\{''TMDO_CLI_V2'', ''snapshot_verify''\} given\.$#' + identifier: argument.type + count: 2 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Parameter \#2 \$callback of function array_filter expects \(callable\(string\)\: bool\)\|null, ''strlen'' given\.$#' + identifier: argument.type + count: 1 + path: cli/class-tmdo-cli-v2.php + + - + message: '#^Access to constant VIEW_KEY on an unknown class TMDO_Listing_Stats\.$#' + identifier: class.notFound + count: 2 + path: cli/class-tmdo-cli.php + + - + message: '#^Call to method finish\(\) on an unknown class cli\\progress\\Bar\.$#' + identifier: class.notFound + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Call to method tick\(\) on an unknown class cli\\progress\\Bar\.$#' + identifier: class.notFound + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Call to static method archive_expired_listings\(\) on an unknown class TMDO_Listing_Stats\.$#' + identifier: class.notFound + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Call to static method can_import\(\) on an unknown class TMDO_HPCT_Import\.$#' + identifier: class.notFound + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Call to static method is_imported\(\) on an unknown class TMDO_HPCT_Import\.$#' + identifier: class.notFound + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Call to static method preview\(\) on an unknown class TMDO_HPCT_Import\.$#' + identifier: class.notFound + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Call to static method run\(\) on an unknown class TMDO_HPCT_Import\.$#' + identifier: class.notFound + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Constant DB_NAME not found\.$#' + identifier: constant.notFound + count: 2 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:add_indexes\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:add_indexes\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:analyze\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:analyze\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:benchmark\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:benchmark\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:cleanup\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:cleanup\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:cutover\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:cutover\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:disable\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:disable\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:doctor\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:doctor\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:enable\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:enable\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:format_hpct_status\(\) has parameter \$compat with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:health_snapshot\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:health_snapshot\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:import_hpct\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:import_hpct\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:install\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:install\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:migrate\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:migrate\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:register_stub\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:register_stub\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:rest_test\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:rest_test\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:rollback\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:rollback\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:site_metrics\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:site_metrics\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:status\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:status\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:verify\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_CLI\:\:verify\(\) has parameter \$assoc_args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: cli/class-tmdo-cli.php + + - + message: '#^Method TMDO_Adapter_Term\:\:extend_term_clauses\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/adapters/class-tmdo-adapter-term.php + + - + message: '#^Method TMDO_Adapter_Term\:\:extend_term_clauses\(\) has parameter \$clauses with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/adapters/class-tmdo-adapter-term.php + + - + message: '#^Method TMDO_Adapter_Term\:\:extend_term_clauses\(\) has parameter \$taxonomies with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/adapters/class-tmdo-adapter-term.php + + - + message: '#^Method TMDO_Adapter_Term\:\:extend_term_clauses\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/adapters/class-tmdo-adapter-term.php + + - + message: '#^Method TMDO_FSM_Advisor\:\:advise\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-fsm-advisor.php + + - + message: '#^Method TMDO_FSM_Advisor\:\:advise_all\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-fsm-advisor.php + + - + message: '#^Method TMDO_FSM_Advisor\:\:shadow_diff_ratio\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-fsm-advisor.php + + - + message: '#^Method TMDO_FSM_Advisor\:\:stub\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-fsm-advisor.php + + - + message: '#^Method TMDO_FSM_Automator\:\:blacklist\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-fsm-automator.php + + - + message: '#^Method TMDO_FSM_Automator\:\:interval_clear\(\) has parameter \$last_actions with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-fsm-automator.php + + - + message: '#^Method TMDO_FSM_Automator\:\:last_actions\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-fsm-automator.php + + - + message: '#^Method TMDO_FSM_Automator\:\:run\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-fsm-automator.php + + - + message: '#^Call to function is_array\(\) with array will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: includes/advisor/class-tmdo-module-detector.php + + - + message: '#^Method TMDO_Module_Detector\:\:build\(\) has parameter \$blockers with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-module-detector.php + + - + message: '#^Method TMDO_Module_Detector\:\:build\(\) has parameter \$reasons with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-module-detector.php + + - + message: '#^Method TMDO_Module_Detector\:\:build\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-module-detector.php + + - + message: '#^Method TMDO_Module_Detector\:\:check_compat\(\) has parameter \$required with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-module-detector.php + + - + message: '#^Method TMDO_Module_Detector\:\:detect_all\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-module-detector.php + + - + message: '#^Method TMDO_Module_Detector\:\:detect_one\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-module-detector.php + + - + message: '#^Method TMDO_Module_Detector\:\:get_actionable\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-module-detector.php + + - + message: '#^Method TMDO_Module_Detector\:\:get_cached\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-module-detector.php + + - + message: '#^Method TMDO_Module_Detector\:\:stub\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-module-detector.php + + - + message: '#^Method TMDO_Module_Rules\:\:all\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-module-rules.php + + - + message: '#^Method TMDO_Module_Rules\:\:for_module\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/advisor/class-tmdo-module-rules.php + + - + message: '#^Method TMDO_API\:\:query\(\) has parameter \$args with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-api.php + + - + message: '#^Call to function class_exists\(\) with ''WPDO_Abstract…''\|''WPDO_Adapter_Comment''\|''WPDO_Adapter_Post''\|''WPDO_Adapter_Term''\|''WPDO_Adapter_User''\|''WPDO_Admin''\|''WPDO_API''\|''WPDO_Archive…''\|''WPDO_Audit_Logger''\|''WPDO_Auto_Promoter''\|''WPDO_Cache_Layer''\|''WPDO_Cache…''\|''WPDO_Capability''\|''WPDO_CLI''\|''WPDO_CLI_Member''\|''WPDO_CLI_Post''\|''WPDO_CLI_Term…''\|''WPDO_CLI_V2''\|''WPDO_Cold_Migration''\|''WPDO_Comment_Stress…''\|''WPDO_Commentmeta…''\|''WPDO_Compatibility''\|''WPDO_Conflict…''\|''WPDO_Core''\|''WPDO_Crypto''\|''WPDO_CSV_Writer''\|''WPDO_Custom_Table…''\|''WPDO_Dashboard…''\|''WPDO_DB''\|''WPDO_Demo_Entity…''\|''WPDO_Discord…''\|''WPDO_Email_Notifier''\|''WPDO_Entity_Health''\|''WPDO_Entity…''\|''WPDO_Entity_Registry''\|''WPDO_Export''\|''WPDO_Feature_Flags''\|''WPDO_FSM_Advisor''\|''WPDO_FSM_Automator''\|''WPDO_FSM_Guard''\|''WPDO_Health_Cron''\|''WPDO_Help_Tabs''\|''WPDO_Hook_Bus''\|''WPDO_Hook_Bus_Bridge''\|''WPDO_Hot_Migration''\|''WPDO_Installer''\|''WPDO_Interceptor…''\|''WPDO_Logger''\|''WPDO_Member_Fields''\|''WPDO_Migration_Base''\|''WPDO_Migration…''\|''WPDO_Mode_Manager''\|''WPDO_Module_Detector''\|''WPDO_Module_Rules''\|''WPDO_Monthly_Summary''\|''WPDO_Options_Manager''\|''WPDO_Phase_Backfill…''\|''WPDO_Phase_Backup''\|''WPDO_Phase_Cleanup''\|''WPDO_Phase_Completed''\|''WPDO_Phase_Demote''\|''WPDO_Phase_Diagnose''\|''WPDO_Phase_Install…''\|''WPDO_Phase_Promote…''\|''WPDO_Phase_Verify…''\|''WPDO_Points_Manager''\|''WPDO_Post_Fields''\|''WPDO_Post_Migration''\|''WPDO_Post_Query…''\|''WPDO_Post_Shadow…''\|''WPDO_Post_Stress…''\|''WPDO_Postmeta…''\|''WPDO_Query_Compiler''\|''WPDO_Query…''\|''WPDO_Query_Router''\|''WPDO_REST_API''\|''WPDO_Routing…''\|''WPDO_Safe…''\|''WPDO_Schema_Manager''\|''WPDO_Schema_Registry''\|''WPDO_Setup_Wizard''\|''WPDO_Shadow_Diff…''\|''WPDO_Site_Health''\|''WPDO_Site_Metrics…''\|''WPDO_Slack_Notifier''\|''WPDO_Snapshot…''\|''WPDO_Snapshot_Pruner''\|''WPDO_Snapshot_Reader''\|''WPDO_Snapshot_Writer''\|''WPDO_SQLite_Compat''\|''WPDO_Standard_Post…''\|''WPDO_Sync_Bridge''\|''WPDO_Telegram…''\|''WPDO_Term_Comment…''\|''WPDO_Term_Stress…''\|''WPDO_Termmeta…''\|''WPDO_Type_Caster''\|''WPDO_User_Stress…''\|''WPDO_V2_Upgrader''\|''WPDO_Warm_Migration''\|''WPDO_Zone_Archive''\|''WPDO_Zone_Classifier''\|''WPDO_Zone_Cold''\|''WPDO_Zone_Hot''\|''WPDO_Zone_Router''\|''WPDO_Zone_Warm'' and false will always evaluate to false\.$#' + identifier: function.impossibleType + count: 1 + path: includes/class-tmdo-back-compat.php + + - + message: '#^Method TMDO_Cache_Layer\:\:get_stats\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-cache-layer.php + + - + message: '#^Method TMDO_Comment_Stress_Tester\:\:cancel\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-comment-stress-tester.php + + - + message: '#^Method TMDO_Comment_Stress_Tester\:\:compute_write_metrics\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-comment-stress-tester.php + + - + message: '#^Method TMDO_Comment_Stress_Tester\:\:compute_write_metrics\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-comment-stress-tester.php + + - + message: '#^Method TMDO_Comment_Stress_Tester\:\:finalize\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-comment-stress-tester.php + + - + message: '#^Method TMDO_Comment_Stress_Tester\:\:get_progress\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-comment-stress-tester.php + + - + message: '#^Method TMDO_Comment_Stress_Tester\:\:get_state\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-comment-stress-tester.php + + - + message: '#^Method TMDO_Comment_Stress_Tester\:\:measure_db_sizes\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-comment-stress-tester.php + + - + message: '#^Method TMDO_Comment_Stress_Tester\:\:measure_query_performance\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-comment-stress-tester.php + + - + message: '#^Method TMDO_Comment_Stress_Tester\:\:run_benchmark\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-comment-stress-tester.php + + - + message: '#^Method TMDO_Comment_Stress_Tester\:\:run_benchmark\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-comment-stress-tester.php + + - + message: '#^Method TMDO_Comment_Stress_Tester\:\:start\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-comment-stress-tester.php + + - + message: '#^Method TMDO_Compatibility\:\:check\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-compatibility.php + + - + message: '#^Property TMDO_Compatibility\:\:\$detected type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-compatibility.php + + - + message: '#^Action callback returns array\ but should not return anything\.$#' + identifier: return.void + count: 1 + path: includes/class-tmdo-conflict-monitor.php + + - + message: '#^Method TMDO_Conflict_Monitor\:\:get_all_conflicts\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-conflict-monitor.php + + - + message: '#^Method TMDO_Conflict_Monitor\:\:persist_audit_summary\(\) has parameter \$conflicts with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-conflict-monitor.php + + - + message: '#^Method TMDO_Conflict_Monitor\:\:scan\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-conflict-monitor.php + + - + message: '#^Action callback returns array but should not return anything\.$#' + identifier: return.void + count: 2 + path: includes/class-tmdo-core.php + + - + message: '#^Method TMDO_Core\:\:register_hivepress_defaults\(\) is unused\.$#' + identifier: method.unused + count: 1 + path: includes/class-tmdo-core.php + + - + message: '#^Constant AUTH_KEY not found\.$#' + identifier: constant.notFound + count: 1 + path: includes/class-tmdo-crypto.php + + - + message: '#^Constant SECURE_AUTH_SALT not found\.$#' + identifier: constant.notFound + count: 1 + path: includes/class-tmdo-crypto.php + + - + message: '#^Method TMDO_Custom_Table_Registry\:\:all\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-custom-table-registry.php + + - + message: '#^Method TMDO_Custom_Table_Registry\:\:for_post_type\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-custom-table-registry.php + + - + message: '#^Method TMDO_Custom_Table_Registry\:\:for_provider\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-custom-table-registry.php + + - + message: '#^Method TMDO_Custom_Table_Registry\:\:register\(\) has parameter \$config with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-custom-table-registry.php + + - + message: '#^Property TMDO_Custom_Table_Registry\:\:\$registration_done is never read, only written\.$#' + identifier: property.onlyWritten + count: 1 + path: includes/class-tmdo-custom-table-registry.php + + - + message: '#^Property TMDO_Custom_Table_Registry\:\:\$tables type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 2 + path: includes/class-tmdo-custom-table-registry.php + + - + message: '#^Method TMDO_DB\:\:insert_ignore\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-db.php + + - + message: '#^Method TMDO_DB\:\:insert_ignore\(\) has parameter \$format with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-db.php + + - + message: '#^Method TMDO_DB\:\:upsert\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-db.php + + - + message: '#^Method TMDO_DB\:\:upsert\(\) has parameter \$format with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-db.php + + - + message: '#^Method TMDO_DB\:\:upsert\(\) has parameter \$update_columns with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-db.php + + - + message: '#^Property TMDO_Feature_Flags\:\:\$cache type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-feature-flags.php + + - + message: '#^Empty array passed to foreach\.$#' + identifier: foreach.emptyArray + count: 1 + path: includes/class-tmdo-installer.php + + - + message: '#^Method TMDO_Installer\:\:add_covering_indexes\(\) has parameter \$columns with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-installer.php + + - + message: '#^Method TMDO_Installer\:\:create_hot_table\(\) has parameter \$columns with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-installer.php + + - + message: '#^Method TMDO_Installer\:\:ensure_hot_columns\(\) has parameter \$expected_columns with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-installer.php + + - + message: '#^Parameter \#4 \$autoload of function add_option expects bool\|null, string given\.$#' + identifier: argument.type + count: 1 + path: includes/class-tmdo-installer.php + + - + message: '#^Method TMDO_Logger\:\:debug\(\) has parameter \$context with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-logger.php + + - + message: '#^Method TMDO_Logger\:\:error\(\) has parameter \$context with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-logger.php + + - + message: '#^Method TMDO_Logger\:\:get_recent\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-logger.php + + - + message: '#^Method TMDO_Logger\:\:info\(\) has parameter \$context with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-logger.php + + - + message: '#^Method TMDO_Logger\:\:notice\(\) has parameter \$context with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-logger.php + + - + message: '#^Method TMDO_Logger\:\:warning\(\) has parameter \$context with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-logger.php + + - + message: '#^Left side of && is always true\.$#' + identifier: booleanAnd.leftAlwaysTrue + count: 1 + path: includes/class-tmdo-post-shadow-verifier.php + + - + message: '#^Method TMDO_Post_Shadow_Verifier\:\:recent_diffs\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-shadow-verifier.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:cancel\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:compute_write_metrics\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:compute_write_metrics\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:finalize\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:get_progress\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:get_state\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:measure_db_sizes\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:measure_query_performance\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:run_benchmark\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:run_benchmark\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:start\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:time_calls\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Method TMDO_Post_Stress_Tester\:\:time_query\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Static method TMDO_Post_Stress_Tester\:\:time_calls\(\) is unused\.$#' + identifier: method.unused + count: 1 + path: includes/class-tmdo-post-stress-tester.php + + - + message: '#^Call to static method get_view_count\(\) on an unknown class TMDO_Listing_Stats\.$#' + identifier: class.notFound + count: 2 + path: includes/class-tmdo-rest-api.php + + - + message: '#^Call to static method increment_view\(\) on an unknown class TMDO_Listing_Stats\.$#' + identifier: class.notFound + count: 1 + path: includes/class-tmdo-rest-api.php + + - + message: '#^Method TMDO_REST_API\:\:get_filter_params\(\) has parameter \$columns with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-rest-api.php + + - + message: '#^Method TMDO_REST_API\:\:get_filter_params\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-rest-api.php + + - + message: '#^Method TMDO_REST_API\:\:listings_args\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-rest-api.php + + - + message: '#^Ternary operator condition is always true\.$#' + identifier: ternary.alwaysTrue + count: 1 + path: includes/class-tmdo-rest-api.php + + - + message: '#^Method TMDO_Schema_Registry\:\:all\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-schema-registry.php + + - + message: '#^Method TMDO_Schema_Registry\:\:get_field\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-schema-registry.php + + - + message: '#^Method TMDO_Schema_Registry\:\:get_hot_columns\(\) should return array\ but returns array\\.$#' + identifier: return.type + count: 1 + path: includes/class-tmdo-schema-registry.php + + - + message: '#^Method TMDO_Schema_Registry\:\:get_warm_field\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-schema-registry.php + + - + message: '#^Method TMDO_Schema_Registry\:\:get_zone_fields\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-schema-registry.php + + - + message: '#^Method TMDO_Schema_Registry\:\:get_zone_fields_for_type\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-schema-registry.php + + - + message: '#^Method TMDO_Schema_Registry\:\:register\(\) has parameter \$config with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-schema-registry.php + + - + message: '#^Method TMDO_Schema_Registry\:\:register_many\(\) has parameter \$configs with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-schema-registry.php + + - + message: '#^Property TMDO_Schema_Registry\:\:\$fields type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-schema-registry.php + + - + message: '#^Property TMDO_Schema_Registry\:\:\$hot_columns type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-schema-registry.php + + - + message: '#^Property TMDO_Schema_Registry\:\:\$warm_fields type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-schema-registry.php + + - + message: '#^Method TMDO_SQLite_Compat\:\:get_system_column_definitions\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-sqlite-compat.php + + - + message: '#^Method TMDO_SQLite_Compat\:\:patch_table\(\) has parameter \$columns with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-sqlite-compat.php + + - + message: '#^Left side of && is always true\.$#' + identifier: booleanAnd.leftAlwaysTrue + count: 1 + path: includes/class-tmdo-term-comment-shadow-verifier.php + + - + message: '#^Method TMDO_Term_Comment_Shadow_Verifier\:\:recent_diffs\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-comment-shadow-verifier.php + + - + message: '#^Method TMDO_Term_Comment_Shadow_Verifier\:\:run_all\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-comment-shadow-verifier.php + + - + message: '#^PHPDoc tag @var for constant TMDO_Term_Comment_Shadow_Verifier\:\:GROUP_MAP with type array\ is incompatible with value array\{hp_taxonomy\: array\{entity_type\: ''term'', table_suffix\: ''wpdo_term_hp…''\}, hp_review\: array\{entity_type\: ''comment'', table_suffix\: ''wpdo_comment_hp…''\}\}\.$#' + identifier: classConstant.phpDocType + count: 1 + path: includes/class-tmdo-term-comment-shadow-verifier.php + + - + message: '#^Method TMDO_Term_Stress_Tester\:\:cancel\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-stress-tester.php + + - + message: '#^Method TMDO_Term_Stress_Tester\:\:compute_write_metrics\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-stress-tester.php + + - + message: '#^Method TMDO_Term_Stress_Tester\:\:compute_write_metrics\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-stress-tester.php + + - + message: '#^Method TMDO_Term_Stress_Tester\:\:finalize\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-stress-tester.php + + - + message: '#^Method TMDO_Term_Stress_Tester\:\:get_progress\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-stress-tester.php + + - + message: '#^Method TMDO_Term_Stress_Tester\:\:get_state\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-stress-tester.php + + - + message: '#^Method TMDO_Term_Stress_Tester\:\:measure_db_sizes\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-stress-tester.php + + - + message: '#^Method TMDO_Term_Stress_Tester\:\:measure_query_performance\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-stress-tester.php + + - + message: '#^Method TMDO_Term_Stress_Tester\:\:run_benchmark\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-stress-tester.php + + - + message: '#^Method TMDO_Term_Stress_Tester\:\:run_benchmark\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-stress-tester.php + + - + message: '#^Method TMDO_Term_Stress_Tester\:\:start\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-term-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:cancel\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:cleanup\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:compute_write_metrics\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:compute_write_metrics\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:finalize\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:generate_realistic_meta\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:get_progress\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:get_state\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:get_user_flat_tables\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_activity\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_cold\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_commerce\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_commerce\(\) has parameter \$user_data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_core_profile\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_core_profile\(\) has parameter \$user_data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_hot\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_hp_user\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_membership\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_profile\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_profile\(\) has parameter \$user_data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_social\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_flat_sso\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_points_ledger\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_usermeta_bulk\(\) has parameter \$seq_to_id with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:insert_usermeta_bulk\(\) has parameter \$user_data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:measure_db_sizes\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:measure_query_performance\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:run_benchmark\(\) has parameter \$state with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:run_benchmark\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:start\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:time_calls\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_User_Stress_Tester\:\:time_query\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Variable \$sample_ids in empty\(\) always exists and is not falsy\.$#' + identifier: empty.variable + count: 1 + path: includes/class-tmdo-user-stress-tester.php + + - + message: '#^Method TMDO_V2_Upgrader\:\:pre_flight_check\(\) has parameter \$opts with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-v2-upgrader.php + + - + message: '#^Method TMDO_Zone_Classifier\:\:analyze\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-zone-classifier.php + + - + message: '#^Method TMDO_Zone_Classifier\:\:build_reasons\(\) has parameter \$signals with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-zone-classifier.php + + - + message: '#^Method TMDO_Zone_Classifier\:\:build_reasons\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-zone-classifier.php + + - + message: '#^Method TMDO_Zone_Classifier\:\:collect_signals\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-zone-classifier.php + + - + message: '#^Method TMDO_Zone_Classifier\:\:score_zones\(\) has parameter \$signals with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/class-tmdo-zone-classifier.php + + - + message: '#^Method TMDO_Health_Cron\:\:first_critical_test\(\) has parameter \$results with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-health-cron.php + + - + message: '#^Method TMDO_Health_Cron\:\:get_last_run\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-health-cron.php + + - + message: '#^Method TMDO_Health_Cron\:\:run\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-health-cron.php + + - + message: '#^Method TMDO_Health_Cron\:\:run_site_health_tests\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-health-cron.php + + - + message: '#^Method TMDO_Health_Cron\:\:summarize_conflicts\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-health-cron.php + + - + message: '#^Method TMDO_Health_Cron\:\:summarize_shadow_diffs\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-health-cron.php + + - + message: '#^Action callback returns array but should not return anything\.$#' + identifier: return.void + count: 1 + path: includes/diagnostic/class-tmdo-monthly-summary.php + + - + message: '#^Method TMDO_Monthly_Summary\:\:aggregate_fsm\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-monthly-summary.php + + - + message: '#^Method TMDO_Monthly_Summary\:\:aggregate_health\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-monthly-summary.php + + - + message: '#^Method TMDO_Monthly_Summary\:\:aggregate_snapshots\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-monthly-summary.php + + - + message: '#^Method TMDO_Monthly_Summary\:\:aggregate_zone_growth\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-monthly-summary.php + + - + message: '#^Method TMDO_Monthly_Summary\:\:generate\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-monthly-summary.php + + - + message: '#^Method TMDO_Monthly_Summary\:\:get_latest\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-monthly-summary.php + + - + message: '#^Offset ''autoload_size'' on array\{period_start\: string, period_end\: string, health\: array, fsm_trajectory\: array, snapshots\: array, zone_growth\: array, autoload_size\: int, duration_ms\: int, \.\.\.\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: includes/diagnostic/class-tmdo-monthly-summary.php + + - + message: '#^Call to function method_exists\(\) with ''TMDO_Installer'' and ''v2_tables_status'' will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:cached\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:check_autoload_bloat\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:check_error_budget\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:check_hook_conflicts\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:check_missing_snapshot\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:check_orphan_zone_rows\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:check_postmeta_explosion\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:check_schema_drift\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:fail\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:pass\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:register_tests\(\) has parameter \$tests with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:register_tests\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:wrap\(\) has parameter \$result with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Method TMDO_Site_Health\:\:wrap\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/diagnostic/class-tmdo-site-health.php + + - + message: '#^Action callback returns array\ but should not return anything\.$#' + identifier: return.void + count: 1 + path: includes/diagnostic/class-tmdo-site-metrics-collector.php + + - + message: '#^Offset ''custom_tables\.total…'' on array\{''eav\.postmeta_rows''\: int, ''eav\.usermeta_rows''\: int, ''eav\.termmeta_rows''\: int, ''eav\.commentmeta_rows''\: int, ''flat\.hot_rows''\: int, ''flat\.cold_rows''\: int, ''flat\.warm_rows''\: int, ''custom_tables\.total_rows''\: int, \.\.\.\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: includes/diagnostic/class-tmdo-site-metrics-collector.php + + - + message: '#^Offset ''eav\.postmeta_rows'' on array\{''eav\.postmeta_rows''\: int, ''eav\.usermeta_rows''\: int, ''eav\.termmeta_rows''\: int, ''eav\.commentmeta_rows''\: int, ''flat\.hot_rows''\: int, ''flat\.cold_rows''\: int, ''flat\.warm_rows''\: int, ''custom_tables\.total_rows''\: int, \.\.\.\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: includes/diagnostic/class-tmdo-site-metrics-collector.php + + - + message: '#^Offset ''flat\.hot_rows'' on array\{''eav\.postmeta_rows''\: int, ''eav\.usermeta_rows''\: int, ''eav\.termmeta_rows''\: int, ''eav\.commentmeta_rows''\: int, ''flat\.hot_rows''\: int, ''flat\.cold_rows''\: int, ''flat\.warm_rows''\: int, ''custom_tables\.total_rows''\: int, \.\.\.\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: includes/diagnostic/class-tmdo-site-metrics-collector.php + + - + message: '#^Call to an undefined static method TMDO_Logger\:\:trace_id\(\)\.$#' + identifier: staticMethod.notFound + count: 1 + path: includes/engine/class-tmdo-audit-logger.php + + - + message: '#^Method TMDO_Audit_Logger\:\:stringify\(\) has parameter \$value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-audit-logger.php + + - + message: '#^Method TMDO_Audit_Logger\:\:write_row\(\) has parameter \$row with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-audit-logger.php + + - + message: '#^Action callback returns array\ but should not return anything\.$#' + identifier: return.void + count: 1 + path: includes/engine/class-tmdo-auto-promoter.php + + - + message: '#^Method TMDO_Auto_Promoter\:\:check_entity\(\) has parameter \$entered_all with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-auto-promoter.php + + - + message: '#^Comparison operation "\>" between 1000 and 0 is always true\.$#' + identifier: greater.alwaysTrue + count: 1 + path: includes/engine/class-tmdo-cache-orchestrator.php + + - + message: '#^Method TMDO_Cache_Orchestrator\:\:get_l1_stats\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-cache-orchestrator.php + + - + message: '#^Method TMDO_Cache_Orchestrator\:\:get_row\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: includes/engine/class-tmdo-cache-orchestrator.php + + - + message: '#^Method TMDO_Cache_Orchestrator\:\:set_l1\(\) has parameter \$data with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-cache-orchestrator.php + + - + message: '#^Method TMDO_Cache_Orchestrator\:\:set_row\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-cache-orchestrator.php + + - + message: '#^Method TMDO_Cache_Orchestrator\:\:warm_batch\(\) has parameter \$ids with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-cache-orchestrator.php + + - + message: '#^Action callback returns array\ but should not return anything\.$#' + identifier: return.void + count: 1 + path: includes/engine/class-tmdo-conflict-detector.php + + - + message: '#^Method TMDO_Conflict_Detector\:\:get_conflicts\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-conflict-detector.php + + - + message: '#^Method TMDO_Entity_Health\:\:get_all\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-health.php + + - + message: '#^Method TMDO_Entity_Health\:\:get_auto_promote_status\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-health.php + + - + message: '#^Method TMDO_Entity_Health\:\:get_groups_health\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-health.php + + - + message: '#^Method TMDO_Entity_Health\:\:get_migration_status\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-health.php + + - + message: '#^Method TMDO_Entity_Health\:\:get_native_counts\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-health.php + + - + message: '#^Method TMDO_Entity_Health\:\:get_one\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-health.php + + - + message: '#^Method TMDO_Entity_Health\:\:get_recommendation\(\) has parameter \$groups with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-health.php + + - + message: '#^Method TMDO_Entity_Migration_Engine\:\:error_result\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-migration-engine.php + + - + message: '#^Method TMDO_Entity_Migration_Engine\:\:get_all_statuses\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-migration-engine.php + + - + message: '#^Method TMDO_Entity_Migration_Engine\:\:migrate_group\(\) has parameter \$options with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-migration-engine.php + + - + message: '#^Method TMDO_Entity_Migration_Engine\:\:migrate_group\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-migration-engine.php + + - + message: '#^Method TMDO_Entity_Migration_Engine\:\:migrate_single_entity\(\) has parameter \$field_map with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-migration-engine.php + + - + message: '#^Method TMDO_Entity_Migration_Engine\:\:migrate_single_entity\(\) has parameter \$managed_keys with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-migration-engine.php + + - + message: '#^Method TMDO_Entity_Migration_Engine\:\:rollback_group\(\) has parameter \$options with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-migration-engine.php + + - + message: '#^Method TMDO_Entity_Migration_Engine\:\:rollback_group\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-migration-engine.php + + - + message: '#^Method TMDO_Entity_Migration_Engine\:\:verify\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-migration-engine.php + + - + message: '#^Method TMDO_Entity_Registry\:\:get_all_adapters\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-registry.php + + - + message: '#^Method TMDO_Entity_Registry\:\:get_all_fields\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-registry.php + + - + message: '#^Method TMDO_Entity_Registry\:\:get_field\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-registry.php + + - + message: '#^Method TMDO_Entity_Registry\:\:get_group_fields\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-registry.php + + - + message: '#^Method TMDO_Entity_Registry\:\:get_pending_schemas\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-registry.php + + - + message: '#^Method TMDO_Entity_Registry\:\:register_group\(\) has parameter \$fields with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-registry.php + + - + message: '#^Property TMDO_Entity_Registry\:\:\$field_index type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-registry.php + + - + message: '#^Property TMDO_Entity_Registry\:\:\$groups type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-registry.php + + - + message: '#^Property TMDO_Entity_Registry\:\:\$pending_schemas type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-entity-registry.php + + - + message: '#^Anonymous function has an unused use \$adapter\.$#' + identifier: closure.unusedUse + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Call to function is_array\(\) with array will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:decide_route\(\) has parameter \$meta_value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:get_or_load_row\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_add\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_add\(\) has parameter \$check with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_add\(\) has parameter \$meta_key with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_add\(\) has parameter \$meta_value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_add\(\) has parameter \$object_id with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_add\(\) has parameter \$unique with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_delete\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_delete\(\) has parameter \$check with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_delete\(\) has parameter \$delete_all with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_delete\(\) has parameter \$meta_key with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_delete\(\) has parameter \$meta_value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_delete\(\) has parameter \$object_id with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_get\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:intercept_update\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:maybe_read_before_value\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:maybe_read_before_value\(\) has parameter \$field_def with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:perform_upsert\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:perform_upsert\(\) has parameter \$field_def with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:perform_upsert\(\) has parameter \$meta_value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:read_flat_value\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Hook_Bus\:\:read_flat_value\(\) has parameter \$field_def with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Property TMDO_Hook_Bus\:\:\$internal_ops type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-hook-bus.php + + - + message: '#^Method TMDO_Mode_Manager\:\:defaults\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-mode-manager.php + + - + message: '#^Method TMDO_Mode_Manager\:\:is_valid_mode\(\) has parameter \$mode with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-mode-manager.php + + - + message: '#^Property TMDO_Mode_Manager\:\:\$cache type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-mode-manager.php + + - + message: '#^Constant TMDO_Query_Compiler\:\:VALID_OPERATORS type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-query-compiler.php + + - + message: '#^Method TMDO_Query_Compiler\:\:build_comparison\(\) has parameter \$field_def with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-query-compiler.php + + - + message: '#^Method TMDO_Query_Compiler\:\:build_comparison\(\) has parameter \$value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-query-compiler.php + + - + message: '#^Method TMDO_Query_Compiler\:\:compile\(\) has parameter \$meta_query with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-query-compiler.php + + - + message: '#^Method TMDO_Query_Compiler\:\:escape_value\(\) has parameter \$field_def with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-query-compiler.php + + - + message: '#^Method TMDO_Query_Compiler\:\:escape_value\(\) has parameter \$value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-query-compiler.php + + - + message: '#^Method TMDO_Query_Compiler\:\:inject_into_terms_clauses\(\) has parameter \$clauses with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-query-compiler.php + + - + message: '#^Method TMDO_Query_Compiler\:\:inject_into_terms_clauses\(\) has parameter \$wpdo_meta_query with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-query-compiler.php + + - + message: '#^Method TMDO_Query_Compiler\:\:inject_into_terms_clauses\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-query-compiler.php + + - + message: '#^Method TMDO_Query_Compiler\:\:inject_into_user_query\(\) has parameter \$wpdo_meta_query with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-query-compiler.php + + - + message: '#^Method TMDO_Query_Compiler\:\:inject_into_wp_query\(\) has parameter \$wpdo_meta_query with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-query-compiler.php + + - + message: '#^Constant DB_NAME not found\.$#' + identifier: constant.notFound + count: 1 + path: includes/engine/class-tmdo-schema-manager.php + + - + message: '#^Method TMDO_Schema_Manager\:\:build_default_clause\(\) has parameter \$field with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-schema-manager.php + + - + message: '#^Method TMDO_Schema_Manager\:\:calculate_schema_hash\(\) has parameter \$fields with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-schema-manager.php + + - + message: '#^Method TMDO_Schema_Manager\:\:create_or_upgrade_table\(\) has parameter \$field_definitions with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-schema-manager.php + + - + message: '#^Method TMDO_Schema_Manager\:\:get_table_stats\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-schema-manager.php + + - + message: '#^Method TMDO_Schema_Manager\:\:list_all_uae_tables\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-schema-manager.php + + - + message: '#^Method TMDO_Schema_Manager\:\:store_schema_metadata\(\) has parameter \$field_definitions with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-schema-manager.php + + - + message: '#^Property TMDO_Schema_Manager\:\:\$table_exists_cache type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-schema-manager.php + + - + message: '#^Property TMDO_Schema_Manager\:\:\$type_map type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-schema-manager.php + + - + message: '#^Strict comparison using \=\=\= between mixed and null will always evaluate to false\.$#' + identifier: identical.alwaysFalse + count: 1 + path: includes/engine/class-tmdo-schema-manager.php + + - + message: '#^Method TMDO_Shadow_Diff_Logger\:\:cast_eav\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: includes/engine/class-tmdo-shadow-diff-logger.php + + - + message: '#^Method TMDO_Shadow_Diff_Logger\:\:compare_and_log\(\) has parameter \$field_def with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-shadow-diff-logger.php + + - + message: '#^Method TMDO_Shadow_Diff_Logger\:\:count_by_entity\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-shadow-diff-logger.php + + - + message: '#^Method TMDO_Shadow_Diff_Logger\:\:recent\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-shadow-diff-logger.php + + - + message: '#^Method TMDO_Shadow_Diff_Logger\:\:stats_by_key\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-shadow-diff-logger.php + + - + message: '#^Method TMDO_Shadow_Diff_Logger\:\:stringify_for_log\(\) has parameter \$value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-shadow-diff-logger.php + + - + message: '#^Method TMDO_Shadow_Diff_Logger\:\:values_equal\(\) has parameter \$a with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-shadow-diff-logger.php + + - + message: '#^Method TMDO_Shadow_Diff_Logger\:\:values_equal\(\) has parameter \$b with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-shadow-diff-logger.php + + - + message: '#^Method TMDO_Type_Caster\:\:format_date\(\) has parameter \$value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-type-caster.php + + - + message: '#^Method TMDO_Type_Caster\:\:from_db\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: includes/engine/class-tmdo-type-caster.php + + - + message: '#^Method TMDO_Type_Caster\:\:from_db\(\) has parameter \$field_def with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-type-caster.php + + - + message: '#^Method TMDO_Type_Caster\:\:from_db\(\) has parameter \$value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-type-caster.php + + - + message: '#^Method TMDO_Type_Caster\:\:to_bool\(\) has parameter \$value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-type-caster.php + + - + message: '#^Method TMDO_Type_Caster\:\:to_db\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: includes/engine/class-tmdo-type-caster.php + + - + message: '#^Method TMDO_Type_Caster\:\:to_db\(\) has parameter \$field_def with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/engine/class-tmdo-type-caster.php + + - + message: '#^Method TMDO_Type_Caster\:\:to_db\(\) has parameter \$value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/engine/class-tmdo-type-caster.php + + - + message: '#^Method TMDO_CSV_Writer\:\:build\(\) has parameter \$headers with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/export/class-tmdo-csv-writer.php + + - + message: '#^Method TMDO_CSV_Writer\:\:build\(\) has parameter \$rows with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/export/class-tmdo-csv-writer.php + + - + message: '#^Method TMDO_CSV_Writer\:\:row_to_csv\(\) has parameter \$fields with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/export/class-tmdo-csv-writer.php + + - + message: '#^Method TMDO_Points_Manager\:\:credit\(\) should return array\{ok\: bool, balance\: int, ledger_id\: int, error\?\: string\} but returns array\{ok\: false, error\: ''credit delta must…''\}\.$#' + identifier: return.type + count: 1 + path: includes/integrations/class-tmdo-points-manager.php + + - + message: '#^Method TMDO_Points_Manager\:\:debit\(\) should return array\{ok\: bool, balance\: int, ledger_id\: int, error\?\: string\} but returns array\{ok\: false, error\: ''debit delta must be…''\}\.$#' + identifier: return.type + count: 1 + path: includes/integrations/class-tmdo-points-manager.php + + - + message: '#^Method TMDO_Points_Manager\:\:transact\(\) should return array\{ok\: bool, balance\: int, ledger_id\: int, error\?\: string\} but returns array\{ok\: false, error\: ''db_error''\}\.$#' + identifier: return.type + count: 2 + path: includes/integrations/class-tmdo-points-manager.php + + - + message: '#^Method TMDO_Points_Manager\:\:transact\(\) should return array\{ok\: bool, balance\: int, ledger_id\: int, error\?\: string\} but returns array\{ok\: false, error\: ''exception''\}\.$#' + identifier: return.type + count: 1 + path: includes/integrations/class-tmdo-points-manager.php + + - + message: '#^Method TMDO_Points_Manager\:\:transact\(\) should return array\{ok\: bool, balance\: int, ledger_id\: int, error\?\: string\} but returns array\{ok\: false, error\: ''insufficient_balance''\}\.$#' + identifier: return.type + count: 1 + path: includes/integrations/class-tmdo-points-manager.php + + - + message: '#^Method TMDO_Interceptor_Base\:\:handle_error\(\) has parameter \$context with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/interceptors/class-tmdo-interceptor-base.php + + - + message: '#^Property TMDO_Interceptor_Base\:\:\$error_counts type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/interceptors/class-tmdo-interceptor-base.php + + - + message: '#^Access to undefined constant static\(TMDO_Standard_Post_Interceptor\)\:\:FIELD_MAP\.$#' + identifier: classConstant.notFound + count: 1 + path: includes/interceptors/class-tmdo-standard-post-interceptor.php + + - + message: '#^Method TMDO_Standard_Post_Interceptor\:\:build_insert_data\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 2 + path: includes/interceptors/class-tmdo-standard-post-interceptor.php + + - + message: '#^Method TMDO_Sync_Bridge\:\:get_field_cached\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/interceptors/class-tmdo-sync-bridge.php + + - + message: '#^Property TMDO_Sync_Bridge\:\:\$field_cache type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/interceptors/class-tmdo-sync-bridge.php + + - + message: '#^Method TMDO_Hot_Migration\:\:build_key_to_column_map\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-hot-migration.php + + - + message: '#^Method TMDO_Hot_Migration\:\:get_meta_keys\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-hot-migration.php + + - + message: '#^Method TMDO_Migration_Base\:\:get_record\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-base.php + + - + message: '#^Method TMDO_Migration_Engine\:\:status\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-engine.php + + - + message: '#^Method TMDO_Migration_Orchestrator\:\:count_eav_residue\(\) has parameter \$keys with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-orchestrator.php + + - + message: '#^Method TMDO_Migration_Orchestrator\:\:get_managed_keys\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-orchestrator.php + + - + message: '#^Method TMDO_Migration_Orchestrator\:\:get_status\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-orchestrator.php + + - + message: '#^Method TMDO_Migration_Orchestrator\:\:handle_failure\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-orchestrator.php + + - + message: '#^Method TMDO_Migration_Orchestrator\:\:log\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-orchestrator.php + + - + message: '#^Method TMDO_Migration_Orchestrator\:\:persist_job\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-orchestrator.php + + - + message: '#^Method TMDO_Migration_Orchestrator\:\:preflight\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 2 + path: includes/migration/class-tmdo-migration-orchestrator.php + + - + message: '#^Method TMDO_Migration_Orchestrator\:\:project_status\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-orchestrator.php + + - + message: '#^Method TMDO_Migration_Orchestrator\:\:project_status\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-orchestrator.php + + - + message: '#^Method TMDO_Migration_Orchestrator\:\:resume\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-orchestrator.php + + - + message: '#^Method TMDO_Migration_Orchestrator\:\:run_sync_loop\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-orchestrator.php + + - + message: '#^Method TMDO_Migration_Phase_Base\:\:count_eav_residue\(\) has parameter \$keys with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-phase-base.php + + - + message: '#^Method TMDO_Migration_Phase_Base\:\:get_managed_keys\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-phase-base.php + + - + message: '#^Method TMDO_Migration_Phase_Base\:\:log\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-migration-phase-base.php + + - + message: '#^Method TMDO_Migration_Phase_Base\:\:values_loose_equal\(\) has parameter \$a with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/migration/class-tmdo-migration-phase-base.php + + - + message: '#^Method TMDO_Migration_Phase_Base\:\:values_loose_equal\(\) has parameter \$b with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: includes/migration/class-tmdo-migration-phase-base.php + + - + message: '#^Method TMDO_Post_Migration\:\:backfill_group_json\(\) has parameter \$options with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-post-migration.php + + - + message: '#^Method TMDO_Post_Migration\:\:backfill_group_json\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-post-migration.php + + - + message: '#^Method TMDO_Warm_Migration\:\:get_meta_keys\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/class-tmdo-warm-migration.php + + - + message: '#^Method TMDO_Migration_Phase_Interface\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/interface-migration-phase.php + + - + message: '#^Method TMDO_Phase_Backfill_Bulk\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/phases/class-tmdo-phase-backfill-bulk.php + + - + message: '#^Method TMDO_Phase_Backfill_Unserialize\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/phases/class-tmdo-phase-backfill-unserialize.php + + - + message: '#^Method TMDO_Phase_Backup\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/phases/class-tmdo-phase-backup.php + + - + message: '#^Method TMDO_Phase_Cleanup\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/phases/class-tmdo-phase-cleanup.php + + - + message: '#^Method TMDO_Phase_Completed\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/phases/class-tmdo-phase-completed.php + + - + message: '#^Method TMDO_Phase_Demote\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/phases/class-tmdo-phase-demote.php + + - + message: '#^Method TMDO_Phase_Diagnose\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/phases/class-tmdo-phase-diagnose.php + + - + message: '#^Method TMDO_Phase_Install_Schema\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/phases/class-tmdo-phase-install-schema.php + + - + message: '#^Method TMDO_Phase_Promote_Aeav\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/phases/class-tmdo-phase-promote-aeav.php + + - + message: '#^Method TMDO_Phase_Promote_Shadow\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/phases/class-tmdo-phase-promote-shadow.php + + - + message: '#^Method TMDO_Phase_Verify_Sample\:\:execute\(\) has parameter \$job with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/migration/phases/class-tmdo-phase-verify-sample.php + + - + message: '#^Action callback returns bool but should not return anything\.$#' + identifier: return.void + count: 1 + path: includes/notifications/abstract-class-tmdo-notifier.php + + - + message: '#^Method TMDO_Abstract_Notifier\:\:actually_send\(\) has parameter \$context with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/abstract-class-tmdo-notifier.php + + - + message: '#^Method TMDO_Abstract_Notifier\:\:build_body\(\) has parameter \$summary with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/abstract-class-tmdo-notifier.php + + - + message: '#^Method TMDO_Abstract_Notifier\:\:build_context\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/abstract-class-tmdo-notifier.php + + - + message: '#^Method TMDO_Abstract_Notifier\:\:build_subject\(\) has parameter \$summary with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/abstract-class-tmdo-notifier.php + + - + message: '#^Method TMDO_Abstract_Notifier\:\:fingerprint\(\) has parameter \$summary with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/abstract-class-tmdo-notifier.php + + - + message: '#^Method TMDO_Abstract_Notifier\:\:maybe_send\(\) has parameter \$summary with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/abstract-class-tmdo-notifier.php + + - + message: '#^Method TMDO_Discord_Notifier\:\:actually_send\(\) has parameter \$context with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/class-tmdo-discord-notifier.php + + - + message: '#^Method TMDO_Discord_Notifier\:\:build_context\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/class-tmdo-discord-notifier.php + + - + message: '#^Action callback returns bool but should not return anything\.$#' + identifier: return.void + count: 1 + path: includes/notifications/class-tmdo-email-notifier.php + + - + message: '#^Method TMDO_Email_Notifier\:\:build_body\(\) has parameter \$summary with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/class-tmdo-email-notifier.php + + - + message: '#^Method TMDO_Email_Notifier\:\:build_subject\(\) has parameter \$summary with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/class-tmdo-email-notifier.php + + - + message: '#^Method TMDO_Email_Notifier\:\:fingerprint\(\) has parameter \$summary with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/class-tmdo-email-notifier.php + + - + message: '#^Method TMDO_Email_Notifier\:\:maybe_send\(\) has parameter \$summary with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/class-tmdo-email-notifier.php + + - + message: '#^Method TMDO_Slack_Notifier\:\:actually_send\(\) has parameter \$context with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/class-tmdo-slack-notifier.php + + - + message: '#^Method TMDO_Slack_Notifier\:\:build_context\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/class-tmdo-slack-notifier.php + + - + message: '#^Method TMDO_Telegram_Notifier\:\:actually_send\(\) has parameter \$context with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/class-tmdo-telegram-notifier.php + + - + message: '#^Method TMDO_Telegram_Notifier\:\:build_context\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/notifications/class-tmdo-telegram-notifier.php + + - + message: '#^Method TMDO_Query_Interceptor_Base\:\:get_clauses\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/query/class-tmdo-query-interceptor-base.php + + - + message: '#^Method TMDO_Query_Router\:\:extract_hot_clauses\(\) has parameter \$raw_meta_query with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/query/class-tmdo-query-router.php + + - + message: '#^Method TMDO_Query_Router\:\:extract_hot_clauses\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/query/class-tmdo-query-router.php + + - + message: '#^Method TMDO_Snapshot_Manager\:\:create\(\) has parameter \$opts with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-manager.php + + - + message: '#^Method TMDO_Snapshot_Manager\:\:create\(\) has parameter \$scope with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-manager.php + + - + message: '#^Method TMDO_Snapshot_Manager\:\:create\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-manager.php + + - + message: '#^Method TMDO_Snapshot_Manager\:\:prune\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-manager.php + + - + message: '#^Method TMDO_Snapshot_Manager\:\:resolve_scope\(\) has parameter \$scope with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-manager.php + + - + message: '#^Method TMDO_Snapshot_Manager\:\:resolve_scope\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-manager.php + + - + message: '#^Method TMDO_Snapshot_Manager\:\:restore\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-manager.php + + - + message: '#^Method TMDO_Snapshot_Manager\:\:verify\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-manager.php + + - + message: '#^Method TMDO_Snapshot_Pruner\:\:evict_rows\(\) has parameter \$rows with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-pruner.php + + - + message: '#^Method TMDO_Snapshot_Pruner\:\:evict_rows\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-pruner.php + + - + message: '#^Method TMDO_Snapshot_Pruner\:\:evict_to_recover\(\) has parameter \$candidates with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-pruner.php + + - + message: '#^Method TMDO_Snapshot_Pruner\:\:evict_to_recover\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-pruner.php + + - + message: '#^Method TMDO_Snapshot_Pruner\:\:prune\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-pruner.php + + - + message: '#^Method TMDO_Snapshot_Reader\:\:__construct\(\) has parameter \$row with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-reader.php + + - + message: '#^Method TMDO_Snapshot_Reader\:\:apply\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-reader.php + + - + message: '#^Method TMDO_Snapshot_Reader\:\:parse_summary\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-reader.php + + - + message: '#^Method TMDO_Snapshot_Reader\:\:preview\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-reader.php + + - + message: '#^Method TMDO_Snapshot_Reader\:\:verify\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-reader.php + + - + message: '#^Method TMDO_Snapshot_Writer\:\:__construct\(\) has parameter \$opts with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-writer.php + + - + message: '#^Method TMDO_Snapshot_Writer\:\:__construct\(\) has parameter \$scope with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-writer.php + + - + message: '#^Method TMDO_Snapshot_Writer\:\:dump_header\(\) has parameter \$tables with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-writer.php + + - + message: '#^Method TMDO_Snapshot_Writer\:\:get_scope\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-writer.php + + - + message: '#^Method TMDO_Snapshot_Writer\:\:write\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/snapshots/class-tmdo-snapshot-writer.php + + - + message: '#^Property TMDO_Snapshot_Writer\:\:\$scope type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 3 + path: includes/snapshots/class-tmdo-snapshot-writer.php + + - + message: '#^Trait TMDO_Anti_EAV_Aware is used zero times and is not analysed\.$#' + identifier: trait.unused + count: 1 + path: includes/trait-tmdo-anti-eav-aware.php + + - + message: '#^Method TMDO_Zone_Archive\:\:archive_batch\(\) has parameter \$entries with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-archive.php + + - + message: '#^Method TMDO_Zone_Archive\:\:get\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-archive.php + + - + message: '#^Method TMDO_Zone_Archive\:\:stats\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-archive.php + + - + message: '#^Method TMDO_Zone_Cold\:\:get_blob\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-cold.php + + - + message: '#^Method TMDO_Zone_Cold\:\:get_blob_raw\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-cold.php + + - + message: '#^Method TMDO_Zone_Cold\:\:save_blob\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-cold.php + + - + message: '#^Method TMDO_Zone_Cold\:\:save_patch\(\) has parameter \$patch with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-cold.php + + - + message: '#^Method TMDO_Zone_Cold\:\:set_many\(\) has parameter \$values with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-cold.php + + - + message: '#^Method TMDO_Zone_Hot\:\:compute_fingerprint\(\) has parameter \$columns with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-hot.php + + - + message: '#^Method TMDO_Zone_Hot\:\:get_row\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-hot.php + + - + message: '#^Method TMDO_Zone_Hot\:\:set_many\(\) has parameter \$data with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-hot.php + + - + message: '#^Method TMDO_Zone_Router\:\:delete_field\(\) has parameter \$field with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-router.php + + - + message: '#^Method TMDO_Zone_Router\:\:read\(\) has parameter \$field with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-router.php + + - + message: '#^Method TMDO_Zone_Router\:\:write\(\) has parameter \$field with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: includes/zones/class-tmdo-zone-router.php + + - + message: '#^Method TMDO_Options_Manager\:\:analyze_autoload\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: modules/options/class-tmdo-options-manager.php + + - + message: '#^Method TMDO_Options_Manager\:\:get_redirected_options\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: modules/options/class-tmdo-options-manager.php + + - + message: '#^Method TMDO_Options_Manager\:\:optimize_autoload\(\) has parameter \$options_to_defer with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: modules/options/class-tmdo-options-manager.php + + - + message: '#^Method TMDO_Options_Manager\:\:optimize_autoload\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: modules/options/class-tmdo-options-manager.php + + - + message: '#^Method TMDO_Options_Manager\:\:read_setting\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: modules/options/class-tmdo-options-manager.php + + - + message: '#^Method TMDO_Options_Manager\:\:read_setting\(\) has parameter \$default with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: modules/options/class-tmdo-options-manager.php + + - + message: '#^Method TMDO_Options_Manager\:\:register_settings_group\(\) has parameter \$option_keys with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: modules/options/class-tmdo-options-manager.php + + - + message: '#^Method TMDO_Options_Manager\:\:write_setting\(\) has parameter \$value with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: modules/options/class-tmdo-options-manager.php + + - + message: '#^Property TMDO_Options_Manager\:\:\$redirected_options type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: modules/options/class-tmdo-options-manager.php + + - + message: '#^Call to function method_exists\(\) with ''TMDO_Installer'' and ''drop_all_tables_for…'' will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: uninstall.php diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..7310483 --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,29 @@ +includes: + - vendor/szepeviktor/phpstan-wordpress/extension.neon + # Baseline: existing type-completeness debt (mostly missing iterable value + # types + WP template-scope variables). New code is checked clean at L6. + # Burn down incrementally; regenerate with `composer stan:baseline`. + - phpstan-baseline.neon +parameters: + level: 6 + paths: + - includes + - admin + - cli + - modules + - 2meet-data-optimizer.php + - uninstall.php + bootstrapFiles: + # Plugin constants (define()'d at runtime; PHPStan can't see them). + - .phpstan/stubs.php + scanFiles: + # WP-CLI classes/functions (runtime-injected by wp-cli; use official stubs). + - vendor/php-stubs/wp-cli-stubs/wp-cli-stubs.php + excludePaths: + - vendor + - tests + - .phpstan + # interface wrappers: PHPStan sees WPDO_X extends TMDO_X as circular + - includes/back-compat + reportUnmatchedIgnoredErrors: false + treatPhpDocTypesAsCertain: false