74% fullworks-scanner

Code Review | Fullworks Security Scanner

WordPress plugin Fullworks Security Scanner scored74%from 54 tests.

About plugin

  • Plugin page: fullworks-scanner
  • Plugin version: 1.2.0
  • PHP compatiblity: 7.4+
  • PHP version: 7.4.16
  • WordPress compatibility: 5.0-6.2
  • WordPress version: 6.3.1
  • First release: May 20, 2023
  • Latest release: Oct 18, 2023
  • Number of updates: 8
  • Update frequency: every 18.9 days
  • Top authors: fullworks (100%)

Code review

54 tests

User reviews

1 review

Install metrics

10+ active /503 total downloads

Benchmarks

Plugin footprint 65% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | The install procedure must perform silently
Installer ran successfully

Server metrics [RAM: ▲1.55MB] [CPU: ▲20.29ms] Passed 4 tests

Server-side resources used by Fullworks Security Scanner
This plugin has minimal impact on server resources
PageMemory (MB)CPU Time (ms)
Home /5.02 ▲1.5565.55 ▲27.06
Dashboard /wp-admin4.90 ▲1.5972.12 ▲21.21
Posts /wp-admin/edit.php4.95 ▲1.5979.15 ▲32.03
Add New Post /wp-admin/post-new.php7.42 ▲1.53108.91 ▲2.97
Media Library /wp-admin/upload.php4.76 ▲1.5364.38 ▲29.91
Settings /wp-admin/admin.php?page=fullworks-scanner-settings4.7460.19
Reports /wp-admin/admin.php?page=fullworks-scanner-code-scan-report4.8360.18
Scheduled Actions /wp-admin/tools.php?page=action-scheduler4.9575.59

Server storage [IO: ▲0.66MB] [DB: ▲0.01MB] Passed 3 tests

Analyzing filesystem and database footprints of this plugin
There were no storage issued detected upon installing this plugin
Filesystem: 130 new files
Database: 5 new tables, 12 new options
New tables
wp_actionscheduler_groups
wp_actionscheduler_logs
wp_actionscheduler_claims
wp_fwvs_file_audit
wp_actionscheduler_actions
New WordPress options
theysaidso_admin_options
schema-ActionScheduler_LoggerSchema
FULLWORKS_SCANNER_general
schema-ActionScheduler_StoreSchema
widget_recent-comments
FULLWORKS_SCANNER_db_version
can_compress_scripts
db_upgraded
widget_theysaidso_widget
FULLWORKS_SCANNER_audit_schedule
...

Browser metrics Passed 4 tests

A check of browser resources used by Fullworks Security Scanner
Normal browser usage
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,818 ▲5714.26 ▼0.311.61 ▼0.1637.72 ▼4.42
Dashboard /wp-admin2,224 ▲435.58 ▼0.1394.96 ▼7.0241.74 ▼2.73
Posts /wp-admin/edit.php2,126 ▲262.00 ▼0.0438.81 ▲1.2034.36 ▲0.39
Add New Post /wp-admin/post-new.php1,559 ▲3118.09 ▼4.98627.70 ▼44.8764.99 ▲15.44
Media Library /wp-admin/upload.php1,426 ▲324.20 ▼0.0495.95 ▼19.4742.98 ▼7.26
Settings /wp-admin/admin.php?page=fullworks-scanner-settings1,1362.3238.7433.95
Reports /wp-admin/admin.php?page=fullworks-scanner-code-scan-report1,1362.0225.6532.16
Scheduled Actions /wp-admin/tools.php?page=action-scheduler1,4141.7923.4130.12

Uninstaller [IO: ▲0.00MB] [DB: ▲0.01MB] 50% from 4 tests

🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
You still need to fix the following
  • Zombie tables detected upon uninstall: 4 tables
    • wp_actionscheduler_claims
    • wp_actionscheduler_actions
    • wp_actionscheduler_groups
    • wp_actionscheduler_logs
  • The uninstall procedure has failed, leaving 9 options in the database
    • theysaidso_admin_options
    • widget_recent-posts
    • action_scheduler_hybrid_store_demarkation
    • schema-ActionScheduler_StoreSchema
    • widget_recent-comments
    • can_compress_scripts
    • widget_theysaidso_widget
    • schema-ActionScheduler_LoggerSchema
    • db_upgraded

Smoke tests 75% 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)
Everything seems fine, however this is by no means an exhaustive test

SRP 50% 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 fix the following
  • 49× PHP files trigger server errors when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Abstract_Schema' not found in wp-content/plugins/fullworks-scanner/includes/vendor/woocommerce/action-scheduler/classes/schema/ActionScheduler_StoreSchema.php:10
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Action' not found in wp-content/plugins/fullworks-scanner/includes/vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_FinishedAction.php:6
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Abstract_Schedule' not found in wp-content/plugins/fullworks-scanner/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_RecurringSchedule.php:6
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Abstract_Schedule' not found in wp-content/plugins/fullworks-scanner/includes/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_SimpleSchedule.php:6
    • > PHP Warning
      Use of undefined constant ABSPATH - assumed 'ABSPATH' (this will throw an Error in a future version of PHP) in wp-content/plugins/fullworks-scanner/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php on line 4
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Abstract_QueueRunner_Deprecated' not found in wp-content/plugins/fullworks-scanner/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_QueueRunner.php:6
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Abstract_RecurringSchedule' not found in wp-content/plugins/fullworks-scanner/includes/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_IntervalSchedule.php:6
    • > PHP Fatal error
      require_once(): Failed opening required 'ABSPATHwp-admin/includes/class-wp-list-table.php' (include_path='.:/usr/share/php') in wp-content/plugins/fullworks-scanner/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php on line 4
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Abstract_QueueRunner' not found in wp-content/plugins/fullworks-scanner/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_QueueRunner.php:6
    • > PHP Fatal error
      Uncaught Error: Class 'Fullworks_Scanner\\Admin\\Admin_Pages' not found in wp-content/plugins/fullworks-scanner/admin/class-admin-settings.php:39

User-side errors Passed 1 test

🔹 Test weight: 20 | This is just a short smoke test looking for browser issues
There were no browser issues found

Optimizations

Plugin configuration 96% from 29 tests

readme.txt Passed 16 tests

Perhaps the most important file in your plugin readme.txt gets parsed in order to generate the public listing of your plugin
3 plugin tags: plugin update, vulnerabilities, security

fullworks-scanner/fullworks-vulnerability-scanner.php 92% from 13 tests

The principal PHP file in "Fullworks Security Scanner" v. 1.2.0 is loaded by WordPress automatically on each request
Please make the necessary changes and fix the following:
  • Main file name: Please rename the main PHP file in this plugin to the plugin slug ("fullworks-scanner.php" instead of "fullworks-vulnerability-scanner.php")

Code Analysis Passed 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
No dangerous file extensions were detected9,396 lines of code in 116 files:
LanguageFilesBlank linesComment linesLines of code
PHP1122,2736,6169,040
Sass150168
CSS1225131
JSON10049
JavaScript12238

PHP code Passed 2 tests

This is a very shot review of cyclomatic complexity and code structure
This plugin has no cyclomatic complexity issues
Cyclomatic complexity
Average complexity per logical line of code0.34
Average class complexity12.05
▷ Minimum class complexity1.00
▷ Maximum class complexity97.00
Average method complexity2.49
▷ Minimum method complexity1.00
▷ Maximum method complexity40.00
Code structure
Namespaces7
Interfaces3
Traits0
Classes97
▷ Abstract classes1515.46%
▷ Concrete classes8284.54%
▷ Final classes00.00%
Methods767
▷ Static methods10213.30%
▷ Public methods57875.36%
▷ Protected methods14118.38%
▷ Private methods486.26%
Functions33
▷ Named functions2163.64%
▷ Anonymous functions1236.36%
Constants40
▷ Global constants512.50%
▷ Class constants3587.50%
▷ Public constants35100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

All PNG images should be compressed to minimize bandwidth usage for end users
1 PNG file occupies 0.00MB with 0.00MB in potential savings
Potential savings
Compression of 1 random PNG file using pngquant
FileSize - originalSize - compressedSavings
admin/images/brand/light-75h.png4.36KB3.29KB▼ 24.64%