Benchmarks
Plugin footprint 65% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | Checking the installer triggered no errors
The plugin installed successfully, without throwing any errors or notices
Server metrics [RAM: ▲0.50MB] [CPU: ▼4.31ms] Passed 4 tests
A check of server-side resources used by Upcasted S3 Offload - AWS S3, Digital Ocean Spaces, Backblaze, Minio and more
Normal server usage
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 3.98 ▲0.52 | 40.69 ▼3.84 |
Dashboard /wp-admin | 3.82 ▲0.48 | 61.61 ▼5.78 |
Posts /wp-admin/edit.php | 3.87 ▲0.52 | 54.55 ▼0.53 |
Add New Post /wp-admin/post-new.php | 6.36 ▲0.47 | 93.21 ▼7.10 |
Media Library /wp-admin/upload.php | 3.75 ▲0.52 | 51.59 ▲14.91 |
Freemius Debug [v.2.4.3] /wp-admin/admin.php?page=freemius | 3.92 | 36.90 |
S3 Offload Settings /wp-admin/upload.php?page=upcasted-s3-offload-panel | 3.96 | 34.92 |
Server storage [IO: ▲38.53MB] [DB: ▲0.00MB] 67% from 3 tests
Input-output and database impact of this plugin
Just a few items left to fix
- Filesystem usage must be lower than 25MB (currently using 38.53MB)
Filesystem: 3,602 new files
Database: no new tables, 10 new options
New WordPress options |
---|
widget_theysaidso_widget |
widget_recent-posts |
fs_debug_mode |
fs_accounts |
can_compress_scripts |
widget_recent-comments |
fs_active_plugins |
fs_gdpr |
theysaidso_admin_options |
db_upgraded |
Browser metrics Passed 4 tests
Upcasted S3 Offload - AWS S3, Digital Ocean Spaces, Backblaze, Minio and more: an overview of browser usage
Minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,832 ▲86 | 13.20 ▼1.11 | 1.70 ▼0.47 | 31.92 ▼10.48 |
Dashboard /wp-admin | 2,235 ▲47 | 5.88 ▲0.10 | 108.87 ▲2.40 | 44.67 ▲2.57 |
Posts /wp-admin/edit.php | 2,124 ▲35 | 2.05 ▼0.02 | 41.61 ▲0.67 | 38.31 ▲1.64 |
Add New Post /wp-admin/post-new.php | 1,532 ▼10 | 23.45 ▲5.16 | 663.92 ▲26.08 | 52.19 ▲2.60 |
Media Library /wp-admin/upload.php | 1,420 ▲32 | 4.16 ▼0.05 | 112.57 ▲10.17 | 49.56 ▲5.54 |
Freemius Debug [v.2.4.3] /wp-admin/admin.php?page=freemius | 1,067 | 1.80 | 25.43 | 28.73 |
S3 Offload Settings /wp-admin/upload.php?page=upcasted-s3-offload-panel | 992 | 1.71 | 27.45 | 55.11 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 50% 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
- This plugin did not uninstall without warnings or errors
- > Notice in wp-content/plugins/upcasted-s3-offload/freemius/includes/class-freemius.php+8575
Undefined property: stdClass::$plugins
- Zombie WordPress options detected upon uninstall: 10 options
- fs_gdpr
- widget_recent-comments
- fs_active_plugins
- widget_theysaidso_widget
- widget_recent-posts
- db_upgraded
- fs_accounts
- theysaidso_admin_options
- can_compress_scripts
- fs_debug_mode
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 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
- 2× PHP files output text when accessed directly:
- > /wp-content/plugins/upcasted-s3-offload/vendor/bin/jp.php
- > /wp-content/plugins/upcasted-s3-offload/vendor/mtdowling/jmespath.php/bin/jp.php
- 2052× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Class 'Aws\\AwsClient' not found in wp-content/plugins/upcasted-s3-offload/vendor/aws/aws-sdk-php/src/SnowDeviceManagement/SnowDeviceManagementClient.php:35
- > PHP Fatal error
Uncaught Error: Interface 'Psr\\Http\\Message\\MessageInterface' not found in wp-content/plugins/upcasted-s3-offload/vendor/psr/http-message/src/RequestInterface.php:24
- > PHP Fatal error
Uncaught Error: Class 'Aws\\Common\\Enum' not found in wp-content/plugins/upcasted-s3-offload/vendor/aws/aws-sdk-php/src/Aws/Ec2/Enum/DiskImageFormat.php:24
- > PHP Fatal error
Uncaught Error: Class 'Aws\\ElastiCache\\Exception\\ElastiCacheException' not found in wp-content/plugins/upcasted-s3-offload/vendor/aws/aws-sdk-php/src/Aws/ElastiCache/Exception/InsufficientCacheClusterCapacityException.php:22
- > PHP Fatal error
Uncaught Error: Class 'GuzzleHttp\\Promise\\RejectionException' not found in wp-content/plugins/upcasted-s3-offload/vendor/guzzlehttp/promises/src/AggregateException.php:8
- > PHP Fatal error
Uncaught Error: Class 'Aws\\Route53\\Exception\\Route53Exception' not found in wp-content/plugins/upcasted-s3-offload/vendor/aws/aws-sdk-php/src/Aws/Route53/Exception/InvalidChangeBatchException.php:22
- > PHP Fatal error
Uncaught Error: Class 'PHPUnit\\Framework\\TestCase' not found in wp-content/plugins/upcasted-s3-offload/vendor/symfony/event-dispatcher/Tests/EventTest.php:21
- > PHP Fatal error
Uncaught Error: Class 'PHPUnit\\Framework\\TestCase' not found in wp-content/plugins/upcasted-s3-offload/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php:18
- > PHP Fatal error
Uncaught Error: Class 'Aws\\Exception\\AwsException' not found in wp-content/plugins/upcasted-s3-offload/vendor/aws/aws-sdk-php/src/MediaStoreData/Exception/MediaStoreDataException.php:9
- > PHP Fatal error
Uncaught Error: Class 'Guzzle\\Tests\\GuzzleTestCase' not found in wp-content/plugins/upcasted-s3-offload/vendor/guzzle/guzzle/tests/Guzzle/Tests/Plugin/Cache/CachePluginTest.php:21
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
No browser issues were found
Optimizations
Plugin configuration 96% from 29 tests
readme.txt Passed 16 tests
It's important to format your readme.txt file correctly as it is parsed for the public listing of your plugin
5 plugin tags: minio, amazon s3, aws s3, digital ocean spaces, s3
upcasted-s3-offload/upcasted-s3-offload.php 92% from 13 tests
"Upcasted S3 Offload - AWS S3, Digital Ocean Spaces, Backblaze, Minio and more" version 3.0.2's primary PHP file adds more information about the plugin and serves as the entry point for WordPress
You should first fix the following items:
- Plugin Name: A shorter plugin name is better (currently 77 characters long instead of max. 70)
Code Analysis 3% from 3 tests
File types 0% from 1 test
🔸 Test weight: 35 | Executable files are not allowed as they can serve as attack vectors
It is important to fix the following items
- You should never include executable (binary) or otherwise dangerous files in your plugin
- .bat - Batch File in Windows
- ☣ wp-content/plugins/upcasted-s3-offload/vendor/aws/aws-crt-php/run_tests.bat
- .bat - Batch File in Windows
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 3,348 | 26,240 | 97,704 | 314,455 |
Markdown | 29 | 1,497 | 0 | 4,918 |
JSON | 50 | 21 | 0 | 2,293 |
reStructuredText | 31 | 1,271 | 1,823 | 1,883 |
C | 10 | 250 | 89 | 882 |
JavaScript | 6 | 70 | 97 | 491 |
C/C++ Header | 2 | 105 | 38 | 441 |
CSS | 14 | 59 | 2 | 420 |
YAML | 8 | 51 | 57 | 270 |
XML | 5 | 29 | 11 | 238 |
Bourne Shell | 3 | 19 | 4 | 176 |
make | 2 | 28 | 5 | 133 |
HTML | 2 | 16 | 0 | 95 |
GLSL | 1 | 17 | 0 | 55 |
Python | 1 | 22 | 23 | 49 |
Ant | 1 | 10 | 1 | 34 |
m4 | 1 | 4 | 4 | 22 |
Pascal | 1 | 5 | 15 | 14 |
Bourne Again Shell | 1 | 5 | 0 | 13 |
INI | 2 | 0 | 0 | 3 |
DOS Batch | 1 | 2 | 0 | 2 |
PHP code 50% from 2 tests
Cyclomatic complexity and code structure are the fingerprint of this plugin
It is recommended to fix the following
- Please reduce cyclomatic complexity of classes to less than 1000 (currently 2,910)
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.36 |
Average class complexity | 5.73 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 2,910.00 |
Average method complexity | 2.51 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 86.00 |
Code structure | ||
---|---|---|
Namespaces | 784 | |
Interfaces | 131 | |
Traits | 25 | |
Classes | 2,299 | |
▷ Abstract classes | 57 | 2.48% |
▷ Concrete classes | 2,242 | 97.52% |
▷ Final classes | 45 | 2.01% |
Methods | 7,949 | |
▷ Static methods | 984 | 12.38% |
▷ Public methods | 6,409 | 80.63% |
▷ Protected methods | 504 | 6.34% |
▷ Private methods | 1,036 | 13.03% |
Functions | 849 | |
▷ Named functions | 303 | 35.69% |
▷ Anonymous functions | 546 | 64.31% |
Constants | 1,474 | |
▷ Global constants | 117 | 7.94% |
▷ Class constants | 1,357 | 92.06% |
▷ Public constants | 1,357 | 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
5 PNG files occupy 0.27MB with 0.12MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
freemius/assets/img/theme-icon.png | 10.97KB | 5.78KB | ▼ 47.37% |
vendor/guzzle/guzzle/docs/_static/guzzle-icon.png | 0.78KB | 0.94KB | 0.00% |
vendor/guzzle/guzzle/docs/_static/logo.png | 241.87KB | 69.68KB | ▼ 71.19% |
admin/assets/img/logo-upcasted.png | 11.93KB | 4.87KB | ▼ 59.22% |
freemius/assets/img/plugin-icon.png | 9.16KB | 5.26KB | ▼ 42.58% |