Benchmarks
Plugin footprint 83% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | The install procedure must perform silently
The plugin installed gracefully, with no errors
Server metrics [RAM: ▲0.67MB] [CPU: ▼0.05ms] Passed 4 tests
Server-side resources used by Subscribr
Server-side resource usage in normal parameters
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 4.16 ▲0.70 | 47.60 ▲7.39 |
Dashboard /wp-admin | 4.01 ▲0.70 | 51.25 ▲0.98 |
Posts /wp-admin/edit.php | 4.06 ▲0.70 | 54.76 ▲0.84 |
Add New Post /wp-admin/post-new.php | 6.53 ▲0.64 | 99.39 ▼8.17 |
Media Library /wp-admin/upload.php | 3.88 ▲0.65 | 45.02 ▲6.15 |
Subscribr /wp-admin/options-general.php?page=subscribr-settings | 3.88 | 38.03 |
Server storage [IO: ▲0.94MB] [DB: ▲0.00MB] Passed 3 tests
Analyzing filesystem and database footprints of this plugin
The plugin installed successfully
Filesystem: 51 new files
Database: no new tables, 7 new options
New WordPress options |
---|
db_upgraded |
can_compress_scripts |
subscribr_options |
widget_recent-comments |
widget_theysaidso_widget |
widget_recent-posts |
theysaidso_admin_options |
Browser metrics Passed 4 tests
An overview of browser requirements for Subscribr
This plugin has a minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,793 ▲32 | 14.27 ▼0.15 | 1.75 ▼0.22 | 44.13 ▼0.43 |
Dashboard /wp-admin | 2,202 ▲22 | 5.66 ▲0.03 | 90.11 ▼3.81 | 42.36 ▼1.86 |
Posts /wp-admin/edit.php | 2,101 ▲4 | 2.01 ▲0.02 | 39.09 ▲1.33 | 41.47 ▲7.81 |
Add New Post /wp-admin/post-new.php | 6,246 ▲4,692 | 25.95 ▲7.60 | 900.43 ▲244.12 | 57.50 ▲8.27 |
Media Library /wp-admin/upload.php | 1,407 ▲4 | 4.20 ▼0.12 | 95.61 ▼11.09 | 43.85 ▼4.19 |
Subscribr /wp-admin/options-general.php?page=subscribr-settings | 1,715 | 2.50 | 55.73 | 85.13 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 75% from 4 tests
🔸 Tests weight: 35 | All plugins must uninstall correctly, removing their source code and extra database tables they might have created
The following items require your attention
- The uninstall procedure has failed, leaving 7 options in the database
- subscribr_options
- can_compress_scripts
- theysaidso_admin_options
- db_upgraded
- widget_recent-posts
- widget_theysaidso_widget
- widget_recent-comments
Smoke tests 50% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
Everything seems fine, however this is by no means an exhaustive test
SRP 50% from 2 tests
🔹 Tests weight: 20 | SRP (Single-Responsibility Principle) - PHP files must act as libraries and never output text or perform any action when accessed directly in a browser
Almost there! Just fix the following items
- 8× PHP files trigger server errors when accessed directly:
- > PHP Fatal error
Uncaught Error: Call to undefined function plugin_basename() in wp-content/plugins/subscribr/subscribr.php:60
- > PHP Warning
require_once(mindshare-options-framework.php): failed to open stream: No such file or directory in wp-content/plugins/subscribr/lib/mindshare-options-framework/demo/class-usage-demo.php on line 6
- > PHP Fatal error
Uncaught Error: Class 'subscribr_options_framework' not found in wp-content/plugins/subscribr/views/options-page.php:12
- > PHP Fatal error
Uncaught Error: Using $this when not in object context in wp-content/plugins/subscribr/views/email-profile-fields.php:14
- > PHP Fatal error
Uncaught Error: Class 'Subscribr' not found in wp-content/plugins/subscribr/controllers/options-init.php:13
- > PHP Fatal error
Uncaught Error: Call to undefined function apply_filters() in wp-content/plugins/subscribr/views/profile-fields.php:15
- > PHP Fatal error
require_once(): Failed opening required 'mindshare-options-framework.php' (include_path='.:/usr/share/php') in wp-content/plugins/subscribr/lib/mindshare-options-framework/demo/class-usage-demo.php on line 6
- > PHP Fatal error
Uncaught Error: Class 'Subscribr' not found in wp-content/plugins/subscribr/views/meta-box.php:15
- > PHP Fatal error
User-side errors 0% from 1 test
🔹 Test weight: 20 | This is a shallow check for browser errors
Please take a look at the following user-side issues
- > GET request to /wp-admin/options-general.php?page=subscribr-settings
- > Console-api (warning) in unknown
/wp-includes/js/jquery/jquery.min.js?ver=3.7.0 1:28609 "jQuery.Deferred exception: Cannot read properties of undefined (reading 'msie')" "TypeError: Cannot read properties of undefined (reading 'msie')\n at $.\u003Ccomputed>.disableTextSelection (/wp-content/plugins/subscribr/lib/mindshare-options-framework/lib/iphone-style-checkboxes/iphone-style-checkboxes.js:53:20)\n at new $.\u003Ccomputed> (/wp-content/plugins/subscribr/lib/mindshare-options-framework/lib/iphone-style-checkboxes/iphone-style-checkboxes.js:20:8)\n at HTMLInputElement.\u003Canonymous> (/wp-content/plugins/subscribr/lib/mindshare-options-framework/lib/iphone-style-checkboxes/iphone-style-checkboxes.js:168:31)\n at Function.each (/wp-includes/js/jquery/jquery.min.js?ver=3.7.0:2:3129)\n at e.\u003Ccomputed>.each (/wp-includes/js/jquery/jquery.min.js?ver=3.7.0:2:1594)\n at $.fn.\u003Ccomputed> [as iphoneStyle] (/wp-content/plugins/subscribr/lib/mindshare-options-framework/lib/iphone-style-checkboxes/iphone-style-checkboxes.js:167:14)\n at HTMLDocument.\u003Canonymous> (/wp-content/plugins/subscribr/lib/mindshare-options-framework/js/mindshare-options-framework.js:166:25)\n at e (/wp-includes/js/jquery/jquery.min.js?ver=3.7.0:2:26990)\n at t (/wp-includes/js/jquery/jquery.min.js?ver=3.7.0:2:27292)" undefined
- > GET request to /wp-admin/options-general.php?page=subscribr-settings
- > Javascript (severe) in unknown
/wp-includes/js/jquery/jquery.min.js?ver=3.7.0 1:28721 Uncaught TypeError: Cannot read properties of undefined (reading 'msie')
Optimizations
Plugin configuration 97% from 29 tests
readme.txt 94% from 16 tests
The readme.txt file describes your plugin functionality and requirements and it is parsed to prepare the your plugin's listing
Please fix the following attributes:
- Screenshots: Screenshot #1 (The user profile options screenshot-2.png) image missing
subscribr/subscribr.php Passed 13 tests
The main PHP script in "Subscribr" version 0.1.9.1 is automatically included on every request by WordPress
124 characters long description:
Allows WordPress users to subscribe to email notifications for new posts, pages, and custom types, filterable by taxonomies.
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | This is a short overview of programming languages used in this plugin, detecting executable files
No dangerous file extensions were detected12,004 lines of code in 29 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
JavaScript | 10 | 859 | 895 | 7,718 |
PHP | 12 | 511 | 2,079 | 3,651 |
CSS | 5 | 35 | 39 | 629 |
Markdown | 2 | 2 | 0 | 6 |
PHP code Passed 2 tests
An short overview of logical lines of code, cyclomatic complexity, and other code metrics
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 | 94.80 |
▷ Minimum class complexity | 7.00 |
▷ Maximum class complexity | 326.00 |
Average method complexity | 3.81 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 31.00 |
Code structure | ||
---|---|---|
Namespaces | 0 | |
Interfaces | 0 | |
Traits | 0 | |
Classes | 5 | |
▷ Abstract classes | 0 | 0.00% |
▷ Concrete classes | 5 | 100.00% |
▷ Final classes | 0 | 0.00% |
Methods | 167 | |
▷ Static methods | 6 | 3.59% |
▷ Public methods | 164 | 98.20% |
▷ Protected methods | 0 | 0.00% |
▷ Private methods | 3 | 1.80% |
Functions | 1 | |
▷ Named functions | 1 | 100.00% |
▷ Anonymous functions | 0 | 0.00% |
Constants | 7 | |
▷ Global constants | 7 | 100.00% |
▷ Class constants | 0 | 0.00% |
▷ Public constants | 0 | 0.00% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
It is recommended to compress PNG files in your plugin to minimize bandwidth usage
14 compressed PNG files occupy 0.25MB
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
lib/mindshare-options-framework/lib/iphone-style-checkboxes/images/slider_center.png | 0.25KB | 0.35KB | 0.00% |
lib/chosen/chosen-sprite.png | 0.63KB | 0.88KB | 0.00% |
lib/chosen/chosen-sprite@2x.png | 0.85KB | 0.83KB | ▼ 3.10% |
lib/mindshare-options-framework/img/edit.png | 0.70KB | 0.72KB | 0.00% |
lib/mindshare-options-framework/lib/iphone-style-checkboxes/images/slider_right.png | 0.31KB | 0.41KB | 0.00% |