Benchmarks
Plugin footprint 83% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | Checking the installer triggered no errors
Install script ran successfully
Server metrics [RAM: ▲0.38MB] [CPU: ▼2.76ms] Passed 4 tests
A check of server-side resources used by External Links - nofollow, noopener & new window
No issues were detected with server-side resource usage
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 3.79 ▲0.33 | 43.94 ▲7.43 |
Dashboard /wp-admin | 3.72 ▲0.38 | 54.69 ▼4.05 |
Posts /wp-admin/edit.php | 3.77 ▲0.42 | 48.40 ▼1.92 |
Add New Post /wp-admin/post-new.php | 6.32 ▲0.43 | 83.31 ▼12.50 |
Media Library /wp-admin/upload.php | 3.64 ▲0.42 | 41.84 ▲7.81 |
Server storage [IO: ▲3.63MB] [DB: ▲0.00MB] Passed 3 tests
Filesystem and database footprint
The plugin installed successfully
Filesystem: 206 new files
Database: no new tables, 13 new options
New WordPress options |
---|
widget_recent-comments |
theysaidso_admin_options |
widget_recent-posts |
wpel-excluded-link-settings |
widget_theysaidso_widget |
wpel-exceptions-settings |
can_compress_scripts |
wpel-first-install |
wpel-version |
wpel-external-link-settings |
... |
Browser metrics Passed 4 tests
This is an overview of browser requirements for External Links - nofollow, noopener & new window
Minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,855 ▲94 | 14.42 ▲0.24 | 1.81 ▲0.20 | 43.25 ▲3.20 |
Dashboard /wp-admin | 2,249 ▲78 | 5.72 ▲0.18 | 92.86 ▲3.65 | 66.20 ▲19.09 |
Posts /wp-admin/edit.php | 2,166 ▲66 | 2.29 ▲0.32 | 41.33 ▲4.30 | 35.71 ▼0.89 |
Add New Post /wp-admin/post-new.php | 1,552 ▲26 | 23.20 ▲0.21 | 672.49 ▼30.79 | 177.31 ▲113.14 |
Media Library /wp-admin/upload.php | 1,463 ▲66 | 4.39 ▲0.24 | 118.85 ▲19.58 | 68.71 ▲20.86 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 75% from 4 tests
🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
The following items require your attention
- Zombie WordPress options were found after uninstall: 7 options
- widget_theysaidso_widget
- widget_recent-comments
- wpel-first-install
- db_upgraded
- can_compress_scripts
- widget_recent-posts
- theysaidso_admin_options
Smoke tests 75% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | Just a short smoke test targeting errors on the server (in the Apache logs)
Even though everything seems fine, this is not an exhaustive test
SRP 50% from 2 tests
🔹 Tests weight: 20 | SRP (Single-Responsibility Principle) - PHP files must act as libraries and never output text or perform any action when accessed directly in a browser
Almost there! Just fix the following items
- 55× PHP files trigger server errors when accessed directly (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Call to undefined function esc_html() in wp-content/plugins/wp-external-links/templates/network-page/main.php:19
- > PHP Fatal error
Uncaught Error: Call to undefined function esc_url() in wp-content/plugins/wp-external-links/templates/partials/tab-contents/link-checking.php:21
- > PHP Fatal error
Uncaught Error: Class 'WPRun_Base_1x0x0' not found in wp-content/plugins/wp-external-links/libs/fwp/class-fwp-debug.php:11
- > PHP Fatal error
Uncaught Error: Class 'WPEL_Plugin' not found in wp-content/plugins/wp-external-links/templates/settings-page/tab-contents/external-links.php:16
- > PHP Notice
Trying to access array offset on value of type null in wp-content/plugins/wp-external-links/templates/partials/tab-contents/fields-default.php on line 17
- > PHP Notice
Undefined variable: vars in wp-content/plugins/wp-external-links/templates/partials/tab-contents/fields-default.php on line 17
- > PHP Fatal error
Uncaught Error: Class 'FWP_Settings_Section_Base_1x0x0' not found in wp-content/plugins/wp-external-links/includes/admin/settings-fields/class-wpel-admin-fields.php:11
- > PHP Fatal error
Uncaught Error: Class 'FWP_Plugin_Base_1x0x0' not found in wp-content/plugins/wp-external-links/includes/class-wpel-plugin.php:12
- > PHP Fatal error
Uncaught Error: Class 'FWP_Settings_Section_Base_1x0x0' not found in wp-content/plugins/wp-external-links/includes/admin/network-fields/class-wpel-network-admin-fields.php:11
- > PHP Fatal error
Uncaught Error: Call to undefined function esc_html_e() in wp-content/plugins/wp-external-links/templates/network-page/help-tabs/under-construction.php:12
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a shallow check for browser errors
No browser issues were found
Optimizations
Plugin configuration 97% from 29 tests
readme.txt 94% from 16 tests
You should put a lot of thought into formatting readme.txt as it is used by WordPress.org to prepare the public listing of your plugin
These attributes need your attention:
- Tags: There are too many tags (17 tag instead of maximum 10)
wp-external-links/wp-external-links.php Passed 13 tests
"External Links - nofollow, noopener & new window" version 2.59's main PHP file describes plugin functionality and also serves as the entry point to any WordPress functionality
107 characters long description:
Open external links in a new tab or window, control "nofollow" and "noopener", set font icon; SEO friendly.
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | Executable files are considered dangerous and should not be included with any WordPress plugin
Good job! No executable or dangerous file extensions detected14,841 lines of code in 85 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
SVG | 20 | 0 | 0 | 8,605 |
PHP | 54 | 877 | 1,597 | 3,738 |
CSS | 6 | 160 | 85 | 2,183 |
JavaScript | 3 | 55 | 35 | 313 |
JSON | 2 | 0 | 0 | 2 |
PHP code Passed 2 tests
Analyzing logical lines of code, cyclomatic complexity, and other code metrics
There were no cyclomatic complexity issued detected
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.28 |
Average class complexity | 10.21 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 79.00 |
Average method complexity | 2.21 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 30.00 |
Code structure | ||
---|---|---|
Namespaces | 0 | |
Interfaces | 0 | |
Traits | 0 | |
Classes | 33 | |
▷ Abstract classes | 6 | 18.18% |
▷ Concrete classes | 27 | 81.82% |
▷ Final classes | 19 | 70.37% |
Methods | 234 | |
▷ Static methods | 14 | 5.98% |
▷ Public methods | 71 | 30.34% |
▷ Protected methods | 152 | 64.96% |
▷ Private methods | 11 | 4.70% |
Functions | 11 | |
▷ Named functions | 2 | 18.18% |
▷ Anonymous functions | 9 | 81.82% |
Constants | 6 | |
▷ Global constants | 3 | 50.00% |
▷ Class constants | 3 | 50.00% |
▷ Public constants | 3 | 100.00% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
PNG files should be compressed to save space and minimize bandwidth usage
31 PNG files occupy 0.48MB with 0.27MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
public/images/logo.png | 17.56KB | 2.52KB | ▼ 85.64% |
public/images/link-checker.png | 138.74KB | 40.72KB | ▼ 70.65% |
public/images/wpel-icons/icon-15.png | 1.16KB | 0.31KB | ▼ 73.36% |
public/images/wpel-icons/icon-5.png | 0.21KB | 0.16KB | ▼ 25.00% |
public/images/wpel-icons/icon-7.png | 0.17KB | 0.12KB | ▼ 30.46% |