Benchmarks
Plugin footprint 83% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | Checking the installer triggered no errors
The plugin installed gracefully, with no errors
Server metrics [RAM: ▲0.10MB] [CPU: ▼5.73ms] Passed 4 tests
Server-side resources used by Proxy & VPN Blocker
Server-side resource usage in normal parameters
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 3.54 ▲0.08 | 47.82 ▲4.38 |
Dashboard /wp-admin | 3.42 ▲0.07 | 50.16 ▼14.03 |
Posts /wp-admin/edit.php | 3.47 ▲0.12 | 50.37 ▼2.68 |
Add New Post /wp-admin/post-new.php | 6.03 ▲0.14 | 97.53 ▼10.57 |
Media Library /wp-admin/upload.php | 3.36 ▲0.13 | 46.09 ▲8.79 |
Blacklist Editor /wp-admin/admin.php?page=proxy_vpn_blocker_blacklist | 3.41 | 37.92 |
Whitelist Editor /wp-admin/admin.php?page=proxy_vpn_blocker_whitelist | 3.40 | 40.58 |
PVB Settings /wp-admin/admin.php?page=proxy_vpn_blocker_settings | 3.38 | 41.38 |
API Key Statistics /wp-admin/admin.php?page=proxy_vpn_blocker_statistics | 3.50 | 39.67 |
Server storage [IO: ▲8.03MB] [DB: ▲0.00MB] Passed 3 tests
Input-output and database impact of this plugin
No storage issues were detected
Filesystem: 294 new files
Database: no new tables, 12 new options
New WordPress options |
---|
widget_theysaidso_widget |
pvb_db_version |
theysaidso_admin_options |
pvb_protect_comments |
widget_recent-posts |
widget_recent-comments |
pvb_protect_default_login_page |
can_compress_scripts |
db_upgraded |
pvb_log_user_ip_select_box |
... |
Browser metrics Passed 4 tests
A check of browser resources used by Proxy & VPN Blocker
This plugin renders optimally with no browser resource issues detected
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,866 ▲105 | 13.21 ▼1.17 | 1.71 ▼0.70 | 38.75 ▼3.37 |
Dashboard /wp-admin | 2,275 ▲68 | 4.97 ▼0.00 | 98.21 ▼8.93 | 83.00 ▲33.58 |
Posts /wp-admin/edit.php | 2,154 ▲54 | 2.03 ▲0.03 | 41.02 ▼1.14 | 33.69 ▼7.91 |
Add New Post /wp-admin/post-new.php | 1,573 ▲23 | 23.10 ▼0.39 | 759.12 ▲110.14 | 68.10 ▲14.27 |
Media Library /wp-admin/upload.php | 1,448 ▲48 | 4.27 ▲0.06 | 100.64 ▼5.78 | 66.44 ▲22.14 |
Blacklist Editor /wp-admin/admin.php?page=proxy_vpn_blocker_blacklist | 870 | 2.08 | 35.46 | 31.32 |
Whitelist Editor /wp-admin/admin.php?page=proxy_vpn_blocker_whitelist | 864 | 2.09 | 31.23 | 31.77 |
PVB Settings /wp-admin/admin.php?page=proxy_vpn_blocker_settings | 3,256 | 2.42 | 49.54 | 53.92 |
API Key Statistics /wp-admin/admin.php?page=proxy_vpn_blocker_statistics | 877 | 4.37 | 98.36 | 27.93 |
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: 9 options
- widget_theysaidso_widget
- pvb_log_user_ip_select_box
- widget_recent-posts
- can_compress_scripts
- pvb_db_version
- pvb_protect_comments
- theysaidso_admin_options
- db_upgraded
- widget_recent-comments
Smoke tests 75% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | A smoke test targeting server-side errors
Even though everything seems fine, this is not an exhaustive test
SRP 50% from 2 tests
🔹 Tests weight: 20 | A shallow check of the single-responsibility principle; PHP files should perform no action - including output of placeholder text - and trigger no errors when accessed directly
Almost there! Just fix the following items
- 7× GET requests to PHP files have triggered server-side errors or warnings:
- > PHP Fatal error
Uncaught Error: Call to undefined function add_action() in wp-content/plugins/proxy-vpn-blocker/includes/user-ip.php:34
- > PHP Fatal error
Uncaught Error: Call to undefined function add_action() in wp-content/plugins/proxy-vpn-blocker/pvb-db-upgrade.php:109
- > PHP Fatal error
Uncaught Error: Call to undefined function get_option() in wp-content/plugins/proxy-vpn-blocker/includes/proxycheckio-whitelist.php:69
- > PHP Fatal error
Uncaught Error: Call to undefined function get_option() in wp-content/plugins/proxy-vpn-blocker/proxy-vpn-blocker-function.php:26
- > PHP Fatal error
Uncaught Error: Call to undefined function add_action() in wp-content/plugins/proxy-vpn-blocker/includes/help-mode.php:37
- > PHP Fatal error
Uncaught Error: Call to undefined function get_option() in wp-content/plugins/proxy-vpn-blocker/includes/proxycheckio-blacklist.php:67
- > PHP Fatal error
Uncaught Error: Call to undefined function get_option() in wp-content/plugins/proxy-vpn-blocker/uninstall.php:10
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | A shallow check that no browser errors were triggered
No browser errors were detected
Optimizations
Plugin configuration 90% from 29 tests
readme.txt 94% from 16 tests
The readme.txt file is undoubtedly the most important file in your plugin, preparing it for public listing on WordPress.org
Attributes that need to be fixed:
- Tags: Please delete some tags, you are using 11 tag instead of maximum 10
proxy-vpn-blocker/proxy-vpn-blocker-function.php 85% from 13 tests
"Proxy & VPN Blocker" version 2.2.3's main PHP file describes plugin functionality and also serves as the entry point to any WordPress functionality
Please take the time to fix the following:
- Description: If Twitter did it, so should we! Keep the description under 140 characters (currently 160 characters long)
- Main file name: It is recommended to name the main PHP file as the plugin slug ("proxy-vpn-blocker.php" instead of "proxy-vpn-blocker-function.php")
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | Executable files are not allowed as they can serve as attack vectors
No dangerous file extensions were detected10,930 lines of code in 40 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
JavaScript | 12 | 1,258 | 426 | 4,879 |
PHP | 16 | 305 | 705 | 3,334 |
CSS | 8 | 209 | 72 | 2,669 |
SVG | 2 | 0 | 0 | 29 |
Markdown | 1 | 5 | 0 | 18 |
XML | 1 | 0 | 0 | 1 |
PHP code Passed 2 tests
Cyclomatic complexity and code structure are the fingerprint of this plugin
No complexity issues detected
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.36 |
Average class complexity | 36.00 |
▷ Minimum class complexity | 8.00 |
▷ Maximum class complexity | 67.00 |
Average method complexity | 4.39 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 65.00 |
Code structure | ||
---|---|---|
Namespaces | 0 | |
Interfaces | 0 | |
Traits | 0 | |
Classes | 3 | |
▷ Abstract classes | 0 | 0.00% |
▷ Concrete classes | 3 | 100.00% |
▷ Final classes | 0 | 0.00% |
Methods | 31 | |
▷ Static methods | 2 | 6.45% |
▷ Public methods | 30 | 96.77% |
▷ Protected methods | 0 | 0.00% |
▷ Private methods | 1 | 3.23% |
Functions | 26 | |
▷ Named functions | 26 | 100.00% |
▷ Anonymous functions | 0 | 0.00% |
Constants | 2 | |
▷ Global constants | 2 | 100.00% |
▷ Class constants | 0 | 0.00% |
▷ Public constants | 0 | 0.00% |
Plugin size 50% from 2 tests
Image compression 50% from 2 tests
Using a strong compression for your PNG files is a great way to speed-up your plugin
246 PNG files occupy 0.77MB with 0.58MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
assets/img/country_flags/CI.png | 2.90KB | 0.35KB | ▼ 87.98% |
assets/img/country_flags/TH.png | 2.93KB | 0.34KB | ▼ 88.49% |
assets/img/country_flags/DJ.png | 3.63KB | 1.06KB | ▼ 70.84% |
assets/img/country_flags/BR.png | 4.69KB | 1.61KB | ▼ 65.67% |
assets/img/country_flags/AG.png | 4.14KB | 1.44KB | ▼ 65.28% |