65% syllab-backup

Code Review | SylLab Backup – HIPAA, GDPR, CCPA Framework

WordPress plugin SylLab Backup – HIPAA, GDPR, CCPA Framework scored 65% from 53 tests.

About plugin

  • Plugin page: syllab-backup
  • Plugin version: 1.0.1
  • PHP version: 7.4.16
  • WordPress compatibility: 3.2-5.8
  • WordPress version: 5.8.1
  • First release: Sep 29, 2021
  • Latest release: Oct 20, 2021
  • Number of updates: 11
  • Update frequency: every 3.0 days
  • Top authors: bartoszslowik (100%)

Code review

53 tests

User reviews

1 review

Install metrics

10+ active / 68 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 gracefully, with no errors

Server metrics [RAM: ▲2.78MB] [CPU: ▼247.37ms] Passed 4 tests

This is a short check of server-side resources used by SylLab Backup – HIPAA, GDPR, CCPA Framework
This plugin has minimal impact on server resources
PageMemory (MB)CPU Time (ms)
Home /4.25 ▲1.5343.27 ▲23.66
Dashboard /wp-admin6.56 ▲3.5062.81 ▲20.42
Posts /wp-admin/edit.php6.56 ▲3.4562.25 ▲20.53
Add New Post /wp-admin/post-new.php8.08 ▲2.65106.68 ▼1,045.55
Media Library /wp-admin/upload.php6.56 ▲3.5555.30 ▲15.14
SylLab /wp-admin/options-general.php?page=syllabplus6.5640.00

Server storage [IO: ▲4.97MB] [DB: ▲0.00MB] 67% from 3 tests

A short overview of filesystem and database impact
These are issues you should consider
  • Illegal file modification detected: 3 files (0.00MB) outside of "wp-content/plugins/syllab-backup/" and "wp-content/uploads/"
    • (new file) wp-content/syllab/index.html
    • (new file) wp-content/syllab/web.config
    • (new file) wp-content/syllab/.htaccess
Filesystem: 121 new files
Database: no new tables, 2 new options
New WordPress options
syllabplus_version
syllab_syllabvault

Browser metrics Passed 4 tests

Checking browser requirements for SylLab Backup – HIPAA, GDPR, CCPA Framework
This plugin has a minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,693 ▲8715.84 ▲0.308.51 ▼0.8645.54 ▼1.77
Dashboard /wp-admin2,953 ▲1006.01 ▲0.21133.75 ▼11.4199.33 ▼0.84
Posts /wp-admin/edit.php2,711 ▲52.69 ▼0.0160.80 ▼3.5391.62 ▼4.81
Add New Post /wp-admin/post-new.php1,656 ▼20118.85 ▼0.33361.60 ▼41.32103.94 ▲0.75
Media Library /wp-admin/upload.php1,777 ▲25.02 ▲0.02144.67 ▼7.88107.96 ▼3.97
SylLab /wp-admin/options-general.php?page=syllabplus2,9764.50153.78101.90

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
  • Zombie WordPress options detected upon uninstall: 2 options
    • syllab_syllabvault
    • syllabplus_version

Smoke tests 0% from 4 tests

Server-side errors 0% from 1 test

🔹 Test weight: 20 | This is a shallow check for server-side errors
These errors were triggered by the plugin
    • > GET request to /wp-admin/options-general.php?page=syllabplus
    • > Warning in wp-content/plugins/syllab-backup/admin.php+550
    include_once(/var/www/wordpress/wp-content/plugins/syllab-backup/includes/checkout-embed/class-slp-checkout-embed.php): failed to open stream: No such file or directory
    • > GET request to /wp-admin/options-general.php?page=syllabplus
    • > Warning in wp-content/plugins/syllab-backup/admin.php+550
    include_once(): Failed opening '/var/www/wordpress/wp-content/plugins/syllab-backup/includes/checkout-embed/class-slp-checkout-embed.php' for inclusion (include_path='.:/usr/share/php')

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
  • 52× PHP files perform the task of outputting text when accessed with GET requests (only 10 are shown):
    • > /wp-content/plugins/syllab-backup/includes/class-zip.php
    • > /wp-content/plugins/syllab-backup/includes/ftp.class.php
    • > /wp-content/plugins/syllab-backup/templates/wp-admin/notices/report-plain.php
    • > /wp-content/plugins/syllab-backup/templates/wp-admin/notices/horizontal-notice.php
    • > /wp-content/plugins/syllab-backup/includes/class-wpadmin-commands.php
    • > /wp-content/plugins/syllab-backup/includes/class-commands.php
    • > /wp-content/plugins/syllab-backup/includes/syllab-tour.php
    • > /wp-content/plugins/syllab-backup/includes/class-manipulation-functions.php
    • > /wp-content/plugins/syllab-backup/templates/wp-admin/settings/backupnow-modal.php
    • > /wp-content/plugins/syllab-backup/includes/syllab-login.php
  • 1× PHP files trigger server-side errors or warnings when accessed directly:
    • > PHP Fatal error
      Uncaught Error: Call to undefined function wp_create_nonce() in wp-content/plugins/syllab-backup/templates/wp-admin/notices/thanks-for-using-main-dash.php:8

User-side errors 0% from 1 test

🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
There are user-side issues you should fix
    • > GET request to /wp-admin/options-general.php?page=syllabplus
    • > Network (severe)
    wp-content/plugins/syllab-backup/css/tether-shepherd/shepherd-theme-arrows-plain-buttons.min.css?ver=1.0.1 - Failed to load resource: the server responded with a status of 404 (Not Found)
    • > GET request to /wp-admin/options-general.php?page=syllabplus
    • > Network (severe)
    wp-content/plugins/syllab-backup/includes/jstree/themes/default/style.min.css?ver=3.3.12-rc.0 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/options-general.php?page=syllabplus
    • > Network (severe)
    wp-content/plugins/syllab-backup/includes/tether/tether.min.js?ver=1 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/options-general.php?page=syllabplus
    • > Network (severe)
    wp-content/plugins/syllab-backup/includes/jquery.serializeJSON/jquery.serializejson.min.js?ver=3.2.0 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/options-general.php?page=syllabplus
    • > Network (severe)
    wp-content/plugins/syllab-backup/includes/jstree/jstree.min.js?ver=3.3.12-rc.0 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/options-general.php?page=syllabplus
    • > Network (severe)
    wp-content/plugins/syllab-backup/includes/jquery-ui.dialog.extended/jquery-ui.dialog.extended-1-0-1.min.js?ver=1.0.4 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/options-general.php?page=syllabplus
    • > Network (severe)
    wp-content/plugins/syllab-backup/includes/tether-shepherd/shepherd.min.js?ver=1.0.1 - Failed to load resource: the server responded with a status of 404 (Not Found)

Optimizations

Plugin configuration 93% from 29 tests

readme.txt Passed 16 tests

The readme.txt file is undoubtedly the most important file in your plugin, preparing it for public listing on WordPress.org
8 plugin tags: backup, wordpress backup, compliance, privacy, backups...

syllab-backup/syllabplus.php 85% from 13 tests

The main PHP file in "SylLab Backup – HIPAA, GDPR, CCPA Framework" ver. 1.0.1 adds more information about the plugin and also serves as the entry point for this plugin
Please make the necessary changes and fix the following:
  • Description: Please don't use more than 140 characters for the plugin description (currently 148 characters long)
  • Main file name: Name the main plugin file the same as the plugin slug ("syllab-backup.php" instead of "syllabplus.php")

Code Analysis 95% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | This is an overview of programming languages used in this plugin; dangerous file extensions are not allowed
There were no executable files found in this plugin36,043 lines of code in 82 files:
LanguageFilesBlank linesComment linesLines of code
PHP545,2696,96619,092
JavaScript152,3301,69013,248
CSS118581813,524
Sass1290172
Perl1557

PHP code 0% from 2 tests

This is a short overview 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 1,428)
  • Cyclomatic complexity of methods has to be reduced to less than 100 (currently 189)
Cyclomatic complexity
Average complexity per logical line of code0.60
Average class complexity118.57
▷ Minimum class complexity1.00
▷ Maximum class complexity1,428.00
Average method complexity8.22
▷ Minimum method complexity1.00
▷ Maximum method complexity189.00
Code structure
Namespaces0
Interfaces0
Traits0
Classes49
▷ Abstract classes612.24%
▷ Concrete classes4387.76%
▷ Final classes00.00%
Methods804
▷ Static methods9912.31%
▷ Public methods65180.97%
▷ Protected methods415.10%
▷ Private methods11213.93%
Functions4
▷ Named functions4100.00%
▷ Anonymous functions00.00%
Constants17
▷ Global constants17100.00%
▷ Class constants00.00%
▷ Public constants00.00%

Plugin size 0% from 1 test

Image compression 0% from 1 test

All PNG images should be compressed to minimize bandwidth usage for end users
20 PNG files occupy 1.36MB with 0.71MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
includes/images/ui-icons_ffd27a_256x240.png4.33KB4.17KB▼ 3.50%
includes/images/ui-bg_glass_65_ffffff_1x400.png0.20KB0.09KB▼ 57.49%
images/icons/syllabvault.png77.48KB29.31KB▼ 62.17%
includes/images/ui-bg_diagonals-thick_20_666666_40x40.png0.30KB0.15KB▼ 48.36%
images/syllabvault-150.png606.28KB77.76KB▼ 87.17%