Benchmarks
Plugin footprint 82% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | Checking the installer triggered no errors
Install script ran successfully
Server metrics [RAM: ▲0.39MB] [CPU: ▼7.64ms] 75% from 4 tests
Analyzing server-side resources used by Experience API for LifterLMS by Grassblade
It is recommended to improve the following
- CPU: Total CPU usage should be kept under 500.00ms (currently 3,880.09ms on /wp-admin/admin.php?page=grassblade-addons)
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 3.84 ▲0.38 | 40.86 ▲1.76 |
Dashboard /wp-admin | 3.75 ▲0.41 | 49.55 ▼17.15 |
Posts /wp-admin/edit.php | 3.80 ▲0.45 | 49.51 ▲3.57 |
Add New Post /wp-admin/post-new.php | 6.27 ▲0.39 | 88.12 ▼18.06 |
Media Library /wp-admin/upload.php | 3.61 ▲0.39 | 38.90 ▲2.89 |
Add-ons /wp-admin/admin.php?page=grassblade-addons | 3.86 | 3,880.09 |
LifterLMS /wp-admin/admin.php?page=grassblade-xapi-lifterlms | 3.63 | 32.75 |
GrassBlade /wp-admin/admin.php?page=grassblade-lrs-settings | 3.63 | 31.03 |
Server storage [IO: ▲0.13MB] [DB: ▲0.03MB] Passed 3 tests
Input-output and database impact of this plugin
There were no storage issued detected upon installing this plugin
Filesystem: 13 new files
Database: no new tables, 8 new options
New WordPress options |
---|
can_compress_scripts |
widget_recent-posts |
widget_theysaidso_widget |
theysaidso_admin_options |
grassblade_addons |
db_upgraded |
grassblade_free_addons |
widget_recent-comments |
Browser metrics Passed 4 tests
This is an overview of browser requirements for Experience API for LifterLMS by Grassblade
This plugin has a minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,840 ▲94 | 13.25 ▼1.05 | 1.53 ▼0.32 | 41.92 ▲2.32 |
Dashboard /wp-admin | 2,246 ▲58 | 4.93 ▼0.92 | 96.13 ▼15.24 | 88.42 ▲46.15 |
Posts /wp-admin/edit.php | 2,129 ▲40 | 2.02 ▼0.02 | 34.55 ▼3.06 | 37.92 ▲3.42 |
Add New Post /wp-admin/post-new.php | 1,702 ▲188 | 22.55 ▲5.11 | 660.08 ▼49.88 | 44.82 ▼9.44 |
Media Library /wp-admin/upload.php | 1,419 ▲31 | 4.20 ▼0.01 | 103.33 ▼13.21 | 70.91 ▲20.17 |
Add-ons /wp-admin/admin.php?page=grassblade-addons | 2,823 | 2.19 | 33.92 | 69.96 |
LifterLMS /wp-admin/admin.php?page=grassblade-xapi-lifterlms | 902 | 2.01 | 24.10 | 35.28 |
GrassBlade /wp-admin/admin.php?page=grassblade-lrs-settings | 915 | 2.01 | 22.73 | 28.78 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.03MB] 75% from 4 tests
🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
You still need to fix the following
- This plugin does not fully uninstall, leaving 8 options in the database
- widget_recent-comments
- db_upgraded
- can_compress_scripts
- widget_theysaidso_widget
- grassblade_free_addons
- widget_recent-posts
- grassblade_addons
- theysaidso_admin_options
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
Everything seems fine, however this is by no means an exhaustive test
SRP 50% 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
The following issues need your attention
- 3× PHP files trigger server-side errors or warnings when accessed directly:
- > PHP Warning
include_once(): Failed opening 'ABSPATHwp-admin/includes/plugin.php' for inclusion (include_path='.:/usr/share/php') in wp-content/plugins/grassblade-xapi-lifterlms/functions.php on line 32
- > PHP Warning
include_once(ABSPATHwp-admin/includes/plugin.php): failed to open stream: No such file or directory in wp-content/plugins/grassblade-xapi-lifterlms/functions.php on line 32
- > PHP Warning
Use of undefined constant ABSPATH - assumed 'ABSPATH' (this will throw an Error in a future version of PHP) in wp-content/plugins/grassblade-xapi-lifterlms/functions.php on line 32
- > PHP Warning
User-side errors Passed 1 test
🔹 Test weight: 20 | This is just a short smoke test looking for browser issues
Everything seems fine, but this is not an exhaustive test
Optimizations
Plugin configuration 93% from 29 tests
readme.txt 94% from 16 tests
The readme.txt file uses markdown syntax to describe your plugin to the world
These attributes need your attention:
- Donate link: Please fix this invalid url: ""
grassblade-xapi-lifterlms/functions.php 92% from 13 tests
Analyzing the main PHP file in "Experience API for LifterLMS by Grassblade" version 2.8
Please take the time to fix the following:
- Main file name: Please rename the main PHP file in this plugin to the plugin slug ("grassblade-xapi-lifterlms.php" instead of "functions.php")
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
No dangerous file extensions were detected1,904 lines of code in 5 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 4 | 457 | 131 | 1,865 |
JavaScript | 1 | 14 | 1 | 39 |
PHP code Passed 2 tests
This is a short overview of cyclomatic complexity and code structure for this plugin
Great job! No cyclomatic complexity issues were detected in this plugin
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.51 |
Average class complexity | 140.67 |
▷ Minimum class complexity | 26.00 |
▷ Maximum class complexity | 280.00 |
Average method complexity | 6.05 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 36.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 | 83 | |
▷ Static methods | 17 | 20.48% |
▷ Public methods | 83 | 100.00% |
▷ Protected methods | 0 | 0.00% |
▷ Private methods | 0 | 0.00% |
Functions | 0 | |
▷ Named functions | 0 | 0.00% |
▷ Anonymous functions | 0 | 0.00% |
Constants | 1 | |
▷ Global constants | 1 | 100.00% |
▷ Class constants | 0 | 0.00% |
▷ Public constants | 0 | 0.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
6 PNG files occupy 0.04MB with 0.02MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
img/icon-gb.png | 3.43KB | 0.84KB | ▼ 75.48% |
img/gb_logo.png | 3.43KB | 0.84KB | ▼ 75.48% |
img/no.png | 1.01KB | 0.62KB | ▼ 39.05% |
img/icon_30x30.png | 4.58KB | 1.60KB | ▼ 65.15% |
img/icon_128x128.png | 22.67KB | 6.87KB | ▼ 69.71% |