Benchmarks
Plugin footprint 83% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | Verifying that this plugin installs correctly without errors
This plugin's installer ran successfully
Server metrics [RAM: ▲1.88MB] [CPU: ▲22.20ms] Passed 4 tests
Analyzing server-side resources used by IP Locator
Server-side resource usage in normal parameters
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 5.23 ▲1.76 | 54.93 ▲19.12 |
Dashboard /wp-admin | 5.23 ▲1.92 | 79.46 ▲30.54 |
Posts /wp-admin/edit.php | 5.28 ▲1.92 | 71.86 ▲28.15 |
Add New Post /wp-admin/post-new.php | 7.79 ▲1.90 | 100.04 ▲14.61 |
Media Library /wp-admin/upload.php | 5.15 ▲1.92 | 60.94 ▲26.90 |
Scheduled Actions /wp-admin/tools.php?page=action-scheduler | 5.32 | 60.70 |
IP Locator /wp-admin/admin.php?page=iplocator-settings | 5.52 | 52.74 |
Analytics /wp-admin/admin.php?page=perfopsone-analytics | 5.13 | 52.17 |
Control Center /wp-admin/admin.php?page=perfopsone-dashboard | 5.19 | 52.28 |
Locations /wp-admin/admin.php?page=iplocator-tools | 5.16 | 50.40 |
Tools /wp-admin/admin.php?page=perfopsone-tools | 5.13 | 47.60 |
Locations /wp-admin/admin.php?page=iplocator-viewer | 5.62 | 58.06 |
Server storage [IO: ▲7.43MB] [DB: ▲0.01MB] Passed 3 tests
Input-output and database impact of this plugin
This plugin was installed successfully
Filesystem: 1,088 new files
Database: 3 new tables, 7 new options
New tables |
---|
wp_iplocator_v4 |
wp_iplocator_statistics |
wp_iplocator_v6 |
New WordPress options |
---|
widget_theysaidso_widget |
action_scheduler_lock_async-request-runner |
theysaidso_admin_options |
can_compress_scripts |
db_upgraded |
widget_recent-posts |
widget_recent-comments |
Browser metrics Passed 4 tests
Checking browser requirements for IP Locator
This plugin renders optimally with no browser resource issues detected
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,837 ▲76 | 14.26 ▼0.11 | 1.78 ▲0.18 | 46.99 ▲5.95 |
Dashboard /wp-admin | 2,243 ▲75 | 5.62 ▲0.08 | 99.36 ▲4.63 | 42.75 ▼3.94 |
Posts /wp-admin/edit.php | 2,148 ▲45 | 2.04 ▲0.07 | 34.52 ▼0.79 | 33.53 ▼4.29 |
Add New Post /wp-admin/post-new.php | 1,553 ▲25 | 23.39 ▲0.18 | 698.48 ▲9.04 | 54.24 ▲2.37 |
Media Library /wp-admin/upload.php | 1,448 ▲48 | 4.19 ▼0.06 | 99.03 ▲4.57 | 43.28 ▼1.23 |
Scheduled Actions /wp-admin/tools.php?page=action-scheduler | 1,307 | 1.71 | 26.33 | 29.88 |
IP Locator /wp-admin/admin.php?page=iplocator-settings | 2,056 | 1.81 | 26.50 | 38.63 |
Analytics /wp-admin/admin.php?page=perfopsone-analytics | 899 | 2.00 | 23.57 | 25.06 |
Control Center /wp-admin/admin.php?page=perfopsone-dashboard | 1,074 | 2.01 | 25.12 | 33.77 |
Locations /wp-admin/admin.php?page=iplocator-tools | 892 | 2.07 | 28.30 | 28.56 |
Tools /wp-admin/admin.php?page=perfopsone-tools | 881 | 2.16 | 23.31 | 23.52 |
Locations /wp-admin/admin.php?page=iplocator-viewer | 1,666 | 4.27 | 102.95 | 78.25 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.01MB] 75% from 4 tests
🔸 Tests weight: 35 | It is important to correctly uninstall your plugin, without leaving any traces
Please fix the following items
- This plugin does not fully uninstall, leaving 7 options in the database
- widget_theysaidso_widget
- can_compress_scripts
- theysaidso_admin_options
- action_scheduler_lock_async-request-runner
- db_upgraded
- widget_recent-comments
- widget_recent-posts
Smoke tests 50% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | This is a shallow check for server-side errors
Everything seems fine, however this is by no means an exhaustive test
SRP 0% from 2 tests
🔹 Tests weight: 20 | It is important to ensure that your PHP files perform no action when accessed directly, respecting the single-responsibility principle
Please fix the following items
- 1× PHP files output non-empty strings when accessed directly via GET requests:
- > /wp-content/plugins/ip-locator/public/partials/ip-locator-public-display.php
- 76× PHP files trigger server-side errors or warnings when accessed directly (only 10 are shown):
- > PHP Fatal error
require_once(): Failed opening required 'ABSPATHwp-admin/includes/class-wp-list-table.php' (include_path='.:/usr/share/php') in wp-content/plugins/ip-locator/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php on line 4
- > PHP Warning
Use of undefined constant ABSPATH - assumed 'ABSPATH' (this will throw an Error in a future version of PHP) in wp-content/plugins/ip-locator/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php on line 4
- > PHP Fatal error
Uncaught Error: Class 'WP_Upgrader_Skin' not found in wp-content/plugins/ip-locator/perfopsone/class-upgraderskin.php:23
- > PHP Fatal error
Uncaught Error: Class 'ActionScheduler_Abstract_Schema' not found in wp-content/plugins/ip-locator/includes/libraries/action-scheduler/classes/schema/ActionScheduler_StoreSchema.php:10
- > PHP Fatal error
Uncaught Error: Interface 'Psr\\Http\\Message\\MessageInterface' not found in wp-content/plugins/ip-locator/includes/libraries/psr/http-message/RequestInterface.php:24
- > PHP Fatal error
Uncaught Error: Class 'ActionScheduler_Logger' not found in wp-content/plugins/ip-locator/includes/libraries/action-scheduler/classes/data-stores/ActionScheduler_DBLogger.php:10
- > PHP Fatal error
Uncaught Error: Class 'ActionScheduler_Abstract_RecurringSchedule' not found in wp-content/plugins/ip-locator/includes/libraries/action-scheduler/classes/schedules/ActionScheduler_IntervalSchedule.php:6
- > PHP Fatal error
Uncaught Error: Class 'CronExpression_AbstractField' not found in wp-content/plugins/ip-locator/includes/libraries/action-scheduler/lib/cron-expression/CronExpression_MinutesField.php:8
- > PHP Fatal error
Uncaught Error: Class 'cebe\\markdownparser\\MarkdownParser' not found in wp-content/plugins/ip-locator/includes/libraries/markdown/GithubMarkdown.php:15
- > PHP Fatal error
Uncaught Error: Class 'Action_Scheduler\\Migration\\ActionMigrator' not found in wp-content/plugins/ip-locator/includes/libraries/action-scheduler/classes/migration/DryRun_ActionMigrator.php:15
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is just a short smoke test looking for browser issues
No browser errors were detected
Optimizations
Plugin configuration Passed 29 tests
readme.txt Passed 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
4 plugin tags: geolocation, country, flag, language
ip-locator/ip-locator.php Passed 13 tests
The entry point to "IP Locator" version 3.9.0 is a PHP file that has certain tags in its header comment area
40 characters long description:
Country and language IP-based detection.
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | This is an overview of file extensions present in this plugin and a short test that no dangerous files are bundled with this plugin
Everything looks great! No dangerous files found in this plugin79,357 lines of code in 1,048 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
SVG | 803 | 0 | 1 | 39,305 |
JavaScript | 16 | 1,929 | 2,307 | 21,381 |
PHP | 202 | 2,891 | 12,645 | 15,914 |
CSS | 15 | 334 | 2 | 2,187 |
Markdown | 10 | 198 | 0 | 517 |
JSON | 2 | 0 | 0 | 53 |
PHP code Passed 2 tests
A brief analysis of cyclomatic complexity and code structure for this plugin
There were no cyclomatic complexity issued detected
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.36 |
Average class complexity | 12.91 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 191.00 |
Average method complexity | 2.89 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 58.00 |
Code structure | ||
---|---|---|
Namespaces | 19 | |
Interfaces | 16 | |
Traits | 15 | |
Classes | 151 | |
▷ Abstract classes | 17 | 11.26% |
▷ Concrete classes | 134 | 88.74% |
▷ Final classes | 0 | 0.00% |
Methods | 1,265 | |
▷ Static methods | 303 | 23.95% |
▷ Public methods | 935 | 73.91% |
▷ Protected methods | 236 | 18.66% |
▷ Private methods | 94 | 7.43% |
Functions | 58 | |
▷ Named functions | 34 | 58.62% |
▷ Anonymous functions | 24 | 41.38% |
Constants | 91 | |
▷ Global constants | 47 | 51.65% |
▷ Class constants | 44 | 48.35% |
▷ Public constants | 44 | 100.00% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
Using a strong compression for your PNG files is a great way to speed-up your plugin
PNG images were not found in this plugin