83% ultimate-blocks-for-gutenberg

Code Review | Master Blocks - Ultimate Gutenberg Blocks for Marketers

WordPress plugin Master Blocks - Ultimate Gutenberg Blocks for Marketers scored83%from 54 tests.

About plugin

  • Plugin page: ultimate-blocks-f...
  • Plugin version: 1.4.1.3
  • PHP version: 7.4.16
  • WordPress compatibility: 5.0-6.3.1
  • WordPress version: 6.3.1
  • First release: Nov 9, 2018
  • Latest release: Oct 20, 2023
  • Number of updates: 80
  • Update frequency: every 22.6 days
  • Top authors: Litonice13 (100%)

Code review

54 tests

User reviews

14 reviews

Install metrics

200+ active /19,148 total downloads

Benchmarks

Plugin footprint 82% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | Checking the installer triggered no errors
The plugin installed successfully, without throwing any errors or notices

Server metrics [RAM: ▲1.39MB] [CPU: ▲490.13ms] 50% from 4 tests

Server-side resources used by Master Blocks - Ultimate Gutenberg Blocks for Marketers
The following require your attention
  • CPU: Total CPU usage should be kept under 500.00ms (currently 826.75ms on /wp-admin/admin.php?page=jlt-master-blocks)
  • Extra CPU: Extra CPU usage should be kept under 200.00ms (currently 490.13ms on /wp-admin/admin.php?page=jlt-master-blocks)
PageMemory (MB)CPU Time (ms)
Home /4.81 ▲1.3551.68 ▲13.62
Dashboard /wp-admin4.77 ▲1.43945.54 ▲889.36
Posts /wp-admin/edit.php4.77 ▲1.41680.09 ▲635.26
Add New Post /wp-admin/post-new.php7.29 ▲1.40719.82 ▲628.53
Media Library /wp-admin/upload.php4.61 ▲1.38717.67 ▲683.10
Recommended /wp-admin/admin.php?page=ultimate-blocks-for-gutenberg-recommended-plugins4.58674.52
Master Blocks /wp-admin/admin.php?page=jlt-master-blocks4.62826.75

Server storage [IO: ▲2.98MB] [DB: ▲0.10MB] Passed 3 tests

A short overview of filesystem and database impact
This plugin was installed successfully
Filesystem: 125 new files
Database: no new tables, 14 new options
New WordPress options
widget_theysaidso_widget
ultimate_blocks_for_gutenberg_version
jltmb_sheet_promo_data_hash
db_upgraded
widget_recent-posts
jltmb_sheet_promo_data
widget_recent-comments
jltmb_popup_upgrade_notice
jltmb_activation_time
jltmb_notice_what_we_collect
...

Browser metrics Passed 4 tests

Master Blocks - Ultimate Gutenberg Blocks for Marketers: an overview of browser usage
This plugin renders optimally with no browser resource issues detected
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,145 ▲38413.61 ▼0.749.18 ▲7.1334.00 ▼4.53
Dashboard /wp-admin2,454 ▲2805.79 ▲0.1297.93 ▲11.7174.16 ▲32.76
Posts /wp-admin/edit.php2,267 ▲1672.19 ▲0.2335.44 ▼2.9932.53 ▼4.67
Add New Post /wp-admin/post-new.php6,495 ▲4,96920.89 ▼2.651,011.57 ▲361.6240.59 ▼19.69
Media Library /wp-admin/upload.php1,555 ▲1524.31 ▲0.11101.63 ▼1.6072.87 ▲27.72
Recommended /wp-admin/admin.php?page=ultimate-blocks-for-gutenberg-recommended-plugins1,5211.7132.9528.48
Master Blocks /wp-admin/admin.php?page=jlt-master-blocks1,5574.2069.6579.01

Uninstaller [IO: ▲0.00MB] [DB: ▲0.10MB] 75% from 4 tests

🔸 Tests weight: 35 | All plugins must uninstall correctly, removing their source code and extra database tables they might have created
These items require your attention
  • Zombie WordPress options detected upon uninstall: 14 options
    • widget_theysaidso_widget
    • jltmb_notice_what_we_collect
    • jltmb_notice_ask_for_rating
    • jltmb_notice_subscribe
    • jltmb_sheet_promo_data_hash
    • widget_recent-comments
    • widget_recent-posts
    • db_upgraded
    • jltmb_sheet_promo_data
    • can_compress_scripts
    • ...

Smoke tests 75% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
Even though no errors were found, this is by no means an exhaustive test

SRP 50% from 2 tests

🔹 Tests weight: 20 | SRP (Single-Responsibility Principle) - PHP files must act as libraries and never output text or perform any action when accessed directly in a browser
Please fix the following
  • 14× GET requests to PHP files have triggered server-side errors or warnings (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/ultimate-blocks-for-gutenberg/Libs/Metabox.php:12
    • > PHP Fatal error
      Uncaught Error: Call to undefined function register_block_type() in wp-content/plugins/ultimate-blocks-for-gutenberg/Inc/blocks/render.php:2
    • > PHP Fatal error
      Uncaught Error: Class 'JLTMB\\Libs\\RowLinks' not found in wp-content/plugins/ultimate-blocks-for-gutenberg/Inc/Classes/Row_Links.php:13
    • > PHP Warning
      Use of undefined constant JLTMB_PATH - assumed 'JLTMB_PATH' (this will throw an Error in a future version of PHP) in wp-content/plugins/ultimate-blocks-for-gutenberg/Libs/Readme_Parser.php on line 9
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/ultimate-blocks-for-gutenberg/Libs/StyleGenerator.php:9
    • > PHP Fatal error
      Uncaught Error: Class 'JLTMB\\Inc\\Classes\otifications\\Model\otice' not found in wp-content/plugins/ultimate-blocks-for-gutenberg/Inc/Classes/Notifications/Subscribe.php:13
    • > PHP Fatal error
      Uncaught Error: Class 'JLTMB\\Inc\\Classes\otifications\\Model\\Popup' not found in wp-content/plugins/ultimate-blocks-for-gutenberg/Inc/Classes/Notifications/Upgrade_Notice.php:14
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/ultimate-blocks-for-gutenberg/Inc/blocks/social-share.php:75
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/ultimate-blocks-for-gutenberg/Inc/blocks/latest-post.php:263
    • > PHP Fatal error
      Uncaught Error: Call to undefined function wp_die() in wp-content/plugins/ultimate-blocks-for-gutenberg/ultimate-blocks-for-gutenberg.php:21

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 93% from 29 tests

readme.txt Passed 16 tests

The readme.txt file is important because it is parsed by WordPress.org for the public listing of your plugin
6 plugin tags: block, editor, extension, gutenberg, gutenberg blocks...

ultimate-blocks-for-gutenberg/ultimate-blocks-for-gutenberg.php 85% from 13 tests

The principal PHP file in "Master Blocks - Ultimate Gutenberg Blocks for Marketers" v. 1.4.1.3 is loaded by WordPress automatically on each request
Please make the necessary changes and fix the following:
  • Domain Path: Prefix the domain path with a forward slash character ("/languages/")
  • Domain Path: Note that the domain path follows the same naming rules as the domain name, using only dashes and lowercase characters ("languages/")

Code Analysis 97% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | A short check of programming languages and file extensions; no executable files are allowed
No dangerous file extensions were detected9,811 lines of code in 119 files:
LanguageFilesBlank linesComment linesLines of code
PHP551,4902,3377,067
CSS32401122,414
SVG2201320
JavaScript100210

PHP code 50% from 2 tests

An short overview of logical lines of code, cyclomatic complexity, and other code metrics
The following items need your attention
  • Please reduce cyclomatic complexity of methods to less than 100 (currently 101)
Cyclomatic complexity
Average complexity per logical line of code0.38
Average class complexity17.54
▷ Minimum class complexity1.00
▷ Maximum class complexity129.00
Average method complexity2.89
▷ Minimum method complexity1.00
▷ Maximum method complexity101.00
Code structure
Namespaces9
Interfaces0
Traits2
Classes39
▷ Abstract classes410.26%
▷ Concrete classes3589.74%
▷ Final classes12.86%
Methods363
▷ Static methods5414.88%
▷ Public methods35397.25%
▷ Protected methods41.10%
▷ Private methods61.65%
Functions45
▷ Named functions3475.56%
▷ Anonymous functions1124.44%
Constants24
▷ Global constants2395.83%
▷ Class constants14.17%
▷ Public constants1100.00%

Plugin size 50% from 2 tests

Image compression 50% from 2 tests

Often times overlooked, PNG files can occupy unnecessary space in your plugin
2 PNG files occupy 0.18MB with 0.18MB in potential savings
Potential savings
Compression of 2 random PNG files using pngquant
FileSize - originalSize - compressedSavings
(invalid) images/upgrade-pro.png124.56KB0.00KB▼ 100.00%
(invalid) images/promo-image.png58.64KB0.00KB▼ 100.00%