Skip to content

Commit 6e0e3fa

Browse files
committed
Even more checks.
1 parent d5bba8e commit 6e0e3fa

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

ISSUES.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ Hooks with `@param` tags that have an empty variable name.
2424

2525
_No hooks with empty variables._
2626

27+
## Invalid Variable Names
28+
29+
Hooks with `@param` tags where the variable is not a valid PHP variable name.
30+
31+
_No hooks with invalid variable names._
32+
2733
## Empty Param Descriptions
2834

2935
Hooks with `@param` tags that have an empty description.
@@ -48,3 +54,15 @@ Hooks where the number of `@param` tags does not match the `args` count.
4854

4955
- `wp_default_autoload_value` — args: 4, params: 3 (wp-includes/option.php)
5056
- `wp_next_scheduled` — args: 4, params: 3 (wp-includes/cron.php)
57+
58+
## Empty Param Types
59+
60+
Hooks with `@param` tags that have empty or missing type arrays.
61+
62+
_No hooks with empty param types._
63+
64+
## Malformed Param Types
65+
66+
Hooks with `@param` tags where types contain unexpected characters.
67+
68+
_No hooks with malformed param types._

scripts/generate-issues.sh

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,26 @@ fi
9595

9696
echo "" >> "$OUTPUT_FILE"
9797

98+
# Invalid Variable Names
99+
echo "## Invalid Variable Names" >> "$OUTPUT_FILE"
100+
echo "" >> "$OUTPUT_FILE"
101+
echo "Hooks with \`@param\` tags where the variable is not a valid PHP variable name." >> "$OUTPUT_FILE"
102+
echo "" >> "$OUTPUT_FILE"
103+
104+
# Valid variable names match $[a-zA-Z_][a-zA-Z0-9_]*
105+
INVALID_VAR_NAMES_ACTIONS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param" and .variable != "" and .variable != null and (.variable | test("^\\$[a-zA-Z_][a-zA-Z0-9_]*$") | not)) | "- `\($name)` — \(.variable) (\($file))"' hooks/actions.json 2>/dev/null | sort -u)
106+
INVALID_VAR_NAMES_FILTERS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param" and .variable != "" and .variable != null and (.variable | test("^\\$[a-zA-Z_][a-zA-Z0-9_]*$") | not)) | "- `\($name)` — \(.variable) (\($file))"' hooks/filters.json 2>/dev/null | sort -u)
107+
108+
INVALID_VAR_NAMES=$(echo -e "${INVALID_VAR_NAMES_ACTIONS}\n${INVALID_VAR_NAMES_FILTERS}" | grep -v '^$' | sort -u)
109+
110+
if [ -n "$INVALID_VAR_NAMES" ]; then
111+
echo "$INVALID_VAR_NAMES" >> "$OUTPUT_FILE"
112+
else
113+
echo "_No hooks with invalid variable names._" >> "$OUTPUT_FILE"
114+
fi
115+
116+
echo "" >> "$OUTPUT_FILE"
117+
98118
# Empty Param Descriptions
99119
echo "## Empty Param Descriptions" >> "$OUTPUT_FILE"
100120
echo "" >> "$OUTPUT_FILE"
@@ -152,4 +172,43 @@ else
152172
echo "_No hooks with param count mismatches._" >> "$OUTPUT_FILE"
153173
fi
154174

175+
echo "" >> "$OUTPUT_FILE"
176+
177+
# Empty Param Types
178+
echo "## Empty Param Types" >> "$OUTPUT_FILE"
179+
echo "" >> "$OUTPUT_FILE"
180+
echo "Hooks with \`@param\` tags that have empty or missing type arrays." >> "$OUTPUT_FILE"
181+
echo "" >> "$OUTPUT_FILE"
182+
183+
EMPTY_PARAM_TYPES_ACTIONS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param" and (.types == null or .types == [] or (.types | length == 0))) | "- `\($name)` — \(.variable) (\($file))"' hooks/actions.json 2>/dev/null | sort -u)
184+
EMPTY_PARAM_TYPES_FILTERS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param" and (.types == null or .types == [] or (.types | length == 0))) | "- `\($name)` — \(.variable) (\($file))"' hooks/filters.json 2>/dev/null | sort -u)
185+
186+
EMPTY_PARAM_TYPES=$(echo -e "${EMPTY_PARAM_TYPES_ACTIONS}\n${EMPTY_PARAM_TYPES_FILTERS}" | grep -v '^$' | sort -u)
187+
188+
if [ -n "$EMPTY_PARAM_TYPES" ]; then
189+
echo "$EMPTY_PARAM_TYPES" >> "$OUTPUT_FILE"
190+
else
191+
echo "_No hooks with empty param types._" >> "$OUTPUT_FILE"
192+
fi
193+
194+
echo "" >> "$OUTPUT_FILE"
195+
196+
# Malformed Param Types
197+
echo "## Malformed Param Types" >> "$OUTPUT_FILE"
198+
echo "" >> "$OUTPUT_FILE"
199+
echo "Hooks with \`@param\` tags where types contain unexpected characters." >> "$OUTPUT_FILE"
200+
echo "" >> "$OUTPUT_FILE"
201+
202+
# Types should not contain spaces (except for specific patterns like "array<string, mixed>")
203+
MALFORMED_TYPES_ACTIONS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param") | .variable as $var | .types[]? | select(test("^ | $| ")) | "- `\($name)` — \($var): \(.) (\($file))"' hooks/actions.json 2>/dev/null | sort -u)
204+
MALFORMED_TYPES_FILTERS=$(jq -r '.hooks[] | .name as $name | .file as $file | .doc.tags[] | select(.name == "param") | .variable as $var | .types[]? | select(test("^ | $| ")) | "- `\($name)` — \($var): \(.) (\($file))"' hooks/filters.json 2>/dev/null | sort -u)
205+
206+
MALFORMED_TYPES=$(echo -e "${MALFORMED_TYPES_ACTIONS}\n${MALFORMED_TYPES_FILTERS}" | grep -v '^$' | sort -u)
207+
208+
if [ -n "$MALFORMED_TYPES" ]; then
209+
echo "$MALFORMED_TYPES" >> "$OUTPUT_FILE"
210+
else
211+
echo "_No hooks with malformed param types._" >> "$OUTPUT_FILE"
212+
fi
213+
155214
echo "Generated $OUTPUT_FILE"

0 commit comments

Comments
 (0)