Benchmarks
Plugin footprint 83% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | Verifying that this plugin installs correctly without errors
The plugin installed gracefully, with no errors
Server metrics [RAM: ▲1.21MB] [CPU: ▲7.49ms] Passed 4 tests
An overview of server-side resources used by Geolocation IP Detection
Server-side resource usage in normal parameters
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 4.70 ▲1.24 | 56.00 ▲13.90 |
Dashboard /wp-admin | 4.52 ▲1.22 | 58.08 ▲9.59 |
Posts /wp-admin/edit.php | 4.57 ▲1.21 | 60.97 ▲10.95 |
Add New Post /wp-admin/post-new.php | 7.10 ▲1.21 | 98.69 ▼2.62 |
Media Library /wp-admin/upload.php | 4.44 ▲1.21 | 50.69 ▲12.04 |
Geolocation Lookup /wp-admin/tools.php?page=geoip-detect/geoip-detect.php | 4.52 | 169.55 |
Geolocation IP Detection /wp-admin/options-general.php?page=geoip-detect/geoip-detect.php | 4.47 | 47.38 |
Server storage [IO: ▲2.42MB] [DB: ▲0.00MB] Passed 3 tests
Filesystem and database footprint
This plugin was installed successfully
Filesystem: 346 new files
Database: no new tables, 9 new options
New WordPress options |
---|
db_upgraded |
theysaidso_admin_options |
geoip-detect-plugin_version |
geoip-detect-source |
widget_recent-comments |
widget_recent-posts |
widget_theysaidso_widget |
can_compress_scripts |
geoip-detect-disable_pagecache |
Browser metrics Passed 4 tests
An overview of browser requirements for Geolocation IP Detection
This plugin renders optimally with no browser resource issues detected
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,867 ▲106 | 14.36 ▼0.41 | 2.10 ▲0.40 | 44.87 ▲3.34 |
Dashboard /wp-admin | 2,245 ▲65 | 5.56 ▼0.10 | 92.10 ▲1.25 | 41.96 ▼0.24 |
Posts /wp-admin/edit.php | 2,154 ▲51 | 2.13 ▼0.02 | 37.30 ▼1.73 | 34.09 ▼5.64 |
Add New Post /wp-admin/post-new.php | 1,581 ▲53 | 18.14 ▼5.12 | 607.25 ▼71.21 | 76.40 ▲26.40 |
Media Library /wp-admin/upload.php | 1,456 ▲59 | 4.20 ▲0.05 | 98.77 ▼29.85 | 47.90 ▼4.76 |
Geolocation Lookup /wp-admin/tools.php?page=geoip-detect/geoip-detect.php | 1,014 | 1.80 | 24.70 | 35.78 |
Geolocation IP Detection /wp-admin/options-general.php?page=geoip-detect/geoip-detect.php | 1,137 | 1.94 | 27.15 | 36.21 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 75% from 4 tests
🔸 Tests weight: 35 | Verifying that this plugin uninstalls completely without leaving any traces
These items require your attention
- This plugin does not fully uninstall, leaving 6 options in the database
- theysaidso_admin_options
- widget_recent-posts
- widget_recent-comments
- db_upgraded
- can_compress_scripts
- widget_theysaidso_widget
Smoke tests 75% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | This is a short smoke test looking for server-side errors
Even though no errors were found, this is by no means 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
Please fix the following
- 120× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
- > PHP Warning
require_once(GEOIP_PLUGIN_DIR/shortcodes/_helpers.php): failed to open stream: No such file or directory in wp-content/plugins/geoip-detect/api_shortcodes.php on line 23
- > PHP Fatal error
Uncaught Error: Class 'GeoIp2\\Record\\AbstractRecord' not found in wp-content/plugins/geoip-detect/vendor/geoip2/geoip2/src/Record/Postal.php:20
- > PHP Fatal error
Uncaught Error: Class 'MaxMind\\Exception\\InvalidRequestException' not found in wp-content/plugins/geoip-detect/vendor/maxmind/web-service-common/src/Exception/PermissionRequiredException.php:8
- > PHP Fatal error
Uncaught Error: Class 'GeoIp2\\Record\\AbstractPlaceRecord' not found in wp-content/plugins/geoip-detect/vendor/geoip2/geoip2/src/Record/Country.php:28
- > PHP Fatal error
Uncaught Error: Interface 'Symfony\\Component\\PropertyAccess\\Exception\\ExceptionInterface' not found in wp-content/plugins/geoip-detect/vendor/symfony/property-access/Exception/InvalidArgumentException.php:19
- > PHP Fatal error
Uncaught Error: Class 'Symfony\\Component\\PropertyAccess\\Exception\\AccessException' not found in wp-content/plugins/geoip-detect/vendor/symfony/property-access/Exception/NoSuchPropertyException.php:19
- > PHP Fatal error
Uncaught Error: Class 'Symfony\\Component\\PropertyAccess\\Exception\\RuntimeException' not found in wp-content/plugins/geoip-detect/vendor/symfony/property-access/Exception/InvalidPropertyPathException.php:19
- > PHP Fatal error
Uncaught Error: Class 'GeoIp2\\Exception\\HttpException' not found in wp-content/plugins/geoip-detect/vendor/geoip2/geoip2/src/Exception/InvalidRequestException.php:9
- > PHP Fatal error
Uncaught Error: Call to undefined function add_action() in wp-content/plugins/geoip-detect/init.php:28
- > PHP Warning
Use of undefined constant GEOIP_PLUGIN_DIR - assumed 'GEOIP_PLUGIN_DIR' (this will throw an Error in a future version of PHP) in wp-content/plugins/geoip-detect/lib/geonames/geonames-country-info.php on line 22
- > PHP Warning
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 93% 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
Please fix the following attributes:
- Screenshots: Add images for these screenshots: #1 (Lookup page (under Tools > Geolocation Lookup)), #2 (Options page (under Preferences > Geolocation IP Detection))
geoip-detect/geoip-detect.php 92% from 13 tests
The main file in "Geolocation IP Detection" v. 5.3.1 serves as a complement to information provided in readme.txt and as the entry point to the plugin
Please take the time to fix the following:
- Requires PHP: Required version does not match the one declared in readme.txt ("7.2" instead of "7.2.5")
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | An overview of files in this plugin; executable files are not allowed
Good job! No executable or dangerous file extensions detected46,808 lines of code in 305 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 221 | 4,077 | 6,306 | 42,048 |
JSON | 20 | 0 | 0 | 1,639 |
Markdown | 23 | 487 | 0 | 1,175 |
JavaScript | 33 | 304 | 157 | 1,166 |
C | 1 | 97 | 18 | 589 |
XML | 3 | 7 | 0 | 108 |
Bourne Shell | 2 | 22 | 0 | 43 |
m4 | 1 | 8 | 0 | 32 |
C/C++ Header | 1 | 4 | 12 | 8 |
PHP code Passed 2 tests
An overview of cyclomatic complexity and code structure
There were no cyclomatic complexity issued detected
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.52 |
Average class complexity | 13.99 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 171.00 |
Average method complexity | 3.65 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 30.00 |
Code structure | ||
---|---|---|
Namespaces | 48 | |
Interfaces | 24 | |
Traits | 0 | |
Classes | 144 | |
▷ Abstract classes | 7 | 4.86% |
▷ Concrete classes | 137 | 95.14% |
▷ Final classes | 19 | 13.87% |
Methods | 849 | |
▷ Static methods | 147 | 17.31% |
▷ Public methods | 691 | 81.39% |
▷ Protected methods | 24 | 2.83% |
▷ Private methods | 134 | 15.78% |
Functions | 297 | |
▷ Named functions | 263 | 88.55% |
▷ Anonymous functions | 34 | 11.45% |
Constants | 177 | |
▷ Global constants | 42 | 23.73% |
▷ Class constants | 135 | 76.27% |
▷ Public constants | 106 | 78.52% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
All PNG images should be compressed to minimize bandwidth usage for end users
2 PNG files occupy 0.12MB with 0.08MB in potential savings
Potential savings
Compression of 2 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
screenshot-2.png | 49.38KB | 19.15KB | ▼ 61.22% |
screenshot-1.png | 78.36KB | 28.72KB | ▼ 63.34% |