Benchmarks
Plugin footprint 65% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | Checking the installer triggered no errors
Installer ran successfully
Server metrics [RAM: ▲0.28MB] [CPU: ▼8.02ms] Passed 4 tests
Server-side resources used by WebSuite Push Notifier
No issues were detected with server-side resource usage
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 3.53 ▲0.07 | 35.22 ▼6.92 |
Dashboard /wp-admin | 3.67 ▲0.32 | 46.86 ▼16.55 |
Posts /wp-admin/edit.php | 3.84 ▲0.48 | 49.88 ▲0.78 |
Add New Post /wp-admin/post-new.php | 6.25 ▲0.36 | 93.61 ▼9.40 |
Media Library /wp-admin/upload.php | 3.59 ▲0.36 | 38.87 ▲3.12 |
WebSuite Push Notifier /wp-admin/admin.php?page=websuite-push-notifier | 3.65 | 44.23 |
Logs /wp-admin/admin.php?page=websuite-push-notifier-sub | 3.62 | 43.03 |
Server storage [IO: ▲30.31MB] [DB: ▲0.00MB] 67% from 3 tests
Analyzing filesystem and database footprints of this plugin
Please fix the following
- The filesystem usage should be lower than 25MB (currently using 30.31MB)
Filesystem: 3,949 new files
Database: 1 new table, 8 new options
New tables |
---|
wp_websuite_push_notifier_logs |
New WordPress options |
---|
db_upgraded |
category_children |
theysaidso_admin_options |
widget_theysaidso_widget |
websuite_push_notifier_db_version |
widget_recent-posts |
can_compress_scripts |
widget_recent-comments |
Browser metrics Passed 4 tests
WebSuite Push Notifier: an overview of browser usage
Normal browser usage
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,858 ▲87 | 14.32 ▼0.30 | 1.53 ▼0.37 | 35.80 ▼9.85 |
Dashboard /wp-admin | 2,264 ▲87 | 5.58 ▲0.06 | 82.41 ▼16.78 | 71.29 ▲28.08 |
Posts /wp-admin/edit.php | 2,472 ▲372 | 11.96 ▲10.01 | 309.55 ▲274.52 | 59.80 ▲24.21 |
Add New Post /wp-admin/post-new.php | 1,595 ▲67 | 23.04 ▼0.03 | 608.43 ▼45.24 | 50.94 ▼5.68 |
Media Library /wp-admin/upload.php | 1,472 ▲72 | 4.21 ▲0.07 | 88.84 ▼5.14 | 69.86 ▲27.42 |
WebSuite Push Notifier /wp-admin/admin.php?page=websuite-push-notifier | 1,702 | 11.79 | 115.48 | 58.27 |
Logs /wp-admin/admin.php?page=websuite-push-notifier-sub | 1,323 | 11.75 | 100.48 | 37.20 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 50% from 4 tests
🔸 Tests weight: 35 | It is important to correctly uninstall your plugin, without leaving any traces
You still need to fix the following
- This plugin does not fully uninstall, leaving 1 table in the database
- wp_websuite_push_notifier_logs
- The uninstall procedure has failed, leaving 8 options in the database
- db_upgraded
- category_children
- widget_recent-posts
- widget_recent-comments
- can_compress_scripts
- theysaidso_admin_options
- widget_theysaidso_widget
- websuite_push_notifier_db_version
Smoke tests 25% from 4 tests
Server-side errors 0% from 1 test
🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
These errors were triggered by the plugin
- > GET request to /wp-admin/admin.php?page=websuite-push-notifier
- > Notice in wp-content/plugins/websuite-push-notifier/admin/partials/websuite-push-notifier-admin-display.php+145
Undefined offset: 0
SRP 0% from 2 tests
🔹 Tests weight: 20 | It is important to ensure that your PHP files perform no action when accessed directly, respecting the single-responsibility principle
Please fix the following items
- 3× GET requests to PHP files return non-empty strings:
- > /wp-content/plugins/websuite-push-notifier/vendor/mtdowling/jmespath.php/bin/jp.php
- > /wp-content/plugins/websuite-push-notifier/admin/partials/settings-sub/websuite-push-notifier-inc-menu-settings.php
- > /wp-content/plugins/websuite-push-notifier/admin/partials/settings/websuite-push-notifier-inc-menu-settings.php
- 1919× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Interface 'Kreait\\Firebase\\Exception\\FirebaseException' not found in wp-content/plugins/websuite-push-notifier/libraries/firebase-php/src/Firebase/Exception/DatabaseException.php:7
- > PHP Fatal error
Uncaught Error: Class 'Aws\\Exception\\AwsException' not found in wp-content/plugins/websuite-push-notifier/libraries/aws-sdk-php/Aws/ConfigService/Exception/ConfigServiceException.php:9
- > PHP Fatal error
Uncaught Error: Class 'Google\\Cloud\\Core\\Report\\GAEMetadataProvider' not found in wp-content/plugins/websuite-push-notifier/vendor/google/cloud-core/src/Report/GAEStandardMetadataProvider.php:23
- > PHP Fatal error
Uncaught Error: Class 'Aws\\Arn\\AccessPointArn' not found in wp-content/plugins/websuite-push-notifier/libraries/aws-sdk-php/Aws/Arn/S3/OutpostsAccessPointArn.php:20
- > PHP Fatal error
Uncaught Error: Class 'Aws\\AwsClient' not found in wp-content/plugins/websuite-push-notifier/libraries/aws-sdk-php/Aws/PrometheusService/PrometheusServiceClient.php:25
- > PHP Fatal error
Uncaught Error: Interface 'Psr\\Http\\Message\\StreamInterface' not found in wp-content/plugins/websuite-push-notifier/libraries/firebase-php/vendor/guzzlehttp/psr7/src/CachingStream.php:13
- > PHP Fatal error
Uncaught Error: Class 'PHPUnit\\Framework\\TestCase' not found in wp-content/plugins/websuite-push-notifier/vendor/google/cloud-core/src/Testing/System/SystemTestCase.php:38
- > PHP Fatal error
Uncaught Error: Interface 'Google\\Auth\\FetchAuthTokenInterface' not found in wp-content/plugins/websuite-push-notifier/vendor/google/auth/src/SignBlobInterface.php:23
- > PHP Fatal error
Uncaught Error: Interface 'Lcobucci\\JWT\\Token' not found in wp-content/plugins/websuite-push-notifier/vendor/lcobucci/jwt/src/UnencryptedToken.php:9
- > PHP Fatal error
Uncaught Error: Interface 'Kreait\\Firebase\\Exception\\FirebaseException' not found in wp-content/plugins/websuite-push-notifier/libraries/firebase-php/src/Firebase/Auth/CreateSessionCookie/FailedToCreateSessionCookie.php:15
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | A shallow check that no browser errors were triggered
Everything seems fine, but this is not an exhaustive test
Optimizations
Plugin configuration 97% from 29 tests
readme.txt 94% from 16 tests
It's important to format your readme.txt file correctly as it is parsed for the public listing of your plugin
These attributes need to be fixed:
- Screenshots: These screenshots have no corresponding images in /assets: #1 (The settings page where your AWS details need to be entered.), #2 (The plugin page where you can enter a custom message or select a post for sending.), #3 (The logs page where successful and failed messages will be recorded.), #4 (The Send button on the posts list where you can send a post as a push notification.), #5 (The customised message sidebar widget on a post where you can send the post with a custom title and message.)
websuite-push-notifier/websuite-push-notifier.php Passed 13 tests
The primary PHP file in "WebSuite Push Notifier" version 1.1.7 is used by WordPress to initiate all plugin functionality
71 characters long description:
Send push notifications with custom messaging when a post is published.
Code Analysis 97% 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 plugin133,102 lines of code in 3,021 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 2,998 | 27,248 | 92,838 | 127,421 |
JavaScript | 9 | 588 | 434 | 2,780 |
CSS | 6 | 143 | 45 | 2,561 |
C | 2 | 35 | 70 | 144 |
reStructuredText | 1 | 35 | 29 | 59 |
make | 1 | 13 | 16 | 42 |
m4 | 1 | 11 | 14 | 38 |
C/C++ Header | 1 | 10 | 18 | 25 |
XML | 1 | 2 | 0 | 18 |
Bourne Shell | 1 | 4 | 16 | 14 |
PHP code 50% from 2 tests
This is a short overview of cyclomatic complexity and code structure for this plugin
It is recommended to fix the following
- Cyclomatic complexity of methods should be reduced to less than 100 (currently 179)
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.37 |
Average class complexity | 6.76 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 179.00 |
Average method complexity | 2.32 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 179.00 |
Code structure | ||
---|---|---|
Namespaces | 745 | |
Interfaces | 335 | |
Traits | 156 | |
Classes | 2,425 | |
▷ Abstract classes | 64 | 2.64% |
▷ Concrete classes | 2,361 | 97.36% |
▷ Final classes | 707 | 29.94% |
Methods | 12,868 | |
▷ Static methods | 1,699 | 13.20% |
▷ Public methods | 10,111 | 78.57% |
▷ Protected methods | 606 | 4.71% |
▷ Private methods | 2,151 | 16.72% |
Functions | 1,194 | |
▷ Named functions | 341 | 28.56% |
▷ Anonymous functions | 853 | 71.44% |
Constants | 1,572 | |
▷ Global constants | 64 | 4.07% |
▷ Class constants | 1,508 | 95.93% |
▷ Public constants | 1,274 | 84.48% |
Plugin size 50% from 2 tests
Image compression 50% from 2 tests
It is recommended to compress PNG files in your plugin to minimize bandwidth usage
25 PNG files occupy 0.72MB with 0.34MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
assets/screenshot-1.png | 83.78KB | 29.93KB | ▼ 64.28% |
admin/assets/img/minicolors.png | 67.02KB | 34.31KB | ▼ 48.80% |
admin/assets/img/icons/icon-128x128.png | 7.75KB | 3.40KB | ▼ 56.07% |
admin/img/banner.png | 40.76KB | 23.92KB | ▼ 41.32% |
admin/img/icons/icon-128x128.png | 4.71KB | 3.38KB | ▼ 28.39% |