Benchmarks
Plugin footprint Passed 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | Checking the installer triggered no errors
This plugin's installer ran successfully
Server metrics [RAM: ▼0.00MB] [CPU: ▼148.08ms] Passed 4 tests
Server-side resources used by InventoryPress
This plugin has minimal impact on server resources
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 3.16 ▲0.44 | 35.06 ▲13.83 |
Dashboard /wp-admin | 3.40 ▲0.34 | 46.15 ▲2.67 |
Posts /wp-admin/edit.php | 3.48 ▲0.38 | 47.57 ▲4.56 |
Add New Post /wp-admin/post-new.php | 4.38 ▼1.06 | 42.73 ▼609.14 |
Media Library /wp-admin/upload.php | 3.34 ▲0.34 | 34.79 ▲9.59 |
New Product /wp-admin/post-new.php?post_type=products | 3.22 | 23.35 |
New Material /wp-admin/post-new.php?post_type=materials | 3.22 | 26.90 |
Brands /wp-admin/edit.php?post_type=brands | 3.38 | 33.63 |
New Brand /wp-admin/post-new.php?post_type=brands | 3.22 | 24.63 |
Products /wp-admin/edit.php?post_type=products | 3.38 | 30.47 |
Materials /wp-admin/edit.php?post_type=materials | 3.38 | 43.08 |
Inventory /wp-admin/edit.php?post_type=inventory | 3.39 | 33.90 |
New Inventory Item /wp-admin/post-new.php?post_type=inventory | 3.22 | 26.60 |
Server storage [IO: ▲2.40MB] [DB: ▲0.00MB] Passed 3 tests
How much does this plugin use your filesystem and database?
The plugin installed successfully
Filesystem: 26 new files
Database: no new tables, no new options
Browser metrics 75% from 4 tests
InventoryPress: an overview of browser usage
Having an awesome user experience is important, so please improve the following
- Nodes: For the best user experience, please reduce the number of DOM nodes under 25,000 (currently 26,477 on /wp-admin/post-new.php?post_type=inventory)
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,830 ▲234 | 15.85 ▲0.16 | 8.64 ▼1.41 | 44.66 ▼3.11 |
Dashboard /wp-admin | 3,096 ▲165 | 5.92 ▼0.04 | 134.90 ▼6.62 | 134.74 ▲29.79 |
Posts /wp-admin/edit.php | 2,873 ▲134 | 2.64 ▼0.08 | 60.81 ▼0.58 | 83.91 ▼17.13 |
Add New Post /wp-admin/post-new.php | 1,764 ▲92 | 18.78 ▼0.04 | 381.46 ▲2.53 | 110.63 ▼0.17 |
Media Library /wp-admin/upload.php | 1,887 ▲80 | 5.06 ▲0.02 | 129.55 ▼17.45 | 144.82 ▲9.57 |
New Product /wp-admin/post-new.php?post_type=products | 2,104 | 3.34 | 81.62 | 112.28 |
New Material /wp-admin/post-new.php?post_type=materials | 2,104 | 3.33 | 81.66 | 113.42 |
Brands /wp-admin/edit.php?post_type=brands | 1,575 | 2.65 | 53.27 | 73.40 |
New Brand /wp-admin/post-new.php?post_type=brands | 2,165 | 3.33 | 78.11 | 89.09 |
Products /wp-admin/edit.php?post_type=products | 1,527 | 2.65 | 54.51 | 70.25 |
Materials /wp-admin/edit.php?post_type=materials | 1,527 | 2.63 | 57.51 | 77.68 |
Inventory /wp-admin/edit.php?post_type=inventory | 1,796 | 2.68 | 59.08 | 67.15 |
New Inventory Item /wp-admin/post-new.php?post_type=inventory | 26,477 | 3.74 | 115.22 | 81.53 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] Passed 4 tests
🔸 Tests weight: 35 | All plugins must uninstall correctly, removing their source code and extra database tables they might have created
Uninstaller ran successfully
Smoke tests 50% from 4 tests
Server-side errors 0% from 1 test
🔹 Test weight: 20 | This is a short smoke test looking for server-side errors
These server-side errors were triggered
- 4 occurences, only the last one shown
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+5158
Trying to get property 'post_type' of non-object
- 4 occurences, only the last one shown
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+5033
Undefined index: inv-nonce
- 12 occurences, only the last one shown
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/brand_type.php+111
Undefined index: csp-nonce
- 16 occurences, only the last one shown
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/brand_type.php+49
Undefined variable: post_id
- 64 occurences, only the last one shown
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/brand_type.php+61
Undefined variable: post_ID
- 16 occurences, only the last one shown
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/brand_type.php+60
Undefined variable: post
- 16 occurences, only the last one shown
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/brand_type.php+60
Trying to get property 'post_date' of non-object
- 3 occurences, only the last one shown
- > GET request to /wp-admin/post-new.php?post_type=brands
- > Notice in wp-content/plugins/inventorypress/brand_type.php+77
Undefined index: notes
- 28 occurences, only the last one shown
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+107
Trying to access array offset on value of type null
- > GET request to /wp-admin/post-new.php?post_type=brands
- > Notice in wp-content/plugins/inventorypress/brand_type.php+72
Undefined index: company
- > GET request to /wp-admin/post-new.php?post_type=brands
- > Notice in wp-content/plugins/inventorypress/brand_type.php+73
Undefined index: address1
- > GET request to /wp-admin/post-new.php?post_type=brands
- > Notice in wp-content/plugins/inventorypress/brand_type.php+74
Undefined index: address2
- > GET request to /wp-admin/post-new.php?post_type=brands
- > Notice in wp-content/plugins/inventorypress/brand_type.php+75
Undefined index: address3
- > GET request to /wp-admin/post-new.php?post_type=brands
- > Notice in wp-content/plugins/inventorypress/brand_type.php+76
Undefined index: phone
- > GET request to /wp-admin/post-new.php?post_type=brands
- > Notice in wp-content/plugins/inventorypress/brand_type.php+78
Undefined index: email
- > GET request to /wp-admin/post-new.php?post_type=brands
- > Notice in wp-content/plugins/inventorypress/brand_type.php+79
Undefined index: password
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+88
Undefined index: inventory_item_at_cost
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+89
Undefined index: inventory_item_at_msrp
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+90
Undefined index: inventory_item_reg_price
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+91
Undefined index: inventory_item_on_sale
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+92
Undefined index: inventory_item_desc
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+93
Undefined index: inventory_item_upc
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+94
Undefined index: inventory_item_part_grp
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+95
Undefined index: inventory_item_style
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+96
Undefined index: inventory_item_quantity
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+97
Undefined index: inventory_material_color1
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+98
Undefined index: inventory_material_color2
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+99
Undefined index: inventory_material_size1
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+100
Undefined index: inventory_material_size2
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+101
Undefined index: inventory_material_size3
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+102
Undefined index: inventory_materialtype
- 2 occurences, only the last one shown
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+107
Undefined index: inventory_producttype
- > GET request to /wp-admin/post-new.php?post_type=inventory
- > Notice in wp-content/plugins/inventorypress/inventory_type.php+105
Undefined index: inventory_brandname
SRP 50% 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
- 5× PHP files trigger server-side errors or warnings when accessed directly:
- > PHP Fatal error
Uncaught Error: Call to undefined function add_action() in wp-content/plugins/inventorypress/product_type.php:9
- > PHP Fatal error
Uncaught Error: Call to undefined function add_action() in wp-content/plugins/inventorypress/material_type.php:9
- > PHP Fatal error
Uncaught Error: Call to undefined function add_action() in wp-content/plugins/inventorypress/inventory_type.php:13
- > PHP Fatal error
Uncaught Error: Call to undefined function add_action() in wp-content/plugins/inventorypress/brand_type.php:9
- > PHP Fatal error
Uncaught Error: Call to undefined function get_post_custom() in wp-content/plugins/inventorypress/themefiles/single-inventory.php:13
- > 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 87% from 29 tests
readme.txt 88% from 16 tests
The readme.txt file describes your plugin functionality and requirements and it is parsed to prepare the your plugin's listing
Please fix the following attributes:
- Plugin Name: You should set the name of your plugin on the first line (
=== inventorypress ===
) - Screenshots: Add images for these screenshots: #1 (Easy "backend" Administration), #2 (Track data about your products better), #3 (Define Common Materials), #4 (Define Common Product Types), #5 (Define Common Brands)
inventorypress/inventory_type.php 85% from 13 tests
Analyzing the main PHP file in "InventoryPress" version v1.7
It is important to fix the following:
- Version: The version number should only use digits and periods (ex. "1.0.3" instead of "v1.7")
- Main file name: Even though not officially enforced, the main plugin file should be the same as the plugin slug ("inventorypress.php" instead of "inventory_type.php")
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | A short review of files and their extensions; it is not recommended to include executable files
Everything looks great! No dangerous files found in this plugin5,428 lines of code in 5 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 5 | 153 | 63 | 5,428 |
PHP code Passed 2 tests
Analyzing cyclomatic complexity and code structure
There were no cyclomatic complexity issued detected
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.22 |
Average class complexity | 0.00 |
▷ Minimum class complexity | 0.00 |
▷ Maximum class complexity | 0.00 |
Average method complexity | 0.00 |
▷ Minimum method complexity | 0.00 |
▷ Maximum method complexity | 0.00 |
Code structure | ||
---|---|---|
Namespaces | 0 | |
Interfaces | 0 | |
Traits | 0 | |
Classes | 0 | |
▷ Abstract classes | 0 | 0.00% |
▷ Concrete classes | 0 | 0.00% |
▷ Final classes | 0 | 0.00% |
Methods | 0 | |
▷ Static methods | 0 | 0.00% |
▷ Public methods | 0 | 0.00% |
▷ Protected methods | 0 | 0.00% |
▷ Private methods | 0 | 0.00% |
Functions | 31 | |
▷ Named functions | 31 | 100.00% |
▷ Anonymous functions | 0 | 0.00% |
Constants | 0 | |
▷ Global constants | 0 | 0.00% |
▷ Class constants | 0 | 0.00% |
▷ Public constants | 0 | 0.00% |
Plugin size 50% from 2 tests
Image compression 50% from 2 tests
All PNG images should be compressed to minimize bandwidth usage for end users
14 PNG files occupy 1.93MB with 1.26MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
Screenshot3.png | 188.55KB | 67.97KB | ▼ 63.95% |
Screenshot5.png | 189.95KB | 68.20KB | ▼ 64.10% |
Screenshot2.png | 214.25KB | 77.24KB | ▼ 63.95% |
images/brand_icon.png | 3.47KB | 0.97KB | ▼ 71.91% |
screenshot-2.png | 214.25KB | 77.24KB | ▼ 63.95% |