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: ▲3.70MB] [CPU: ▲21.17ms] Passed 4 tests
This is a short check of server-side resources used by UpdraftPlus: WordPress Backup & Migration Plugin
No issues were detected with server-side resource usage
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 5.70 ▲2.24 | 58.98 ▲19.48 |
Dashboard /wp-admin | 7.79 ▲4.48 | 81.34 ▲33.30 |
Posts /wp-admin/edit.php | 7.79 ▲4.43 | 65.87 ▲19.70 |
Add New Post /wp-admin/post-new.php | 9.53 ▲3.65 | 105.23 ▲12.21 |
Media Library /wp-admin/upload.php | 7.79 ▲4.56 | 69.07 ▲37.92 |
UpdraftPlus Backups /wp-admin/options-general.php?page=updraftplus | 9.87 | 157.68 |
Server storage [IO: ▲24.38MB] [DB: ▲0.11MB] 67% from 3 tests
Filesystem and database footprint
Please try to fix the following items
- There were 3 files (0.24KB) illegally modified outside of "wp-content/plugins/updraftplus/" and "wp-content/uploads/"
- (new file) wp-content/updraft/web.config
- (new file) wp-content/updraft/index.html
- (new file) wp-content/updraft/.htaccess
Filesystem: 1,215 new files
Database: no new tables, 24 new options
New WordPress options |
---|
updraft_s3generic |
updraft_openstack |
widget_theysaidso_widget |
updraft_ftp |
updraft_sftp |
widget_recent-posts |
theysaidso_admin_options |
updraft_googlecloud |
updraft_updraftvault |
updraft_dropbox |
... |
Browser metrics Passed 4 tests
This is an overview of browser requirements for UpdraftPlus: WordPress Backup & Migration Plugin
Minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,875 ▲113 | 14.68 ▲0.40 | 1.74 ▼0.07 | 42.11 ▼4.10 |
Dashboard /wp-admin | 2,277 ▲100 | 5.57 ▲0.03 | 95.87 ▼3.99 | 42.70 ▼1.70 |
Posts /wp-admin/edit.php | 2,136 ▲36 | 2.00 ▼0.03 | 37.94 ▼2.36 | 32.27 ▼5.28 |
Add New Post /wp-admin/post-new.php | 1,555 ▲20 | 23.23 ▲4.91 | 682.68 ▲70.25 | 71.09 ▲2.58 |
Media Library /wp-admin/upload.php | 1,436 ▲39 | 4.23 ▲0.05 | 105.26 ▲2.86 | 46.38 ▲1.68 |
UpdraftPlus Backups /wp-admin/options-general.php?page=updraftplus | 6,421 | 6.53 | 281.17 | 99.67 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.11MB] 75% from 4 tests
🔸 Tests weight: 35 | All plugins must uninstall correctly, removing their source code and extra database tables they might have created
You still need to fix the following
- This plugin does not fully uninstall, leaving 24 options in the database
- updraft_dropbox
- updraft_openstack
- updraft_s3
- updraft_pcloud
- updraft_azure
- db_upgraded
- updraft_webdav
- updraft_s3generic
- updraft_onedrive
- widget_recent-posts
- ...
Smoke tests 50% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | A smoke test targeting server-side errors
The smoke test was a success, however most plugin functionality was not tested
SRP 0% from 2 tests
🔹 Tests weight: 20 | The single-responsibility principle: PHP files have to remain inert when accessed directly, throwing no errors and performing no actions
Please take a closer look at the following
- 130× PHP files output non-empty strings when accessed directly via GET requests (only 10 are shown):
- > /wp-content/plugins/updraftplus/templates/wp-admin/advanced/db-size.php
- > /wp-content/plugins/updraftplus/templates/wp-admin/settings/upload-backups-modal.php
- > /wp-content/plugins/updraftplus/includes/class-manipulation-functions.php
- > /wp-content/plugins/updraftplus/templates/wp-admin/settings/temporary-clone.php
- > /wp-content/plugins/updraftplus/methods/dropbox.php
- > /wp-content/plugins/updraftplus/includes/class-updraft-dashboard-news.php
- > /wp-content/plugins/updraftplus/methods/template.php
- > /wp-content/plugins/updraftplus/class-updraftplus.php
- > /wp-content/plugins/updraftplus/methods/ftp.php
- > /wp-content/plugins/updraftplus/central/modules/core.php
- 315× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Interface 'Guzzle\\Common\\Exception\\GuzzleException' not found in wp-content/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/Exception/BatchTransferException.php:12
- > PHP Fatal error
Uncaught Error: Interface 'Guzzle\\Parser\\Message\\MessageParserInterface' not found in wp-content/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Parser/Message/AbstractMessageParser.php:8
- > PHP Fatal error
Uncaught Error: Class 'Eher\\OAuth\\SignatureMethod\\SignatureMethod' not found in wp-content/plugins/updraftplus/vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php:13
- > PHP Fatal error
Uncaught Error: Interface 'Guzzle\\Http\\QueryAggregator\\QueryAggregatorInterface' not found in wp-content/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/CommaAggregator.php:10
- > PHP Fatal error
Uncaught Error: Class 'Guzzle\\Service\\Command\\LocationVisitor\\Request\\AbstractRequestVisitor' not found in wp-content/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Service/Command/LocationVisitor/Request/JsonVisitor.php:12
- > PHP Fatal error
Uncaught Error: Class 'phpseclib\\Crypt\\Base' not found in wp-content/plugins/updraftplus/vendor/phpseclib/phpseclib/phpseclib/Crypt/Rijndael.php:64
- > PHP Fatal error
Uncaught Error: Interface 'Guzzle\\Batch\\BatchInterface' not found in wp-content/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Batch/AbstractBatchDecorator.php:8
- > PHP Fatal error
Uncaught Error: Interface 'Psr\\Http\\Message\\StreamInterface' not found in wp-content/plugins/updraftplus/vendor/guzzlehttp/psr7/src/DroppingStream.php:13
- > PHP Fatal error
Uncaught Error: Interface 'Psr\\Http\\Message\\MessageInterface' not found in wp-content/plugins/updraftplus/vendor/psr/http-message/src/RequestInterface.php:26
- > PHP Fatal error
Uncaught Error: Class 'Guzzle\\Log\\AbstractLogAdapter' not found in wp-content/plugins/updraftplus/vendor/guzzle/guzzle/src/Guzzle/Log/MonologLogAdapter.php:11
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | Just a short smoke test targeting errors on the browser (console and network errors and warnings)
Everything seems fine on the user side
Optimizations
Plugin configuration 93% from 29 tests
readme.txt 94% from 16 tests
The readme.txt file is important because it is parsed by WordPress.org for the public listing of your plugin
Attributes that need to be fixed:
- Screenshots: These screenshots do not have images: #5 (Restoration shows as successful), #6 (To migrate, first click 'Database', 'Plugins' etc. to download these backups to your local machine.), #7 (On the destination site, 'upload backup files' from the source site to restore and migrate to the new destination.)
updraftplus/updraftplus.php 92% from 13 tests
"UpdraftPlus: WordPress Backup & Migration Plugin" version 1.23.13's main PHP file describes plugin functionality and also serves as the entry point to any WordPress functionality
Please make the necessary changes and fix the following:
- Description: Keep the plugin description shorter than 140 characters (currently 147 characters long)
Code Analysis 95% from 3 tests
File types Passed 1 test
🔸 Test weight: 35 | An overview of files in this plugin; executable files are not allowed
Success! There were no dangerous files found in this plugin324,874 lines of code in 1,026 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PO File | 32 | 67,808 | 83,520 | 136,691 |
PHP | 828 | 23,739 | 55,343 | 133,391 |
JavaScript | 35 | 7,119 | 7,815 | 35,109 |
CSS | 34 | 1,686 | 197 | 10,719 |
Markdown | 34 | 1,623 | 0 | 5,246 |
JSON | 49 | 67 | 0 | 3,284 |
Sass | 1 | 28 | 0 | 167 |
XML | 7 | 16 | 12 | 142 |
HTML | 1 | 16 | 0 | 41 |
Ant | 1 | 10 | 1 | 34 |
YAML | 1 | 2 | 0 | 25 |
Dockerfile | 1 | 8 | 0 | 10 |
Perl | 1 | 4 | 1 | 8 |
SVG | 1 | 0 | 0 | 7 |
PHP code 0% from 2 tests
This plugin's cyclomatic complexity and code structure detailed below
It is recommended to fix the following
- Class cyclomatic complexity has to be reduced to less than 1000 (currently 1,523)
- Cyclomatic complexity of methods has to be reduced to less than 100 (currently 286)
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.46 |
Average class complexity | 21.82 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 1,523.00 |
Average method complexity | 3.94 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 286.00 |
Code structure | ||
---|---|---|
Namespaces | 96 | |
Interfaces | 74 | |
Traits | 4 | |
Classes | 896 | |
▷ Abstract classes | 49 | 5.47% |
▷ Concrete classes | 847 | 94.53% |
▷ Final classes | 29 | 3.42% |
Methods | 7,239 | |
▷ Static methods | 515 | 7.11% |
▷ Public methods | 6,396 | 88.35% |
▷ Protected methods | 310 | 4.28% |
▷ Private methods | 533 | 7.36% |
Functions | 263 | |
▷ Named functions | 136 | 51.71% |
▷ Anonymous functions | 127 | 48.29% |
Constants | 737 | |
▷ Global constants | 157 | 21.30% |
▷ Class constants | 580 | 78.70% |
▷ Public constants | 580 | 100.00% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
All PNG images should be compressed to minimize bandwidth usage for end users
106 compressed PNG files occupy 0.55MB
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
images/notices/locksettings.png | 1.25KB | 1.37KB | 0.00% |
includes/images/ui-icons_222222_256x240.png | 4.33KB | 4.17KB | ▼ 3.52% |
images/addons-images/azure.png | 5.54KB | 5.77KB | 0.00% |
images/icons/googledrive.png | 1.88KB | 1.42KB | ▼ 24.22% |
images/other-plugins/updraft-central.png | 5.02KB | 3.32KB | ▼ 33.86% |