Benchmarks
Plugin footprint 65% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | All plugins must install correctly, without throwing any errors, warnings, or notices
Installer ran successfully
Server metrics [RAM: ▲2.48MB] [CPU: ▲12.59ms] Passed 4 tests
An overview of server-side resources used by WPCal.io - Easy Meeting Scheduler
No issues were detected with server-side resource usage
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 5.90 ▲2.44 | 49.81 ▲9.53 |
Dashboard /wp-admin | 5.81 ▲2.46 | 66.50 ▲3.32 |
Posts /wp-admin/edit.php | 5.92 ▲2.56 | 64.43 ▲16.33 |
Add New Post /wp-admin/post-new.php | 8.41 ▲2.52 | 111.38 ▲21.17 |
Media Library /wp-admin/upload.php | 5.73 ▲2.50 | 61.79 ▲30.23 |
Server storage [IO: ▲8.65MB] [DB: ▲0.03MB] Passed 3 tests
Filesystem and database footprint
No storage issues were detected
Filesystem: 673 new files
Database: 15 new tables, 13 new options
New tables |
---|
wp_wpcal_service_availability |
wp_wpcal_background_tasks |
wp_wpcal_calendars |
wp_wpcal_calendar_accounts |
wp_wpcal_availability_periods |
wp_wpcal_calendar_events |
wp_wpcal_notices |
wp_wpcal_service_admins |
wp_wpcal_tp_accounts |
wp_wpcal_availability_dates |
... |
New WordPress options |
---|
widget_recent-posts |
theysaidso_admin_options |
db_upgraded |
widget_recent-comments |
widget_theysaidso_widget |
can_compress_scripts |
wpcal_db_version |
wpcal_last_local_task_started_time |
wpcal_features_last_checked |
wpcal_install_version |
... |
Browser metrics Passed 4 tests
A check of browser resources used by WPCal.io - Easy Meeting Scheduler
Minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,832 ▲70 | 14.40 ▼0.20 | 1.50 ▼0.19 | 38.04 ▼6.33 |
Dashboard /wp-admin | 2,237 ▲57 | 5.92 ▲0.23 | 97.93 ▲6.88 | 39.09 ▲0.57 |
Posts /wp-admin/edit.php | 2,139 ▲36 | 2.17 ▲0.17 | 39.49 ▲4.07 | 36.22 ▲0.11 |
Add New Post /wp-admin/post-new.php | 1,717 ▲191 | 21.87 ▼1.44 | 697.09 ▲59.20 | 39.69 ▼15.53 |
Media Library /wp-admin/upload.php | 1,440 ▲40 | 4.30 ▲0.13 | 126.84 ▲32.36 | 54.53 ▲12.87 |
Bookings /wp-admin/admin.php?page=wpcal_admin#/bookings | 1,228 | 7.06 | 160.04 | 42.38 |
Settings /wp-admin/admin.php?page=wpcal_admin#/settings | 1,229 | 7.17 | 141.56 | 37.41 |
Event Types /wp-admin/admin.php?page=wpcal_admin#/event-types | 1,224 | 7.24 | 147.13 | 37.85 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.03MB] 50% from 4 tests
🔸 Tests weight: 35 | It is important to correctly uninstall your plugin, without leaving any traces
It is recommended to fix the following
- This plugin does not fully uninstall, leaving 15 tables in the database
- wp_wpcal_notices
- wp_wpcal_availability_periods
- wp_wpcal_availability_dates
- wp_wpcal_service_admins
- wp_wpcal_calendars
- wp_wpcal_service_availability
- wp_wpcal_bookings
- wp_wpcal_calendar_accounts
- wp_wpcal_service_availability_slots_cache
- wp_wpcal_background_tasks
- ...
- This plugin did not uninstall successfully, leaving 13 options in the database
- wpcal_version
- db_upgraded
- can_compress_scripts
- wpcal_db_version
- widget_recent-comments
- wpcal_last_local_task_started_time
- wpcal_last_validate_attempt
- wpcal_install_version
- wpcal_first_activation_redirect
- widget_recent-posts
- ...
Smoke tests 50% 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)
The smoke test was a success, however most plugin functionality was not tested
SRP 0% from 2 tests
🔹 Tests weight: 20 | The single-responsibility principle applies for WordPress plugins as well - please make sure your PHP files perform no actions when accessed directly
Please fix the following
- 2× PHP files perform the task of outputting text when accessed with GET requests:
- > /wp-content/plugins/wpcal/templates/admin_page.php
- > /wp-content/plugins/wpcal/templates/requirements_not_met.php
- 300× PHP files trigger errors when accessed directly with GET requests (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Class 'WPCal\\GoogleAPI\\Google\\Auth\\CredentialsLoader' not found in wp-content/plugins/wpcal/lib/google-api-php-client/vendor/google/auth/src/Credentials/AppIdentityCredentials.php:52
- > PHP Fatal error
Uncaught Error: Class 'WPCal\\GoogleAPI\\Google_Model' not found in wp-content/plugins/wpcal/lib/google-api-php-client/vendor/google/apiclient-services/src/Google/Service/Calendar/EventGadget.php:20
- > PHP Fatal error
Uncaught Error: Interface 'WPCal\\GoogleAPI\\GuzzleHttp\\Handler\\CurlFactoryInterface' not found in wp-content/plugins/wpcal/lib/google-api-php-client/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:15
- > PHP Fatal error
Uncaught Error: Interface 'WPCal\\ComposerPackages\\Psr\\Http\\Message\\UriInterface' not found in wp-content/plugins/wpcal/lib/composer_packages/vendor/guzzlehttp/psr7/src/Uri.php:13
- > PHP Fatal error
Uncaught Error: Class 'WPCal\\GoogleAPI\\Monolog\\Handler\\StreamHandler' not found in wp-content/plugins/wpcal/lib/google-api-php-client/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php:25
- > PHP Fatal error
Uncaught Error: Class 'WPCal\\GoogleAPI\\GuzzleHttp\\Exception\\TransferException' not found in wp-content/plugins/wpcal/lib/google-api-php-client/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:12
- > PHP Fatal error
Uncaught Error: Interface 'WPCal\\GoogleAPI\\Google\\Auth\\FetchAuthTokenInterface' not found in wp-content/plugins/wpcal/lib/google-api-php-client/vendor/google/auth/src/FetchAuthTokenCache.php:25
- > PHP Fatal error
Uncaught Error: Class 'WPCal\\GoogleAPI\\Monolog\\Handler\\AbstractHandler' not found in wp-content/plugins/wpcal/lib/google-api-php-client/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php:24
- > PHP Fatal error
Uncaught Error: Class 'WPCal\\GoogleAPI\\Google_Model' not found in wp-content/plugins/wpcal/lib/google-api-php-client/vendor/google/apiclient-services/src/Google/Service/Calendar/ConferenceParameters.php:20
- > PHP Fatal error
Uncaught Error: Class 'WPCal\\GoogleAPI\\Google_Model' not found in wp-content/plugins/wpcal/lib/google-api-php-client/vendor/google/apiclient-services/src/Google/Service/Calendar/TimePeriod.php:20
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a shallow check for browser errors
Everything seems fine, but this is not an exhaustive test
Optimizations
Plugin configuration 97% from 29 tests
readme.txt 94% from 16 tests
Don't ignore readme.txt as it is the file that instructs WordPress.org on how to present your plugin to the world
Attributes that require attention:
- Tags: You are using too many tags: 17 tag instead of maximum 10
wpcal/wpcal.php Passed 13 tests
Analyzing the main PHP file in "WPCal.io - Easy Meeting Scheduler" version 0.9.5.8
77 characters long description:
Allow your customer to book appoinments online without back-and-forth emails.
Code Analysis 97% from 3 tests
File types Passed 1 test
🔸 Test weight: 35 | This is an overview of programming languages used in this plugin; dangerous file extensions are not allowed
Good job! No executable or dangerous file extensions detected85,737 lines of code in 614 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 532 | 5,212 | 36,926 | 63,235 |
JavaScript | 9 | 2,718 | 8,542 | 12,933 |
Markdown | 33 | 1,904 | 0 | 6,025 |
JSON | 21 | 1 | 0 | 2,529 |
SVG | 6 | 5 | 1 | 941 |
YAML | 1 | 2 | 0 | 25 |
XML | 1 | 0 | 0 | 19 |
Dockerfile | 1 | 8 | 0 | 10 |
make | 1 | 4 | 0 | 9 |
CSS | 5 | 0 | 0 | 5 |
Bourne Shell | 1 | 2 | 0 | 3 |
HTML | 3 | 0 | 0 | 3 |
PHP code 50% from 2 tests
Analyzing cyclomatic complexity and code structure
These items need your attention
- Please reduce cyclomatic complexity of methods to less than 100 (currently 109)
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.40 |
Average class complexity | 19.82 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 628.00 |
Average method complexity | 3.17 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 109.00 |
Code structure | ||
---|---|---|
Namespaces | 54 | |
Interfaces | 49 | |
Traits | 18 | |
Classes | 417 | |
▷ Abstract classes | 15 | 3.60% |
▷ Concrete classes | 402 | 96.40% |
▷ Final classes | 25 | 6.22% |
Methods | 4,355 | |
▷ Static methods | 544 | 12.49% |
▷ Public methods | 3,471 | 79.70% |
▷ Protected methods | 325 | 7.46% |
▷ Private methods | 559 | 12.84% |
Functions | 576 | |
▷ Named functions | 354 | 61.46% |
▷ Anonymous functions | 222 | 38.54% |
Constants | 473 | |
▷ Global constants | 90 | 19.03% |
▷ Class constants | 383 | 80.97% |
▷ Public constants | 364 | 95.04% |
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
There are no PNG files in this plugin