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: ▲2.10MB] [CPU: ▲6.49ms] Passed 4 tests
Server-side resources used by MDirector Newsletter
Server-side resource usage in normal parameters
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 5.68 ▲2.22 | 52.38 ▲11.05 |
Dashboard /wp-admin | 5.52 ▲2.21 | 55.60 ▲2.77 |
Posts /wp-admin/edit.php | 5.57 ▲2.21 | 59.98 ▲12.24 |
Add New Post /wp-admin/post-new.php | 7.66 ▲1.77 | 96.06 ▼0.12 |
Media Library /wp-admin/upload.php | 5.44 ▲2.21 | 48.44 ▲13.28 |
Server storage [IO: ▲2.71MB] [DB: ▲0.00MB] Passed 3 tests
Filesystem and database footprint
The plugin installed successfully
Filesystem: 680 new files
Database: no new tables, 7 new options
New WordPress options |
---|
widget_mdirectorwidget |
widget_recent-comments |
can_compress_scripts |
db_upgraded |
widget_theysaidso_widget |
theysaidso_admin_options |
widget_recent-posts |
Browser metrics Passed 4 tests
An overview of browser requirements for MDirector Newsletter
This plugin has a minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,936 ▲190 | 13.63 ▼0.68 | 6.23 ▲4.44 | 44.88 ▼2.19 |
Dashboard /wp-admin | 2,233 ▲45 | 5.89 ▲1.00 | 109.67 ▼3.12 | 83.53 ▲40.60 |
Posts /wp-admin/edit.php | 2,118 ▲26 | 2.04 ▲0.05 | 35.96 ▼0.09 | 30.01 ▼5.85 |
Add New Post /wp-admin/post-new.php | 6,252 ▲4,733 | 25.92 ▲2.51 | 934.20 ▲272.19 | 36.66 ▼17.96 |
Media Library /wp-admin/upload.php | 1,406 ▲21 | 4.32 ▲0.13 | 98.48 ▼1.94 | 79.81 ▲30.35 |
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
These items require your attention
- Zombie WordPress options detected upon uninstall: 7 options
- db_upgraded
- widget_theysaidso_widget
- theysaidso_admin_options
- widget_recent-posts
- widget_recent-comments
- widget_mdirectorwidget
- can_compress_scripts
Smoke tests 50% 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 0% 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
Please fix the following
- 1× GET requests to PHP files return non-empty strings:
- > /wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/install.php
- 257× PHP files trigger server errors when accessed directly (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Call to undefined function MDirectorNewsletter\\includes\\plugin_dir_path() in wp-content/plugins/mdirector-newsletter/includes/class-mdirector-newsletter-utils.php:14
- > PHP Fatal error
Uncaught Error: Class 'Monolog\\Formatter\ormalizerFormatter' not found in wp-content/plugins/mdirector-newsletter/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php:23
- > PHP Fatal error
Uncaught Error: Class 'Twig\ode\ode' not found in wp-content/plugins/mdirector-newsletter/vendor/twig/twig/src/Node/IncludeNode.php:23
- > PHP Fatal error
Uncaught Error: Class 'Twig\ode\\Expression\\Binary\\AbstractBinary' not found in wp-content/plugins/mdirector-newsletter/vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php:16
- > PHP Fatal error
Uncaught Error: Interface 'Twig\odeVisitor\odeVisitorInterface' not found in wp-content/plugins/mdirector-newsletter/vendor/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php:24
- > PHP Fatal error
Uncaught Error: Class 'Monolog\\Handler\\AbstractHandler' not found in wp-content/plugins/mdirector-newsletter/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php:30
- > PHP Fatal error
Uncaught Error: Interface 'Twig_TokenParserBrokerInterface' not found in wp-content/plugins/mdirector-newsletter/vendor/twig/twig/lib/Twig/TokenParserBroker.php:22
- > PHP Fatal error
Uncaught Error: Class 'Monolog\\Handler\\AbstractProcessingHandler' not found in wp-content/plugins/mdirector-newsletter/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php:28
- > PHP Fatal error
Uncaught Error: Class 'Twig\\TokenParser\\AbstractTokenParser' not found in wp-content/plugins/mdirector-newsletter/vendor/twig/twig/src/TokenParser/FlushTokenParser.php:24
- > PHP Fatal error
Uncaught Error: Class 'Monolog\\Handler\\AbstractProcessingHandler' not found in wp-content/plugins/mdirector-newsletter/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php:27
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
Everything seems fine on the user side
Optimizations
Plugin configuration 90% from 29 tests
readme.txt 81% from 16 tests
Perhaps the most important file in your plugin readme.txt gets parsed in order to generate the public listing of your plugin
Attributes that need to be fixed:
- Plugin Name: "Plugin Name" should be replaced with the name of your plugin on the first line (
=== mdirector-newsletter ===
) - Contributors: The plugin tags were not defined
- Contributors: The plugin contributors field is missing
mdirector-newsletter/mdirector-newsletter.php Passed 13 tests
The primary PHP file in "MDirector Newsletter" version 4.3.5 is used by WordPress to initiate all plugin functionality
92 characters long description:
Official MDirector plugin for WordPress. Add MDirector sign-up forms to your WordPress site.
Code Analysis 5% from 3 tests
File types 0% from 1 test
🔸 Test weight: 35 | A short glimpse at programming languages used with this plugin and a check that no dangerous files are present
Please fix the following items
- You should never include executable (binary) or otherwise dangerous files in your plugin
- .prc - Palm Resource Code File in Palm Desktop
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_ADD_CONSUMER_REQUEST_TOKEN.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_ADD_LOG.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_ADD_SERVER_TOKEN.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_AUTH_CONSUMER_REQ_TOKEN.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_CHECK_SERVER_NONCE.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_CONSUMER_STATIC_SAVE.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_COUNT_CONSUMER_ACCESS_TOKEN.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_COUNT_SERVICE_TOKENS.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_DELETE_CONSUMER.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_DELETE_SERVER.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_DELETE_SERVER_TOKEN.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_DEL_CONSUMER_ACCESS_TOKEN.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_DEL_CONSUMER_REQUEST_TOKEN.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_EXCH_CONS_REQ_FOR_ACC_TOKEN.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_GET_CONSUMER.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_GET_CONSUMER_ACCESS_TOKEN.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_GET_CONSUMER_REQUEST_TOKEN.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_GET_CONSUMER_STATIC_SELECT.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_GET_SECRETS_FOR_SIGNATURE.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_GET_SECRETS_FOR_VERIFY.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_GET_SERVER.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_GET_SERVER_FOR_URI.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_GET_SERVER_TOKEN.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_GET_SERVER_TOKEN_SECRETS.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_LIST_CONSUMERS.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_LIST_CONSUMER_TOKENS.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_LIST_LOG.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_LIST_SERVERS.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_LIST_SERVER_TOKENS.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_SET_CONSUMER_ACC_TOKEN_TTL.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_SET_SERVER_TOKEN_TTL.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_UPDATE_CONSUMER.prc
- ☣ wp-content/plugins/mdirector-newsletter/lib/oauth-php/library/store/oracle/OracleDB/3_Procedures/SP_UPDATE_SERVER.prc
- .prc - Palm Resource Code File in Palm Desktop
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 551 | 7,667 | 15,480 | 34,223 |
PO File | 9 | 1,224 | 0 | 2,555 |
Twig | 3 | 136 | 0 | 1,257 |
Oracle PL/SQL | 33 | 240 | 127 | 1,166 |
JavaScript | 3 | 151 | 131 | 778 |
CSS | 2 | 146 | 3 | 693 |
JSON | 6 | 0 | 0 | 505 |
Markdown | 5 | 148 | 0 | 476 |
SQL | 4 | 94 | 2 | 429 |
HTML | 2 | 30 | 3 | 247 |
YAML | 2 | 37 | 0 | 121 |
reStructuredText | 1 | 9 | 5 | 13 |
PHP code Passed 2 tests
An overview of cyclomatic complexity and code structure
There were no cyclomatic complexity issued detected
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.35 |
Average class complexity | 7.64 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 191.00 |
Average method complexity | 2.68 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 69.00 |
Code structure | ||
---|---|---|
Namespaces | 38 | |
Interfaces | 35 | |
Traits | 4 | |
Classes | 496 | |
▷ Abstract classes | 26 | 5.24% |
▷ Concrete classes | 470 | 94.76% |
▷ Final classes | 4 | 0.85% |
Methods | 2,258 | |
▷ Static methods | 107 | 4.74% |
▷ Public methods | 1,717 | 76.04% |
▷ Protected methods | 332 | 14.70% |
▷ Private methods | 209 | 9.26% |
Functions | 119 | |
▷ Named functions | 92 | 77.31% |
▷ Anonymous functions | 27 | 22.69% |
Constants | 193 | |
▷ Global constants | 9 | 4.66% |
▷ Class constants | 184 | 95.34% |
▷ Public constants | 184 | 100.00% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
Often times overlooked, PNG files can occupy unnecessary space in your plugin
12 PNG files occupy 0.32MB with 0.22MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
assets/wpml-logo-64.png | 3.39KB | 0.91KB | ▼ 73.04% |
assets/logo_md.png | 3.29KB | 1.44KB | ▼ 56.19% |
assets/settings-api.png | 121.00KB | 59.09KB | ▼ 51.17% |
assets/mdirector-welcome.png | 165.25KB | 58.49KB | ▼ 64.61% |
assets/ajax-loader.png | 3.15KB | 0.29KB | ▼ 90.80% |