Benchmarks
Plugin footprint 58% from 16 tests
Installer 0% from 1 test
🔺 Critical test (weight: 50) | The install procedure must perform silently
You still need to fix the following installer errors
- The plugin cannot be installed
- > Deprecated in wp-content/plugins/nggtags-for-wp-media-library/nggtags-for-wp-media-library.php+616
Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`
Server metrics [RAM: ▲0.12MB] [CPU: ▲3.21ms] Passed 4 tests
Server-side resources used by Tags for Media Library
Server-side resource usage in normal parameters
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 3.61 ▲0.15 | 46.71 ▲7.59 |
Dashboard /wp-admin | 3.42 ▲0.11 | 48.40 ▼1.93 |
Posts /wp-admin/edit.php | 3.53 ▲0.18 | 48.86 ▼0.11 |
Add New Post /wp-admin/post-new.php | 6.00 ▲0.11 | 93.52 ▲7.28 |
Media Library /wp-admin/upload.php | 3.34 ▲0.11 | 42.92 ▲8.94 |
NGG Tags /wp-admin/edit-tags.php?taxonomy=ngg_tag&post_type=attachment | 3.42 | 38.27 |
Tags for Media Library /wp-admin/options-general.php?page=nggtags_for_media_library_settings_page | 3.31 | 39.85 |
Exclude /wp-admin/edit-tags.php?taxonomy=exclude&post_type=attachment | 3.33 | 38.97 |
Tags for Media Library /wp-admin/upload.php?page=tml_upload | 3.54 | 49.86 |
Priority /wp-admin/edit-tags.php?taxonomy=priority&post_type=attachment | 3.33 | 33.59 |
Server storage [IO: ▲0.54MB] [DB: ▲0.00MB] Passed 3 tests
Filesystem and database footprint
No storage issues were detected
Filesystem: 18 new files
Database: no new tables, 7 new options
New WordPress options |
---|
widget_recent-comments |
theysaidso_admin_options |
widget_search_media_library_by_taxonomy_widget |
can_compress_scripts |
widget_recent-posts |
widget_theysaidso_widget |
db_upgraded |
Browser metrics Passed 4 tests
An overview of browser requirements for Tags for Media Library
Minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,015 ▲269 | 14.24 ▼0.50 | 10.04 ▲8.28 | 36.00 ▼9.44 |
Dashboard /wp-admin | 2,233 ▲48 | 4.91 ▼0.95 | 108.69 ▼7.27 | 40.49 ▼5.82 |
Posts /wp-admin/edit.php | 2,115 ▲26 | 2.26 ▲0.09 | 35.10 ▲1.08 | 36.66 ▲0.26 |
Add New Post /wp-admin/post-new.php | 1,542 ▲28 | 18.29 ▲0.74 | 633.28 ▼39.05 | 54.73 ▼0.88 |
Media Library /wp-admin/upload.php | 1,415 ▲24 | 4.30 ▲0.16 | 97.80 ▼2.67 | 42.09 ▼1.05 |
NGG Tags /wp-admin/edit-tags.php?taxonomy=ngg_tag&post_type=attachment | 1,266 | 2.32 | 27.29 | 28.15 |
Tags for Media Library /wp-admin/options-general.php?page=nggtags_for_media_library_settings_page | 1,107 | 1.96 | 30.45 | 31.21 |
Exclude /wp-admin/edit-tags.php?taxonomy=exclude&post_type=attachment | 1,260 | 2.32 | 27.11 | 27.39 |
Tags for Media Library /wp-admin/upload.php?page=tml_upload | 1,606 | 3.29 | 63.10 | 25.20 |
Priority /wp-admin/edit-tags.php?taxonomy=priority&post_type=attachment | 1,260 | 2.32 | 26.29 | 23.95 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 75% from 4 tests
🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
You still need to fix the following
- This plugin does not fully uninstall, leaving 7 options in the database
- theysaidso_admin_options
- widget_search_media_library_by_taxonomy_widget
- db_upgraded
- can_compress_scripts
- widget_theysaidso_widget
- widget_recent-comments
- widget_recent-posts
Smoke tests 25% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | Just a short smoke test targeting errors on the server (in the Apache logs)
Good news, no errors were detected
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 fix the following items
- 2× PHP files perform the task of outputting text when accessed with GET requests:
- > /wp-content/plugins/nggtags-for-wp-media-library/upload.php
- > /wp-content/plugins/nggtags-for-wp-media-library/nggtags-meta-overlay-template.php
- 14× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Call to a member function get_col() on null in wp-content/plugins/nggtags-for-wp-media-library/nggtags-for-wp-media-library.php:54
- > PHP Notice
Trying to get property 'prefix' of non-object in wp-content/plugins/nggtags-for-wp-media-library/nggtags-for-wp-media-library.php on line 31
- > PHP Fatal error
Uncaught Error: Call to a member function get_col() on null in wp-content/plugins/nggtags-for-wp-media-library/nggtags-for-wp-media-library.php:54
- > PHP Notice
Trying to get property 'prefix' of non-object in wp-content/plugins/nggtags-for-wp-media-library/nggtags-for-wp-media-library.php on line 30
- > PHP Notice
Trying to get property 'prefix' of non-object in wp-content/plugins/nggtags-for-wp-media-library/nggtags-for-wp-media-library.php on line 29
- > PHP Fatal error
Uncaught Error: Class 'WP_Widget' not found in wp-content/plugins/nggtags-for-wp-media-library/nggtags-search-widget.php:31
- > PHP Notice
Trying to get property 'prefix' of non-object in wp-content/plugins/nggtags-for-wp-media-library/nggtags-for-wp-media-library.php on line 29
- > PHP Notice
Trying to get property 'prefix' of non-object in wp-content/plugins/nggtags-for-wp-media-library/nggtags-for-wp-media-library.php on line 30
- > PHP Fatal error
require_once(): Failed opening required 'ABSPATHwp-admin/includes/meta-boxes.php' (include_path='.:/usr/share/php') in wp-content/plugins/nggtags-for-wp-media-library/class-wp-media-list-table-for-nggtags.php on line 3
- > PHP Notice
Trying to get property 'prefix' of non-object in wp-content/plugins/nggtags-for-wp-media-library/nggtags-for-wp-media-library.php on line 31
- > 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 take a look at the following user-side issues
- > GET request to /wp-admin/upload.php?page=tml_upload
- > Javascript (severe) in unknown
/wp-content/plugins/nggtags-for-wp-media-library/nggtags-media.js?ver=6.3.1 1343:49 Uncaught TypeError: Cannot read properties of undefined (reading 'left')
Optimizations
Plugin configuration 96% from 29 tests
readme.txt Passed 16 tests
Often overlooked, readme.txt is one of the most important files in your plugin
7 plugin tags: convertor, replacement, nggtags, alternative, media library...
nggtags-for-wp-media-library/nggtags-for-wp-media-library-loader.php 92% from 13 tests
Analyzing the main PHP file in "Tags for Media Library" version 1.2.3.7.2
You should first fix the following items:
- Main file name: The principal plugin file should be the same as the plugin slug ("nggtags-for-wp-media-library.php" instead of "nggtags-for-wp-media-library-loader.php")
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | A short check of programming languages and file extensions; no executable files are allowed
Good job! No executable or dangerous file extensions detected9,994 lines of code in 17 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
JavaScript | 6 | 578 | 895 | 5,189 |
PHP | 8 | 306 | 524 | 3,433 |
CSS | 3 | 216 | 38 | 1,372 |
PHP code Passed 2 tests
A short review of cyclomatic complexity and code structure
No complexity issues detected
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.41 |
Average class complexity | 37.40 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 129.00 |
Average method complexity | 5.79 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 23.00 |
Code structure | ||
---|---|---|
Namespaces | 1 | |
Interfaces | 0 | |
Traits | 1 | |
Classes | 3 | |
▷ Abstract classes | 0 | 0.00% |
▷ Concrete classes | 3 | 100.00% |
▷ Final classes | 0 | 0.00% |
Methods | 19 | |
▷ Static methods | 6 | 31.58% |
▷ Public methods | 19 | 100.00% |
▷ Protected methods | 0 | 0.00% |
▷ Private methods | 0 | 0.00% |
Functions | 117 | |
▷ Named functions | 20 | 17.09% |
▷ Anonymous functions | 97 | 82.91% |
Constants | 2 | |
▷ Global constants | 0 | 0.00% |
▷ Class constants | 2 | 100.00% |
▷ Public constants | 2 | 100.00% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
Often times overlooked, PNG files can occupy unnecessary space in your plugin
PNG images were not found in this plugin