Skip to content

Commit be71156

Browse files
pattonwebzclaude
andcommitted
fix: exclude test/build directories properly in hooks docs generator
The exclusion filter in generate-hooks-docs.php compared relative file paths (which have no leading slash) against patterns like `/tests/`, so top-level test/build/vendor directories were never actually excluded from candidate hook locations. The fallback that re-admitted the unfiltered list also meant a hook with no production usage would still be documented from its test call site. Match excluded directories as path segments instead, and omit a hook entirely when it has no non-test/build candidates rather than falling back to the unfiltered list. Regenerated docs/hooks.md. Fixes PRO-1244, reported by @benitoalba on PR #1842. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent d733aa9 commit be71156

2 files changed

Lines changed: 30 additions & 26 deletions

File tree

docs/hooks.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,36 +17,36 @@ This document is auto-generated by `tools/generate-hooks-docs.php`. It lists onl
1717
| `edac_check_license_hook` | action | [includes/classes/MyDot/Connector.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/MyDot/Connector.php#L154) | 154 | Sets up the license page and handlers. | 1.xx.x |
1818
| `edac_debug_information` | filter | [admin/site-health/class-information.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/site-health/class-information.php#L79) | 79 | Filter the debug information. | 1.6.10 |
1919
| `edac_dismiss_reasons` | filter | [admin/class-ignore-ui.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-ignore-ui.php#L64) | 64 | Filters the dismiss reasons available in the ignore/dismiss panel. | 1.xx.x |
20+
| `edac_filter_admin_post_id` | filter | [admin/class-enqueue-admin.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-enqueue-admin.php#L84) | 84 | Enqueue the admin and editorApp scripts. | |
2021
| `edac_filter_admin_scripts_slugs` | filter | [admin/class-enqueue-admin.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-enqueue-admin.php#L58) | 58 | Enqueue the admin and editorApp scripts. | |
2122
| `edac_filter_command_classes` | filter | [includes/classes/WPCLI/BootstrapCLI.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/WPCLI/BootstrapCLI.php#L83) | 83 | Filter the list of classes that hold the commands to be registered. | 1.15.0 |
22-
| `edac_filter_dashboard_widget_capability` | filter | [admin/class-helpers.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-helpers.php#L229) | 229 | Filter the capability required to view the dashboard widget. | 1.9.3 |
23+
| `edac_filter_dashboard_widget_capability` | filter | [admin/class-helpers.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-helpers.php#L181) | 181 | Filter the capability required to view the dashboard widget. | 1.9.3 |
2324
| `edac_filter_fixes` | filter | [includes/classes/Fixes/FixesManager.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/Fixes/FixesManager.php#L129) | 129 | Load the fixes. | |
2425
| `edac_filter_fixes_settings_fields` | filter | [admin/AdminPage/FixesPage.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/AdminPage/FixesPage.php#L184) | 184 | Filter the fields that are registered for the fixes settings page. | 1.16.0 |
25-
| `edac_filter_fixes_settings_sections` | filter | [tests/phpunit/includes/classes/Fixes/Fix/AddLabelToUnlabelledFormFieldsFixTest.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/tests/phpunit/includes/classes/Fixes/Fix/AddLabelToUnlabelledFormFieldsFixTest.php#L86) | 86 | Test register method adds settings sections | |
26-
| `edac_filter_frontend_fixes_data` | filter | [tests/phpunit/includes/classes/Fixes/Fix/PreventLinksOpeningNewWindowFixTest.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/tests/phpunit/includes/classes/Fixes/Fix/PreventLinksOpeningNewWindowFixTest.php#L77) | 77 | Test link modification functionality. | |
27-
| `edac_filter_frontend_highlight_post_id` | filter | [includes/classes/class-enqueue-frontend.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/class-enqueue-frontend.php#L105) | 105 | Enqueue the frontend highlighter. | |
26+
| `edac_filter_fixes_settings_sections` | filter | [admin/AdminPage/FixesPage.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/AdminPage/FixesPage.php#L138) | 138 | Filter the sections that are registered for the fixes settings page. | 1.16.0 |
27+
| `edac_filter_frontend_fixes_data` | filter | [includes/classes/Fixes/FixesManager.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/Fixes/FixesManager.php#L118) | 118 | Maybe enqueue the frontend scripts. | |
28+
| `edac_filter_frontend_highlight_post_id` | filter | [includes/classes/class-enqueue-frontend.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/class-enqueue-frontend.php#L112) | 112 | Enqueue the frontend highlighter. | |
2829
| `edac_filter_frontend_highlighter_visibility` | filter | [admin/class-frontend-highlight.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-frontend-highlight.php#L50) | 50 | Filter the visibility of the frontend highlighter. | 1.14.0 |
2930
| `edac_filter_generate_link_type_ref` | filter | [includes/helper-functions.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/helper-functions.php#L656) | 656 | Generate links to pro page with some params. | |
3031
| `edac_filter_insert_rule_data` | filter | [admin/class-insert-rule-data.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-insert-rule-data.php#L146) | 146 | Filter the rule data before inserting it into the database. | 1.4.0 |
3132
| `edac_filter_js_violation_html` | filter | [includes/classes/class-rest-api.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/class-rest-api.php#L520) | 520 | REST handler that saves to the DB a list of js rule violations for a post. | |
33+
| `edac_filter_post_is_latest_posts_home` | filter | [admin/class-enqueue-admin.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-enqueue-admin.php#L126) | 126 | Enqueue the admin and editorApp scripts. | |
3234
| `edac_filter_post_types` | filter | [includes/helper-functions.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/helper-functions.php#L193) | 193 | Filter the post types that the plugin will check. | 1.4.0 |
33-
| `edac_filter_readability_content` | filter | [admin/class-ajax.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-ajax.php#L661) | 661 | Filter the content used for reading grade readability analysis. | 1.4.0 |
35+
| `edac_filter_readability_content` | filter | [admin/class-ajax.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-ajax.php#L669) | 669 | Filter the content used for reading grade readability analysis. | 1.4.0 |
3436
| `edac_filter_register_rules` | filter | [accessibility-checker.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/accessibility-checker.php#L142) | 142 | Filter the default rules. | 1.4.0 |
3537
| `edac_filter_remove_admin_notices_screens` | filter | [admin/class-admin-notices.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-admin-notices.php#L88) | 88 | Filter the screens where admin notices should be removed. | 1.14.0 |
3638
| `edac_filter_settings_capability` | filter | [admin/class-upgrade-promotion.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-upgrade-promotion.php#L49) | 49 | Add the upgrade menu item. | 1.27.0 |
3739
| `edac_filter_settings_tab_items` | filter | [partials/settings-page.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/partials/settings-page.php#L19) | 19 | Filter the settings tab items. | 1.4.0 |
3840
| `edac_filter_simplified_summary_heading` | filter | [includes/classes/class-simplified-summary.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/class-simplified-summary.php#L75) | 75 | Filter the heading that gets output before the simplified summary inside an <h2> tag. | 1.4.0 |
3941
| `edac_fix_underline_target` | filter | [includes/classes/Fixes/Fix/LinkUnderline.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/Fixes/Fix/LinkUnderline.php#L118) | 118 | Filters the target element selector for forcing underlines. | 1.16.0 |
4042
| `edac_free_product_id` | filter | [includes/classes/MyDot/Connector.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/MyDot/Connector.php#L144) | 144 | Sets up the license page and handlers. | 1.xx.x |
41-
| `edac_get_origin_url_for_virtual_page` | filter | [admin/class-enqueue-admin.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-enqueue-admin.php#L120) | 120 | Enqueue the admin and editorApp scripts. | |
43+
| `edac_get_origin_url_for_virtual_page` | filter | [admin/class-enqueue-admin.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-enqueue-admin.php#L133) | 133 | Enqueue the admin and editorApp scripts. | |
4244
| `edac_ignore_permission` | filter | [admin/class-ajax.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-ajax.php#L326) | 326 | Filters if a user can ignore issues. | 1.4.0 |
4345
| `edac_is_sale_time` | filter | [admin/class-upgrade-promotion.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-upgrade-promotion.php#L207) | 207 | Filter whether it's currently sale time for upgrade promotions. | 1.27.0 |
4446
| `edac_jwt_audience` | filter | [includes/classes/MyDot/Connector.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/MyDot/Connector.php#L925) | 925 | Get the expected audience for JWT validation (RFC 8725). | 1.xx.x |
4547
| `edac_jwt_issuer` | filter | [includes/classes/MyDot/Connector.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/MyDot/Connector.php#L913) | 913 | Get the expected issuer for JWT validation (RFC 8725). | 1.xx.x |
46-
| `edac_landmark_types` | filter | [includes/helper-functions.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/helper-functions.php#L868) | 868 | Filter the landmark types used by the scanner and Issues Explorer filter. | 1.44.0 |
47-
| `edac_link_wrapper_mock` | filter | [tests/phpunit/Admin/PluginRowMetaTest.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/tests/phpunit/Admin/PluginRowMetaTest.php#L57) | 57 | Wrapper function that delegates to mock in test mode. | |
48-
| `edac_link_wrapper_test_mode` | filter | [tests/phpunit/Admin/PluginRowMetaTest.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/tests/phpunit/Admin/PluginRowMetaTest.php#L56) | 56 | Wrapper function that delegates to mock in test mode. | |
49-
| `edac_max_alt_length` | filter | [admin/class-enqueue-admin.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-enqueue-admin.php#L146) | 146 | Enqueue the admin and editorApp scripts. | |
48+
| `edac_landmark_types` | filter | [includes/helper-functions.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/helper-functions.php#L889) | 889 | Filter the landmark types used by the scanner and Issues Explorer filter. | 1.44.0 |
49+
| `edac_max_alt_length` | filter | [admin/class-enqueue-admin.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/admin/class-enqueue-admin.php#L159) | 159 | Enqueue the admin and editorApp scripts. | |
5050
| `edac_mydot_api_endpoint` | filter | [includes/classes/MyDot/Connector.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/MyDot/Connector.php#L528) | 528 | Filters the MyDot API endpoint URL. | 1.xx.x |
5151
| `edac_mydot_product_id` | filter | [includes/classes/MyDot/Connector.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/MyDot/Connector.php#L548) | 548 | Filters the MyDot product ID. | 1.xx.x |
5252
| `edac_pro_product_id` | filter | [includes/classes/MyDot/Connector.php](https://github.com/equalizedigital/accessibility-checker/blob/develop/includes/classes/MyDot/Connector.php#L1302) | 1302 | Infer license metadata from an EDD response. | 1.xx.x |

tools/generate-hooks-docs.php

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -233,30 +233,34 @@ function edac_find_nearest_docblock( $contents, $pos, $max_lines = 10 ) {
233233
$list,
234234
static function ( $entry ) {
235235
// Skip entries from test/build/vendor directories.
236-
$excluded_paths = [
237-
'/tests/',
238-
'/dist/',
239-
'/build/',
240-
'/docs/',
241-
'/.github/',
242-
'/node_modules/',
243-
'/vendor/',
236+
$excluded_dirs = [
237+
'tests',
238+
'dist',
239+
'build',
240+
'docs',
241+
'.github',
242+
'node_modules',
243+
'vendor',
244244
];
245-
246-
foreach ( $excluded_paths as $excluded_path ) {
247-
if ( false !== strpos( $entry['file'], $excluded_path ) ) {
245+
246+
$path_parts = explode( DIRECTORY_SEPARATOR, $entry['file'] );
247+
248+
foreach ( $excluded_dirs as $excluded_dir ) {
249+
if ( in_array( $excluded_dir, $path_parts, true ) ) {
248250
return false;
249251
}
250252
}
251253
return true;
252254
}
253255
);
254-
255-
// If we filtered out everything, fall back to the original list.
256-
if ( ! empty( $filtered_list ) ) {
257-
$list = array_values( $filtered_list );
256+
257+
// If every candidate was in an excluded directory, this hook has no
258+
// production definition/listener, so omit it from the docs entirely.
259+
if ( empty( $filtered_list ) ) {
260+
continue;
258261
}
259-
262+
$list = array_values( $filtered_list );
263+
260264
// If any definition candidates exist, narrow to them. Otherwise keep listeners.
261265
$defs = array_filter(
262266
$list,

0 commit comments

Comments
 (0)