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
The plugin installed successfully, without throwing any errors or notices
Server metrics [RAM: ▲0.88MB] [CPU: ▲6.50ms] Passed 4 tests
This is a short check of server-side resources used by Sport Predictions for JoomSport
No issues were detected with server-side resource usage
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 4.32 ▲0.85 | 48.60 ▲10.60 |
Dashboard /wp-admin | 4.22 ▲0.87 | 58.11 ▼2.09 |
Posts /wp-admin/edit.php | 4.26 ▲0.90 | 72.93 ▲29.04 |
Add New Post /wp-admin/post-new.php | 6.80 ▲0.90 | 95.55 ▲1.51 |
Media Library /wp-admin/upload.php | 4.12 ▲0.88 | 48.22 ▲15.96 |
Leagues /wp-admin/edit.php?post_type=jswprediction_league | 4.18 | 46.02 |
Rounds /wp-admin/edit.php?post_type=jswprediction_round | 4.18 | 50.99 |
Settings /wp-admin/admin.php?page=joomsport_prediction_settings | 4.09 | 42.81 |
Server storage [IO: ▲0.43MB] [DB: ▲0.01MB] Passed 3 tests
Filesystem and database footprint
This plugin was installed successfully
Filesystem: 59 new files
Database: 9 new tables, 9 new options
New tables |
---|
wp_jswprediction_round_matches |
wp_jswprediction_private_based |
wp_jswprediction_round |
wp_jswprediction_types |
wp_jswprediction_private_league |
wp_jswprediction_round_users |
wp_jswprediction_league |
wp_jswprediction_private_users |
wp_jswprediction_scorepredict |
New WordPress options |
---|
widget_jswp_prediction_user_stat |
can_compress_scripts |
db_upgraded |
widget_theysaidso_widget |
recovery_mode_email_last_sent |
widget_recent-posts |
theysaidso_admin_options |
joomsport_prediction_settings |
widget_recent-comments |
Browser metrics Passed 4 tests
Sport Predictions for JoomSport: an overview of browser usage
There were no issues detected in relation to browser resource usage
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,010 ▲264 | 14.83 ▲0.48 | 1.78 ▲0.17 | 38.15 ▼2.54 |
Dashboard /wp-admin | 2,407 ▲227 | 6.55 ▲0.90 | 119.59 ▲33.27 | 42.05 ▲0.78 |
Posts /wp-admin/edit.php | 2,345 ▲245 | 3.78 ▲1.76 | 59.83 ▲24.05 | 37.43 ▲0.75 |
Add New Post /wp-admin/post-new.php | 1,751 ▲225 | 22.53 ▼1.15 | 648.60 ▼11.62 | 29.86 ▼31.21 |
Media Library /wp-admin/upload.php | 1,478 ▲84 | 4.52 ▲0.36 | 81.78 ▼15.98 | 45.07 ▲1.75 |
Leagues /wp-admin/edit.php?post_type=jswprediction_league | 1,306 | 3.83 | 47.77 | 28.69 |
Rounds /wp-admin/edit.php?post_type=jswprediction_round | 1,336 | 3.72 | 45.95 | 26.87 |
Settings /wp-admin/admin.php?page=joomsport_prediction_settings | 749 | 1.73 | 12.48 | 22.66 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.01MB] 50% from 4 tests
🔸 Tests weight: 35 | Verifying that this plugin uninstalls completely without leaving any traces
These items require your attention
- Zombie tables detected upon uninstall: 9 tables
- wp_jswprediction_round_users
- wp_jswprediction_private_users
- wp_jswprediction_private_league
- wp_jswprediction_types
- wp_jswprediction_round_matches
- wp_jswprediction_scorepredict
- wp_jswprediction_private_based
- wp_jswprediction_league
- wp_jswprediction_round
- Zombie WordPress options detected upon uninstall: 9 options
- widget_theysaidso_widget
- widget_jswp_prediction_user_stat
- theysaidso_admin_options
- recovery_mode_email_last_sent
- widget_recent-comments
- db_upgraded
- widget_recent-posts
- joomsport_prediction_settings
- can_compress_scripts
Smoke tests 25% from 4 tests
Server-side errors 0% from 1 test
🔹 Test weight: 20 | A smoke test targeting server-side errors
These server-side errors were triggered
- > GET request to /wp-admin/admin.php?page=joomsport_prediction_settings
- > Error in wp-content/plugins/joomsport-prediction/includes/pages/joomsport-prediction-page-settings.php+85
Uncaught Error: Class 'JoomSportHelperSelectBox' not found in wp-content/plugins/joomsport-prediction/includes/pages/joomsport-prediction-page-settings.php:85
Stack trace:
#0 wp-includes/class-wp-hook.php(310): JoomsportPredictionPageSettings::action()
#1 wp-includes/class-wp-hook.php(334): WP_Hook->apply_filters()
#2 wp-includes/plugin.php(517): WP_Hook->do_action()
#3 wp-admin/admin.php(259): do_action()
#4 {main}
thrown
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
The following issues need your attention
- 1× PHP files perform the action of outputting non-empty strings when accessed directly:
- > /wp-content/plugins/joomsport-prediction/joomsport-prediction.php
- 49× PHP files trigger server-side errors or warnings when accessed directly (only 10 are shown):
- > PHP Warning
Use of undefined constant JOOMSPORT_PREDICTION_PATH_INCLUDES - assumed 'JOOMSPORT_PREDICTION_PATH_INCLUDES' (this will throw an Error in a future version of PHP) in wp-content/plugins/joomsport-prediction/includes/posts/joomsport-prediction-post-league.php on line 8
- > PHP Fatal error
Uncaught Error: Class 'WP_Widget' not found in wp-content/plugins/joomsport-prediction/includes/joomsport-prediction-widgets.php:8
- > PHP Fatal error
require_once(): Failed opening required 'JOOMSPORT_PATH_MODELSmodel-jsport-player.php' (include_path='.:/usr/share/php') in wp-content/plugins/joomsport-prediction/sportleague/classes/objects/class-jsport-prediction-userleague.php on line 9
- > PHP Fatal error
require_once(): Failed opening required 'JOOMSPORT_PREDICTION_PATH_INCLUDESmeta-boxes/joomsport-prediction-meta-league.php' (include_path='.:/usr/share/php') in wp-content/plugins/joomsport-prediction/includes/posts/joomsport-prediction-post-league.php on line 8
- > PHP Fatal error
Uncaught Error: Call to undefined function get_avatar() in wp-content/plugins/joomsport-prediction/sportleague/views/default/widgets/user-stat.php:7
- > PHP Warning
Use of undefined constant JOOMSPORT_PATH_MODELS - assumed 'JOOMSPORT_PATH_MODELS' (this will throw an Error in a future version of PHP) in wp-content/plugins/joomsport-prediction/sportleague/classes/objects/class-jsport-prediction-userleague.php on line 9
- > PHP Warning
require_once(JOOMSPORT_PATH_MODELSmodel-jsport-player.php): failed to open stream: No such file or directory in wp-content/plugins/joomsport-prediction/sportleague/classes/objects/class-jsport-prediction-userround.php on line 4
- > PHP Fatal error
Uncaught Error: Call to undefined function add_action() in wp-content/plugins/joomsport-prediction/includes/joomsport-prediction-delete.php:10
- > PHP Fatal error
Uncaught Error: Call to undefined function __() in wp-content/plugins/joomsport-prediction/sportleague/views/default/userleague.php:16
- > PHP Fatal error
Uncaught Error: Class 'classJsportUserround' not found in wp-content/plugins/joomsport-prediction/sportleague/views/default/userround.php:2
- > PHP Warning
User-side errors Passed 1 test
🔹 Test weight: 20 | This is just a short smoke test looking for browser issues
No browser issues were found
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
6 plugin tags: sport, league predictions, sport predictions, league, game predictions...
joomsport-prediction/joomsport-prediction.php Passed 13 tests
The main PHP script in "Sport Predictions for JoomSport" version 2.1.5 is automatically included on every request by WordPress
51 characters long description:
Create sport predictions for your JoomSport matches
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | There should be no dangerous file extensions present in any WordPress plugin
Success! There were no dangerous files found in this plugin7,373 lines of code in 49 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 40 | 1,335 | 498 | 5,913 |
CSS | 4 | 16 | 6 | 792 |
JavaScript | 3 | 126 | 31 | 613 |
HTML | 1 | 3 | 0 | 45 |
SVG | 1 | 1 | 0 | 10 |
PHP code Passed 2 tests
This is a very shot review of cyclomatic complexity and code structure
Great job! No cyclomatic complexity issues were detected in this plugin
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.37 |
Average class complexity | 23.85 |
▷ Minimum class complexity | 2.00 |
▷ Maximum class complexity | 129.00 |
Average method complexity | 4.37 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 84.00 |
Code structure | ||
---|---|---|
Namespaces | 0 | |
Interfaces | 0 | |
Traits | 0 | |
Classes | 33 | |
▷ Abstract classes | 0 | 0.00% |
▷ Concrete classes | 33 | 100.00% |
▷ Final classes | 0 | 0.00% |
Methods | 212 | |
▷ Static methods | 98 | 46.23% |
▷ Public methods | 203 | 95.75% |
▷ Protected methods | 0 | 0.00% |
▷ Private methods | 9 | 4.25% |
Functions | 25 | |
▷ Named functions | 15 | 60.00% |
▷ Anonymous functions | 10 | 40.00% |
Constants | 17 | |
▷ Global constants | 17 | 100.00% |
▷ Class constants | 0 | 0.00% |
▷ Public constants | 0 | 0.00% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
Often times overlooked, PNG files can occupy unnecessary space in your plugin
3 PNG files occupy 0.05MB with 0.03MB in potential savings
Potential savings
Compression of 3 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
sportleague/assets/images/ystar.png | 10.93KB | 5.14KB | ▼ 53.00% |
sportleague/assets/images/jsport-ico-24.png | 18.82KB | 7.19KB | ▼ 61.78% |
sportleague/assets/images/jsport-ico-32.png | 25.19KB | 9.98KB | ▼ 60.37% |