Benchmarks
Plugin footprint 82% 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: ▲4.11MB] [CPU: ▲19.98ms] 75% from 4 tests
Server-side resources used by Simple Newsletter Plugin - Noptin
Please fix the following
- CPU: Total CPU usage must kept under 500.00ms (currently 808.51ms on /wp-admin/admin.php?page=noptin-addons)
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 7.60 ▲4.14 | 66.65 ▲26.02 |
Dashboard /wp-admin | 7.42 ▲4.11 | 76.63 ▲20.48 |
Posts /wp-admin/edit.php | 7.48 ▲4.13 | 75.90 ▲23.74 |
Add New Post /wp-admin/post-new.php | 10.32 ▲4.43 | 117.81 ▲9.69 |
Media Library /wp-admin/upload.php | 7.28 ▲4.05 | 77.43 ▲38.35 |
Subscription Forms /wp-admin/edit.php?post_type=noptin-form | 7.46 | 75.52 |
Automation Rules /wp-admin/admin.php?page=noptin-automation-rules | 7.63 | 67.84 |
Email Campaigns /wp-admin/admin.php?page=noptin-email-campaigns | 7.51 | 136.20 |
Dashboard /wp-admin/admin.php?page=noptin | 7.56 | 73.98 |
Extensions /wp-admin/admin.php?page=noptin-addons | 7.49 | 808.51 |
Welcome Wizzard /wp-admin/index.php?page=noptin-welcome-wizzard | 7.30 | 80.57 |
Email Subscribers /wp-admin/admin.php?page=noptin-subscribers | 7.30 | 103.46 |
Tools /wp-admin/admin.php?page=noptin-tools | 7.37 | 74.68 |
Settings /wp-admin/admin.php?page=noptin-settings | 7.77 | 87.81 |
Server storage [IO: ▲5.98MB] [DB: ▲0.02MB] Passed 3 tests
A short overview of filesystem and database impact
This plugin was installed successfully
Filesystem: 487 new files
Database: 3 new tables, 13 new options
New tables |
---|
wp_noptin_subscribers |
wp_noptin_subscriber_meta |
wp_noptin_automation_rules |
New WordPress options |
---|
_noptin_has_welcomed |
widget_noptin_widget |
widget_recent-posts |
noptin_options |
theysaidso_admin_options |
widget_noptin_widget_premade |
can_compress_scripts |
widget_recent-comments |
widget_theysaidso_widget |
db_upgraded |
... |
Browser metrics Passed 4 tests
Simple Newsletter Plugin - Noptin: an overview of browser usage
This plugin has a minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,875 ▲89 | 13.19 ▼1.25 | 2.13 ▲0.09 | 38.05 ▼12.13 |
Dashboard /wp-admin | 2,271 ▲64 | 5.79 ▲0.83 | 98.78 ▼12.72 | 42.34 ▲4.62 |
Posts /wp-admin/edit.php | 2,153 ▲53 | 2.00 ▼0.05 | 37.50 ▼3.15 | 31.78 ▼12.19 |
Add New Post /wp-admin/post-new.php | 1,567 ▲22 | 23.18 ▲0.11 | 616.05 ▼68.65 | 92.50 ▲11.33 |
Media Library /wp-admin/upload.php | 1,453 ▲53 | 4.19 ▲0.00 | 100.81 ▼15.42 | 44.53 ▼4.19 |
Subscription Forms /wp-admin/edit.php?post_type=noptin-form | 1,460 | 5.44 | 98.46 | 34.56 |
Automation Rules /wp-admin/admin.php?page=noptin-automation-rules | 1,387 | 3.66 | 47.52 | 28.92 |
Email Campaigns /wp-admin/admin.php?page=noptin-email-campaigns | 1,167 | 3.54 | 51.21 | 71.43 |
Dashboard /wp-admin/admin.php?page=noptin | 1,368 | 3.75 | 52.08 | 89.91 |
Extensions /wp-admin/admin.php?page=noptin-addons | 2,002 | 3.44 | 42.24 | 103.25 |
Welcome Wizzard /wp-admin/index.php?page=noptin-welcome-wizzard | 1,223 | 8.46 | 191.81 | 29.86 |
Email Subscribers /wp-admin/admin.php?page=noptin-subscribers | 1,630 | 8.52 | 248.57 | 40.06 |
Tools /wp-admin/admin.php?page=noptin-tools | 1,137 | 3.59 | 49.11 | 31.26 |
Settings /wp-admin/admin.php?page=noptin-settings | 4,611 | 6.93 | 133.49 | 55.06 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.02MB] 75% from 4 tests
🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
It is recommended to fix the following
- Zombie WordPress options detected upon uninstall: 9 options
- db_upgraded
- can_compress_scripts
- widget_noptin_widget_premade
- theysaidso_admin_options
- widget_recent-posts
- _noptin_has_welcomed
- widget_recent-comments
- widget_noptin_widget
- widget_theysaidso_widget
Smoke tests 50% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | This is a shallow check for server-side errors
Even though everything seems fine, this is not an exhaustive test
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 items
- 2× GET requests to PHP files return non-empty strings:
- > /wp-content/plugins/newsletter-optin-box/templates/email-templates/merriweather/styles.php
- > /wp-content/plugins/newsletter-optin-box/templates/email-templates/paste/styles.php
- 75× PHP files trigger server errors when accessed directly (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Call to undefined function apply_filters() in wp-content/plugins/newsletter-optin-box/templates/email-templates/paste/logo.php:1
- > PHP Warning
include_once(): Failed opening 'ABSPATHwp-admin/includes/class-wp-list-table.php' for inclusion (include_path='.:/usr/share/php') in wp-content/plugins/newsletter-optin-box/includes/emails/admin/class-list-table.php on line 7
- > PHP Fatal error
Uncaught Error: Call to undefined function apply_filters() in wp-content/plugins/newsletter-optin-box/templates/email-templates/plain/logo.php:1
- > PHP Fatal error
Uncaught Error: Class 'PHPUnit\\Framework\\TestCase' not found in wp-content/plugins/newsletter-optin-box/vendor/symfony/css-selector/Tests/XPath/TranslatorTest.php:22
- > PHP Fatal error
Uncaught Error: Call to undefined function language_attributes() in wp-content/plugins/newsletter-optin-box/templates/actions-page.php:2
- > PHP Fatal error
Uncaught Error: Class 'PHPUnit\\Framework\\TestCase' not found in wp-content/plugins/newsletter-optin-box/vendor/symfony/css-selector/Tests/Parser/ReaderTest.php:17
- > PHP Fatal error
Uncaught Error: Class 'WP_List_Table' not found in wp-content/plugins/newsletter-optin-box/includes/admin/class-noptin-custom-content-table.php:14
- > PHP Fatal error
Uncaught Error: Interface 'Symfony\\Component\\CssSelector\\Parser\\ParserInterface' not found in wp-content/plugins/newsletter-optin-box/vendor/symfony/css-selector/Parser/Shortcut/ElementParser.php:28
- > PHP Fatal error
Uncaught Error: Class 'Symfony\\Component\\CssSelector\\Tests\ode\\AbstractNodeTest' not found in wp-content/plugins/newsletter-optin-box/vendor/symfony/css-selector/Tests/Node/NegationNodeTest.php:18
- > PHP Fatal error
Uncaught Error: Class 'Noptin_Async_Request' not found in wp-content/plugins/newsletter-optin-box/includes/class-noptin-background-process.php:17
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is just a short smoke test looking for browser issues
Everything seems fine on the user side
Optimizations
Plugin configuration 96% from 29 tests
readme.txt Passed 16 tests
Perhaps the most important file in your plugin readme.txt gets parsed in order to generate the public listing of your plugin
6 plugin tags: newsletter widget, email subscription, email opt-in, email popup, email newsletter form...
newsletter-optin-box/noptin.php 92% from 13 tests
The main file in "Simple Newsletter Plugin - Noptin" v. 2.0.5 serves as a complement to information provided in readme.txt and as the entry point to the plugin
You should first fix the following items:
- Main file name: Even though not officially enforced, the main plugin file should be the same as the plugin slug ("newsletter-optin-box.php" instead of "noptin.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
Good job! No executable or dangerous file extensions detected71,927 lines of code in 417 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 348 | 11,350 | 20,492 | 36,960 |
JavaScript | 36 | 4,274 | 3,503 | 21,279 |
PO File | 3 | 4,407 | 6,326 | 10,165 |
CSS | 15 | 184 | 59 | 2,561 |
HTML | 2 | 0 | 0 | 356 |
Markdown | 4 | 70 | 0 | 303 |
JSON | 6 | 0 | 0 | 226 |
XML | 2 | 7 | 0 | 76 |
SVG | 1 | 0 | 0 | 1 |
PHP code Passed 2 tests
Analyzing 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.41 |
Average class complexity | 17.37 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 140.00 |
Average method complexity | 2.81 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 79.00 |
Code structure | ||
---|---|---|
Namespaces | 26 | |
Interfaces | 6 | |
Traits | 0 | |
Classes | 231 | |
▷ Abstract classes | 21 | 9.09% |
▷ Concrete classes | 210 | 90.91% |
▷ Final classes | 2 | 0.95% |
Methods | 2,177 | |
▷ Static methods | 156 | 7.17% |
▷ Public methods | 1,957 | 89.89% |
▷ Protected methods | 155 | 7.12% |
▷ Private methods | 65 | 2.99% |
Functions | 201 | |
▷ Named functions | 188 | 93.53% |
▷ Anonymous functions | 13 | 6.47% |
Constants | 21 | |
▷ Global constants | 8 | 38.10% |
▷ Class constants | 13 | 61.90% |
▷ Public constants | 13 | 100.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
11 PNG files occupy 0.42MB with 0.15MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
includes/assets/images/double-bg.png | 30.44KB | 12.90KB | ▼ 57.62% |
includes/assets/images/mail-icon-alt.png | 5.40KB | 2.74KB | ▼ 49.23% |
includes/assets/images/avatar.png | 15.84KB | 6.25KB | ▼ 60.52% |
includes/assets/images/checkmark.png | 2.92KB | 2.51KB | ▼ 13.90% |
includes/assets/images/email-icon.png | 8.15KB | 8.12KB | 0.43% |