Benchmarks
Plugin footprint 81% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | The install procedure must perform silently
This plugin's installer ran successfully
Server metrics [RAM: ▲14.49MB] [CPU: ▲264.28ms] 25% from 4 tests
This is a short check of server-side resources used by Travelpayouts: All Travel Brands in One Place
Please have a look at the following items
- RAM: Total memory usage must be kept under 10MB (currently 17.78MB on /wp-admin/options-general.php?page=travelpayouts_landing_page)
- Extra RAM: Extra memory usage should kept under 5MB (currently 14.49MB on /wp-admin/options-general.php?page=travelpayouts_landing_page)
- Extra CPU: Extra CPU usage must be kept under 200.00ms (currently 264.28ms on /wp-admin/options-general.php?page=travelpayouts_landing_page)
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 18.71 ▲15.24 | 378.98 ▲337.88 |
Dashboard /wp-admin | 17.83 ▲14.48 | 308.77 ▲245.00 |
Posts /wp-admin/edit.php | 17.88 ▲14.52 | 286.29 ▲236.13 |
Add New Post /wp-admin/post-new.php | 20.30 ▲14.41 | 369.17 ▲271.68 |
Media Library /wp-admin/upload.php | 17.77 ▲14.54 | 339.41 ▲304.29 |
Travelpayouts /wp-admin/options-general.php?page=travelpayouts_landing_page | 17.78 | 265.50 |
Server storage [IO: ▲16.00MB] [DB: ▲0.23MB] Passed 3 tests
Input-output and database impact of this plugin
The plugin installed successfully
Filesystem: 2,483 new files
Database: no new tables, 10 new options
New WordPress options |
---|
travelpayouts_admin_settings-transients |
travelpayouts_version |
travelpayouts_notices |
travelpayouts_admin_settings |
can_compress_scripts |
theysaidso_admin_options |
db_upgraded |
widget_recent-comments |
widget_recent-posts |
widget_theysaidso_widget |
Browser metrics Passed 4 tests
A check of browser resources used by Travelpayouts: All Travel Brands in One Place
This plugin has a minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,441 ▲695 | 17.26 ▲2.67 | 10.32 ▲8.76 | 51.55 ▲9.09 |
Dashboard /wp-admin | 2,650 ▲472 | 8.24 ▲2.52 | 218.25 ▲108.79 | 87.60 ▲41.53 |
Posts /wp-admin/edit.php | 2,388 ▲285 | 2.31 ▲0.35 | 44.44 ▲3.14 | 46.60 ▲9.91 |
Add New Post /wp-admin/post-new.php | 1,734 ▲208 | 27.51 ▲3.78 | 961.87 ▲292.68 | 43.02 ▼12.04 |
Media Library /wp-admin/upload.php | 1,678 ▲278 | 4.36 ▲0.14 | 106.94 ▲9.63 | 80.24 ▲36.63 |
Travelpayouts /wp-admin/options-general.php?page=travelpayouts_landing_page | 2,136 | 2.31 | 48.47 | 100.32 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.23MB] 75% from 4 tests
🔸 Tests weight: 35 | Verifying that this plugin uninstalls completely without leaving any traces
You still need to fix the following
- Zombie WordPress options detected upon uninstall: 10 options
- widget_recent-posts
- widget_recent-comments
- travelpayouts_admin_settings
- can_compress_scripts
- travelpayouts_notices
- travelpayouts_version
- theysaidso_admin_options
- travelpayouts_admin_settings-transients
- widget_theysaidso_widget
- db_upgraded
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
Even though no errors were found, this is by no means 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× PHP files perform the task of outputting text when accessed with GET requests:
- > /wp-content/plugins/travelpayouts/vendor/travelpayouts-snowplow/snowplow-tracker/Worker.php
- > /wp-content/plugins/travelpayouts/src/admin/templates/script.php
- 877× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Interface 'Travelpayouts\\Vendor\\Monolog\\Handler\\HandlerInterface' not found in wp-content/plugins/travelpayouts/vendor/travelpayouts-monolog/monolog/src/Monolog/Handler/HandlerWrapper.php:33
- > PHP Fatal error
Uncaught Error: Interface 'Travelpayouts\\Vendor\\Doctrine\\Common\\Annotations\\Reader' not found in wp-content/plugins/travelpayouts/vendor/travelpayouts-doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php:17
- > PHP Fatal error
Uncaught Error: Class 'Travelpayouts\\Vendor\\Monolog\\Handler\\SocketHandler' not found in wp-content/plugins/travelpayouts/vendor/travelpayouts-monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php:21
- > PHP Fatal error
Uncaught Error: Class 'Travelpayouts\\modules\\tables\\components\\hotels\\HotelTableShortcodeModel' not found in wp-content/plugins/travelpayouts/src/modules/tables/components/hotels/selectionsDiscount/Table.php:19
- > PHP Fatal error
Uncaught Error: Class 'Travelpayouts\\modules\\tables\\components\\api\\BaseTokenApiModel' not found in wp-content/plugins/travelpayouts/src/modules/tables/components/flights/directFlightsRoute/Api.php:18
- > PHP Fatal error
Uncaught Error: Class 'Travelpayouts\\Vendor\\Ramsey\\Uuid\\Uuid' not found in wp-content/plugins/travelpayouts/vendor/travelpayouts-ramsey/uuid/src/Rfc4122/UuidV3.php:29
- > PHP Fatal error
Uncaught Error: Class 'Travelpayouts\\Vendor\\Brick\\Math\\Internal\\Calculator' not found in wp-content/plugins/travelpayouts/vendor/travelpayouts-brick/math/src/Internal/Calculator/NativeCalculator.php:15
- > PHP Fatal error
Uncaught Error: Class 'Travelpayouts\\Vendor\\Psr\\Log\\AbstractLogger' not found in wp-content/plugins/travelpayouts/vendor/travelpayouts-rollbar/rollbar/src/RollbarLogger.php:12
- > PHP Fatal error
Uncaught Error: Interface 'Travelpayouts\\Vendor\\Symfony\\Contracts\\Translation\\TranslatorInterface' not found in wp-content/plugins/travelpayouts/vendor/travelpayouts-symfony/translation/Translator.php:33
- > PHP Fatal error
Uncaught Error: Interface 'Travelpayouts\\Vendor\\Ramsey\\Uuid\\UuidInterface' not found in wp-content/plugins/travelpayouts/vendor/travelpayouts-ramsey/uuid/src/Rfc4122/UuidInterface.php:26
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | A shallow check that no browser errors were triggered
There were no browser issues found
Optimizations
Plugin configuration 97% from 29 tests
readme.txt 94% from 16 tests
The readme.txt file describes your plugin functionality and requirements and it is parsed to prepare the your plugin's listing
These attributes need your attention:
- Screenshots: Please add descriptions for these screenshots #1, #2, #3, #4, #5, #6, #7 in travelpayouts/assets to your readme.txt
travelpayouts/travelpayouts.php Passed 13 tests
The main file in "Travelpayouts: All Travel Brands in One Place" v. 1.1.12 serves as a complement to information provided in readme.txt and as the entry point to the plugin
125 characters long description:
Earn money and make your visitors happy! Offer them useful tools for their travel needs. Earn on commission for each booking.
Code Analysis 3% from 3 tests
File types 0% from 1 test
🔸 Test weight: 35 | An overview of files in this plugin; executable files are not allowed
Please make sure to remedy the following
- You should never include executable (binary) or otherwise dangerous files in your plugin
- .bat - Batch File in Windows
- ☣ wp-content/plugins/travelpayouts/vendor/travelpayouts-nesbot/carbon/bin/carbon.bat
- .bat - Batch File in Windows
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 1,929 | 24,366 | 66,582 | 115,092 |
CSS | 45 | 1,637 | 151 | 16,807 |
YAML | 31 | 0 | 0 | 4,774 |
JavaScript | 96 | 842 | 326 | 3,740 |
JSON | 35 | 0 | 0 | 3,704 |
XSD | 3 | 92 | 48 | 2,803 |
PO File | 1 | 634 | 824 | 1,343 |
SVG | 12 | 0 | 0 | 948 |
Markdown | 2 | 19 | 0 | 43 |
Sass | 3 | 4 | 0 | 35 |
XML | 1 | 4 | 2 | 15 |
Bourne Shell | 1 | 1 | 0 | 4 |
DOS Batch | 1 | 0 | 0 | 4 |
PHP code 50% from 2 tests
Analyzing cyclomatic complexity and code structure
Please fix the following
- Cyclomatic complexity of methods has to be reduced to less than 100 (currently 210)
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.44 |
Average class complexity | 11.42 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 351.00 |
Average method complexity | 2.80 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 210.00 |
Code structure | ||
---|---|---|
Namespaces | 250 | |
Interfaces | 112 | |
Traits | 51 | |
Classes | 1,073 | |
▷ Abstract classes | 94 | 8.76% |
▷ Concrete classes | 979 | 91.24% |
▷ Final classes | 60 | 6.13% |
Methods | 7,701 | |
▷ Static methods | 1,076 | 13.97% |
▷ Public methods | 6,026 | 78.25% |
▷ Protected methods | 1,053 | 13.67% |
▷ Private methods | 622 | 8.08% |
Functions | 600 | |
▷ Named functions | 158 | 26.33% |
▷ Anonymous functions | 442 | 73.67% |
Constants | 841 | |
▷ Global constants | 21 | 2.50% |
▷ Class constants | 820 | 97.50% |
▷ Public constants | 777 | 94.76% |
Plugin size 0% from 2 tests
Image compression 0% from 2 tests
It is recommended to compress PNG files in your plugin to minimize bandwidth usage
44 PNG files occupy 1.58MB with 0.49MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
images/admin/widgets/flights/tp_subscriptions_widget/pallet_2.png | 0.23KB | 0.24KB | 0.00% |
(invalid) assets/0e6e208e4d4826c0889d.png | 0.08KB | 0.00KB | ▼ 100.00% |
images/rest/search_form.png | 27.55KB | 17.50KB | ▼ 36.47% |
assets/c3aae356d03bcb13da7cbf2763770658.png | 15.19KB | 12.42KB | ▼ 18.22% |
assets/a7433f869d49ae59f30d6a575fd7f627.png | 41.78KB | 47.07KB | 0.00% |