68% ultimate-carousel-for-divi

Code Review | Ultimate Carousel For Divi

WordPress plugin Ultimate Carousel For Divi scored68%from 54 tests.

About plugin

  • Plugin page: ultimate-carousel...
  • Plugin version: 4.5.1
  • PHP version: 7.4.16
  • WordPress compatibility: 4.5-6.3
  • WordPress version: 6.3.1
  • First release: May 25, 2021
  • Latest release: Aug 24, 2023
  • Number of updates: 17
  • Update frequency: every 48.4 days
  • Top authors: wpt00ls (100%)

Code review

54 tests

User reviews

4 reviews

Install metrics

700+ active /6,141 total downloads

Benchmarks

Plugin footprint 65% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | It is important to correctly install your plugin, without throwing errors or notices
Installer ran successfully

Server metrics [RAM: ▲5.45MB] [CPU: ▲19.90ms] 75% from 4 tests

This is a short check of server-side resources used by Ultimate Carousel For Divi
The following require your attention
  • Extra RAM: Try to keep extra memory usage under 5MB (currently 5.45MB on /wp-admin/admin.php?page=ultimate-carousel-for-divi)
PageMemory (MB)CPU Time (ms)
Home /9.25 ▲5.7965.89 ▲24.64
Dashboard /wp-admin9.27 ▲5.9676.22 ▲25.67
Posts /wp-admin/edit.php9.27 ▲5.9174.11 ▲25.80
Add New Post /wp-admin/post-new.php10.01 ▲4.13108.12 ▲3.50
Media Library /wp-admin/upload.php9.27 ▲6.0470.54 ▲33.79
Freemius Debug [v.2.5.10] /wp-admin/admin.php?page=freemius9.2762.73
Ultimate Carousel For Divi /wp-admin/admin.php?page=ultimate-carousel-for-divi9.2769.26

Server storage [IO: ▲3.90MB] [DB: ▲0.00MB] Passed 3 tests

Analyzing filesystem and database footprints of this plugin
No storage issues were detected
Filesystem: 302 new files
Database: no new tables, 9 new options
New WordPress options
theysaidso_admin_options
widget_theysaidso_widget
fs_accounts
widget_recent-posts
can_compress_scripts
db_upgraded
fs_debug_mode
widget_recent-comments
fs_active_plugins

Browser metrics Passed 4 tests

Checking browser requirements for Ultimate Carousel For Divi
This plugin renders optimally with no browser resource issues detected
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,955 ▲22014.93 ▲0.561.70 ▼0.4931.10 ▼20.87
Dashboard /wp-admin2,361 ▲1766.39 ▲1.50138.28 ▲20.3444.86 ▼3.73
Posts /wp-admin/edit.php2,281 ▲1923.56 ▲1.5151.18 ▲15.5633.81 ▼0.54
Add New Post /wp-admin/post-new.php1,679 ▲16522.05 ▲4.39656.54 ▼21.0139.38 ▼9.65
Media Library /wp-admin/upload.php1,406 ▲184.17 ▼0.0188.38 ▼28.7046.63 ▼2.26
Freemius Debug [v.2.5.10] /wp-admin/admin.php?page=freemius1,2523.0638.5726.83
Ultimate Carousel For Divi /wp-admin/admin.php?page=ultimate-carousel-for-divi1,1472.9943.1472.67

Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 50% 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
  • Uninstall procedure validation failed for this plugin
    • > Notice in wp-content/plugins/ultimate-carousel-for-divi/freemius/includes/class-freemius.php+8486
    Undefined property: stdClass::$plugins
  • This plugin does not fully uninstall, leaving 9 options in the database
    • fs_accounts
    • db_upgraded
    • can_compress_scripts
    • widget_recent-comments
    • fs_debug_mode
    • widget_theysaidso_widget
    • widget_recent-posts
    • fs_active_plugins
    • theysaidso_admin_options

Smoke tests 50% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | This is a shallow check for server-side errors
Even though everything seems fine, this is not an exhaustive test

SRP 0% from 2 tests

🔹 Tests weight: 20 | A shallow check of the single-responsibility principle; PHP files should perform no action - including output of placeholder text - and trigger no errors when accessed directly
Please take a closer look at the following
  • 1× GET requests to PHP files return non-empty strings:
    • > /wp-content/plugins/ultimate-carousel-for-divi/resources/views/image-card-carousel-item.php
  • 40× PHP files trigger server errors when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Interface 'Psr\\Container\\ContainerInterface' not found in wp-content/plugins/ultimate-carousel-for-divi/vendor/pimple/pimple/src/Pimple/Psr11/Container.php:37
    • > PHP Fatal error
      Uncaught Error: Class 'PHPUnit\\Framework\\TestCase' not found in wp-content/plugins/ultimate-carousel-for-divi/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php:34
    • > PHP Fatal error
      Uncaught Error: Class 'PHPUnit_Framework_TestCase' not found in wp-content/plugins/ultimate-carousel-for-divi/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php:34
    • > PHP Fatal error
      Uncaught Error: Class 'ET_Builder_Module' not found in wp-content/plugins/ultimate-carousel-for-divi/includes/modules/PostTypeCardCarousel/PostTypeCardCarousel.php:6
    • > PHP Fatal error
      Uncaught Error: Interface 'Psr\\Container\otFoundExceptionInterface' not found in wp-content/plugins/ultimate-carousel-for-divi/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php:36
    • > PHP Fatal error
      Uncaught Error: Call to undefined function esc_html_e() in wp-content/plugins/ultimate-carousel-for-divi/resources/views/custom-fields/taxonomy-cat-add-form-fields.php:3
    • > PHP Fatal error
      Uncaught Error: Class 'ET_Builder_Module' not found in wp-content/plugins/ultimate-carousel-for-divi/includes/modules/ImageCardCarouselItem/ImageCardCarouselItem.php:6
    • > PHP Fatal error
      Uncaught Error: Class 'WPT_Ultimate_Divi_Carousel\\TaxonomyCarousel\\TaxonomyCarousel' not found in wp-content/plugins/ultimate-carousel-for-divi/includes/modules/TaxonomyCarouselFullWidth/TaxonomyCarouselFullWidth.php:6
    • > PHP Fatal error
      Uncaught Error: Class 'PHPUnit\\Framework\\TestCase' not found in wp-content/plugins/ultimate-carousel-for-divi/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php:39
    • > PHP Fatal error
      Uncaught Error: Class 'PHPUnit\\Framework\\TestCase' not found in wp-content/plugins/ultimate-carousel-for-divi/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php:34

User-side errors Passed 1 test

🔹 Test weight: 20 | Just a short smoke test targeting errors on the browser (console and network errors and warnings)
Everything seems fine on the user side

Optimizations

Plugin configuration 96% 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
8 plugin tags: carousel, slider, divi image carousel, divi post type carousel, divi woocommerce product carousel...

ultimate-carousel-for-divi/ultimate-carousel-for-divi.php 92% from 13 tests

The entry point to "Ultimate Carousel For Divi" version 4.5.1 is a PHP file that has certain tags in its header comment area
It is important to fix the following:
  • Description: If Twitter did it, so should we! Keep the description under 140 characters (currently 150 characters long)

Code Analysis 97% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | This is a short overview of programming languages used in this plugin, detecting executable files
Everything looks great! No dangerous files found in this plugin40,474 lines of code in 230 files:
LanguageFilesBlank linesComment linesLines of code
PHP1938,98019,16239,214
JavaScript116979523
CSS184312332
JSON300165
reStructuredText19413597
SVG10087
YAML15035
XML11013
Markdown1508

PHP code 50% from 2 tests

A brief analysis of cyclomatic complexity and code structure for this plugin
It is recommended to fix the following
  • Class cyclomatic complexity should be reduced to less than 1000 (currently 3,073)
Cyclomatic complexity
Average complexity per logical line of code0.57
Average class complexity44.69
▷ Minimum class complexity1.00
▷ Maximum class complexity3,073.00
Average method complexity4.13
▷ Minimum method complexity1.00
▷ Maximum method complexity94.00
Code structure
Namespaces27
Interfaces4
Traits0
Classes106
▷ Abstract classes21.89%
▷ Concrete classes10498.11%
▷ Final classes21.92%
Methods1,602
▷ Static methods21613.48%
▷ Public methods1,21175.59%
▷ Protected methods171.06%
▷ Private methods37423.35%
Functions182
▷ Named functions10054.95%
▷ Anonymous functions8245.05%
Constants145
▷ Global constants9867.59%
▷ Class constants4732.41%
▷ Public constants47100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

Using a strong compression for your PNG files is a great way to speed-up your plugin
5 PNG files occupy 0.14MB with 0.06MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
images/placeholder.png10.79KB6.97KB▼ 35.38%
freemius/assets/img/plugin-icon.png9.16KB5.26KB▼ 42.58%
freemius/assets/img/ultimate-carousel-for-divi.png9.13KB4.27KB▼ 53.24%
freemius/assets/img/theme-icon.png10.97KB5.78KB▼ 47.37%
images/placeholder-2.png100.24KB73.05KB▼ 27.12%