Benchmarks
Plugin footprint 83% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | It is important to correctly install your plugin, without throwing errors or notices
The plugin installed gracefully, with no errors
Server metrics [RAM: ▲0.56MB] [CPU: ▲5.17ms] Passed 4 tests
A check of server-side resources used by Flexible PDF Invoices for WooCommerce & WordPress
This plugin has minimal impact on server resources
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 3.90 ▲0.43 | 44.35 ▲3.45 |
Dashboard /wp-admin | 3.95 ▲0.64 | 62.08 ▲13.07 |
Posts /wp-admin/edit.php | 3.98 ▲0.63 | 57.85 ▲9.56 |
Add New Post /wp-admin/post-new.php | 6.54 ▲0.65 | 89.17 ▲0.35 |
Media Library /wp-admin/upload.php | 3.77 ▲0.54 | 41.92 ▲7.31 |
Settings /wp-admin/edit.php?post_type=inspire_invoice&page=invoices_settings | 3.85 | 45.67 |
Reports /wp-admin/edit.php?post_type=inspire_invoice&page=flexible-invoices-reports-settings | 3.79 | 41.67 |
Start Here /wp-admin/edit.php?post_type=inspire_invoice&page=wpdesk-marketing | 3.86 | 324.80 |
Server storage [IO: ▲13.24MB] [DB: ▲0.02MB] Passed 3 tests
Analyzing filesystem and database footprints of this plugin
No storage issues were detected
Filesystem: 1,272 new files
Database: no new tables, 28 new options
New WordPress options |
---|
can_compress_scripts |
inspire_invoices_woocommerce_nip_label |
inspire_invoices_correction_number_reset_type |
inspire_invoices_invoice_start_number |
inspire_invoices_default_values |
inspire_invoices_woocommerce_add_invoice_ask_field |
inspire_invoices_proforma_number_reset_type |
inspire_invoices_correction_number_prefix |
inspire_invoices_tax |
widget_recent-comments |
... |
Browser metrics Passed 4 tests
A check of browser resources used by Flexible PDF Invoices for WooCommerce & WordPress
Normal browser usage
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,074 ▲312 | 14.34 ▼0.00 | 1.82 ▼0.01 | 41.92 ▼2.47 |
Dashboard /wp-admin | 2,476 ▲299 | 6.21 ▲0.62 | 120.32 ▲17.31 | 91.43 ▲47.42 |
Posts /wp-admin/edit.php | 2,322 ▲225 | 3.39 ▲1.39 | 53.13 ▲13.43 | 36.39 ▲1.28 |
Add New Post /wp-admin/post-new.php | 1,581 ▲44 | 23.37 ▼1.88 | 681.37 ▲42.05 | 38.88 ▼38.39 |
Media Library /wp-admin/upload.php | 1,456 ▲59 | 4.22 ▼0.03 | 84.57 ▼21.88 | 44.13 ▼0.79 |
Settings /wp-admin/edit.php?post_type=inspire_invoice&page=invoices_settings | 1,423 | 4.15 | 66.36 | 30.80 |
Reports /wp-admin/edit.php?post_type=inspire_invoice&page=flexible-invoices-reports-settings | 1,241 | 4.08 | 52.66 | 26.86 |
Start Here /wp-admin/edit.php?post_type=inspire_invoice&page=wpdesk-marketing | 1,639 | 3.77 | 59.29 | 105.76 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.02MB] 75% from 4 tests
🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
These items require your attention
- Zombie WordPress options detected upon uninstall: 28 options
- inspire_invoices_correction_number_reset_type
- inspire_invoices_currency
- widget_recent-comments
- widget_theysaidso_widget
- inspire_invoices_invoice_number_prefix
- plugin_activation_flexible-invoices/flexible-invoices.php
- inspire_invoices_proforma_number_suffix
- inspire_invoices_woocommerce_nip_label
- inspire_invoices_woocommerce_add_invoice_ask_field
- inspire_invoices_proforma_number_prefix
- ...
Smoke tests 25% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | A smoke test targeting server-side errors
Even though everything seems fine, this is not 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
- 13× PHP files perform the action of outputting non-empty strings when accessed directly (only 10 are shown):
- > /wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/templates/settings/invoice-template/row-close.php
- > /wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/wp-wpdesk-marketing/src/Boxes/Views/row_open.php
- > /wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/templates/settings/footer.php
- > /wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/templates/settings/woocommerce/form-end.php
- > /wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/wp-forms/templates/form-end.php
- > /wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/templates/settings/invoice-template/col.php
- > /wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/templates/settings/invoice-template/row-open.php
- > /wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/wp-wpdesk-marketing/src/Boxes/Views/all.php
- > /wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/templates/settings/menu.php
- > /wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/templates/settings/sub-end.php
- 725× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Class 'WPDeskFIVendor\\WPDesk\\Forms\\Field\\BasicField' not found in wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/wp-forms/src/Field/WyswigField.php:5
- > PHP Fatal error
Uncaught Error: Interface 'WPDeskFIVendor\\WPDesk\\Beacon\\BeaconShouldShowStrategy' not found in wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/src/Invoices/Beacon/BeaconShowStrategy.php:6
- > PHP Fatal error
Uncaught Error: Interface 'WPDeskFIVendor\\WPDesk\\PluginBuilder\\Plugin\\Hookable' not found in wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/src/Invoices/WooCommerce/Order/DeleteDocumentRelation.php:16
- > PHP Fatal error
Uncaught Error: Class 'WPDeskFIVendor\\Monolog\\Handler\\Handler' not found in wp-content/plugins/flexible-invoices/vendor_prefixed/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php:40
- > PHP Fatal error
Uncaught Error: Call to undefined function esc_attr() in wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/templates/settings/tax-rates/form-start.php:10
- > PHP Notice
Trying to access array offset on value of type null in wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/wp-wpdesk-marketing/src/Boxes/Views/video.php on line 19
- > PHP Fatal error
Uncaught Error: Class 'WPDeskFIVendor\\WPDesk\\Forms\\Field\\BasicField' not found in wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/src/Invoices/Settings/Fields/GroupedFields.php:6
- > PHP Fatal error
Uncaught Error: Class 'WPDeskFIVendor\\setasign\\Fpdi\\PdfParser\\Type\\PdfType' not found in wp-content/plugins/flexible-invoices/vendor_prefixed/setasign/fpdi/src/PdfParser/Type/PdfName.php:17
- > PHP Fatal error
Uncaught Error: Class 'WPDeskFIVendor\\WPDesk\\Library\\FlexibleInvoicesCore\\Settings\\Tabs\\FieldSettingsTab' not found in wp-content/plugins/flexible-invoices/vendor_prefixed/wpdesk/flexible-invoices-core/src/Invoices/Settings/Tabs/InvoiceTemplate.php:27
- > PHP Fatal error
Uncaught Error: Class 'WPDeskFIVendor\\Mpdf\\Tag\\Tag' not found in wp-content/plugins/flexible-invoices/vendor_prefixed/mpdf/mpdf/src/Tag/Option.php:6
- > PHP Fatal error
User-side errors 0% from 1 test
🔹 Test weight: 20 | Just a short smoke test targeting errors on the browser (console and network errors and warnings)
Please fix the following user-side errors
- > GET request to /wp-admin/edit.php?post_type=inspire_invoice&page=flexible-invoices-reports-settings
- > Rendering (warning) in unknown
/wp-admin/edit.php?post_type=inspire_invoice&page=flexible-invoices-reports-settings 179 The specified value "yes" does not conform to the required format, "yyyy-MM-dd".
- > GET request to /wp-admin/edit.php?post_type=inspire_invoice&page=flexible-invoices-reports-settings
- > Rendering (warning) in unknown
/wp-admin/edit.php?post_type=inspire_invoice&page=flexible-invoices-reports-settings 194 The specified value "yes" does not conform to the required format, "yyyy-MM-dd".
Optimizations
Plugin configuration 93% from 29 tests
readme.txt Passed 16 tests
The readme.txt file uses markdown syntax to describe your plugin to the world
5 plugin tags: woocommerce invoices, woocommerce pdf invoices, eu vat, invoice, vat invoice
flexible-invoices/flexible-invoices.php 85% from 13 tests
The main file in "Flexible PDF Invoices for WooCommerce & WordPress" v. 5.6.21 serves as a complement to information provided in readme.txt and as the entry point to the plugin
You should first fix the following items:
- Description: If Twitter did it, so should we! Keep the description under 140 characters (currently 331 characters long)
- Requires at least: The required version number must match the one declared in readme.txt ("5.0" instead of "5.8")
Code Analysis 95% from 3 tests
File types Passed 1 test
🔸 Test weight: 35 | Executable files are considered dangerous and should not be included with any WordPress plugin
No dangerous file extensions were detected110,103 lines of code in 1,117 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 1,039 | 2,726 | 34,390 | 102,968 |
JavaScript | 17 | 614 | 1,022 | 2,974 |
CSS | 29 | 535 | 113 | 2,710 |
JSON | 30 | 0 | 0 | 1,426 |
Markdown | 2 | 5 | 0 | 25 |
PHP code 0% from 2 tests
A short review of cyclomatic complexity and code structure
The following items need your attention
- Cyclomatic complexity of classes should be reduced to less than 1000 (currently 7,012)
- Please reduce cyclomatic complexity of methods to less than 100 (currently 460)
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.46 |
Average class complexity | 25.39 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 7,012.00 |
Average method complexity | 6.09 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 460.00 |
Code structure | ||
---|---|---|
Namespaces | 139 | |
Interfaces | 95 | |
Traits | 20 | |
Classes | 705 | |
▷ Abstract classes | 32 | 4.54% |
▷ Concrete classes | 673 | 95.46% |
▷ Final classes | 49 | 7.28% |
Methods | 4,328 | |
▷ Static methods | 338 | 7.81% |
▷ Public methods | 3,607 | 83.34% |
▷ Protected methods | 282 | 6.52% |
▷ Private methods | 439 | 10.14% |
Functions | 88 | |
▷ Named functions | 23 | 26.14% |
▷ Anonymous functions | 65 | 73.86% |
Constants | 683 | |
▷ Global constants | 6 | 0.88% |
▷ Class constants | 677 | 99.12% |
▷ Public constants | 650 | 96.01% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
It is recommended to compress PNG files in your plugin to minimize bandwidth usage
7 PNG files occupy 0.11MB with 0.03MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
vendor_prefixed/wpdesk/wp-wpdesk-tracker/src/assets/images/flexibleshipping.com.png | 5.63KB | 3.68KB | ▼ 34.58% |
vendor_prefixed/wpdesk/wp-wpdesk-tracker/src/assets/images/logo@2x.png | 4.17KB | 4.47KB | 0.00% |
vendor_prefixed/wpdesk/wp-wpdesk-tracker/src/assets/images/wpdesk.pl.png | 2.36KB | 2.43KB | 0.00% |
vendor_prefixed/wpdesk/wp-wpdesk-marketing/assets/owl-slider/owl.video.play.png | 4.86KB | 2.74KB | ▼ 43.61% |
vendor_prefixed/wpdesk/wp-wpdesk-tracker/src/assets/images/octolize.com.png | 88.91KB | 39.07KB | ▼ 56.06% |