72% contactsheets-lite

Code Review | WPSyncSheets Lite For Contact Form 7 - Contact Form 7 Google Spreadsheet Addon

WordPress plugin WPSyncSheets Lite For Contact Form 7 - Contact Form 7 Google Spreadsheet Addon scored72%from 54 tests.

About plugin

  • Plugin page: contactsheets-lite
  • Plugin version: 1.5
  • PHP compatiblity: 5.6+
  • PHP version: 7.4.16
  • WordPress compatibility: 5.3-6.4
  • WordPress version: 6.3.1
  • First release: Sep 9, 2020
  • Latest release: Nov 8, 2023
  • Number of updates: 116
  • Update frequency: every 10.0 days
  • Top authors: creativewerkdesigns (100%)

Code review

54 tests

User reviews

4 reviews

Install metrics

40+ active /3,395 total downloads

Benchmarks

Plugin footprint 83% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | All plugins must install correctly, without throwing any errors, warnings, or notices
Installer ran successfully

Server metrics [RAM: ▲0.32MB] [CPU: ▼4.38ms] Passed 4 tests

Analyzing server-side resources used by WPSyncSheets Lite For Contact Form 7 - Contact Form 7 Google Spreadsheet Addon
Server-side resource usage in normal parameters
PageMemory (MB)CPU Time (ms)
Home /3.78 ▲0.3143.86 ▼3.95
Dashboard /wp-admin3.67 ▲0.3748.88 ▼1.06
Posts /wp-admin/edit.php3.73 ▲0.3651.84 ▲1.06
Add New Post /wp-admin/post-new.php6.21 ▲0.3285.18 ▼13.56
Media Library /wp-admin/upload.php3.54 ▲0.3036.99 ▲1.92
Documentation /wp-admin/admin.php?page=documentation3.4835.44
For Contact Form 7 /wp-admin/admin.php?page=wpsyncsheets-contact-form-73.4936.36

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

A short overview of filesystem and database impact
This plugin was installed successfully
Filesystem: 759 new files
Database: no new tables, 8 new options
New WordPress options
can_compress_scripts
active_contactsheets
wpssc_database_updated
widget_recent-comments
widget_theysaidso_widget
db_upgraded
widget_recent-posts
theysaidso_admin_options

Browser metrics Passed 4 tests

WPSyncSheets Lite For Contact Form 7 - Contact Form 7 Google Spreadsheet Addon: an overview of browser usage
This plugin renders optimally with no browser resource issues detected
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,843 ▲8114.05 ▼0.291.53 ▼0.3240.68 ▼3.53
Dashboard /wp-admin2,245 ▲655.59 ▼0.0484.33 ▼3.9677.94 ▲35.91
Posts /wp-admin/edit.php2,153 ▲531.99 ▲0.0234.90 ▼3.4333.57 ▼0.04
Add New Post /wp-admin/post-new.php1,573 ▲4623.09 ▼0.05723.90 ▲40.5353.13 ▼6.64
Media Library /wp-admin/upload.php1,453 ▲534.21 ▼0.0097.05 ▲2.2269.22 ▲26.14
Documentation /wp-admin/admin.php?page=documentation7141.537.4515.71
For Contact Form 7 /wp-admin/admin.php?page=wpsyncsheets-contact-form-79991.7526.5937.71

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

🔸 Tests weight: 35 | All plugins must uninstall correctly, removing their source code and extra database tables they might have created
The following items require your attention
  • Zombie WordPress options were found after uninstall: 8 options
    • can_compress_scripts
    • active_contactsheets
    • theysaidso_admin_options
    • db_upgraded
    • widget_recent-comments
    • widget_theysaidso_widget
    • widget_recent-posts
    • wpssc_database_updated

Smoke tests 25% from 4 tests

Server-side errors 0% from 1 test

🔹 Test weight: 20 | This is a shallow check for server-side errors
These server-side errors were triggered
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=documentation
    • > Warning in wp-includes/pluggable.php+1438
    Cannot modify header information - headers already sent by (output started at wp-includes/script-loader.php:2838)

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 items
  • 7× PHP files output text when accessed directly:
    • > /wp-content/plugins/contactsheets-lite/lib/vendor/firebase/php-jwt/tests/bootstrap.php
    • > /wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient/examples/large-file-upload.php
    • > /wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient/examples/multi-api.php
    • > /wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient/examples/index.php
    • > /wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient/examples/idtoken.php
    • > /wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient/examples/simple-file-upload.php
    • > /wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient/examples/url-shortener.php
  • 546× GET requests to PHP files have triggered server-side errors or warnings (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'Google_Collection' not found in wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient-services/src/Google/Service/Sheets/UpdateDeveloperMetadataRequest.php:18
    • > PHP Fatal error
      Uncaught Error: Class 'Monolog\\TestCase' not found in wp-content/plugins/contactsheets-lite/lib/vendor/monolog/monolog/tests/Monolog/Handler/RedisHandlerTest.php:18
    • > PHP Fatal error
      Uncaught Error: Class 'Google\\Auth\\Tests\\BaseTest' not found in wp-content/plugins/contactsheets-lite/lib/vendor/google/auth/tests/HttpHandler/HttpHandlerFactoryTest.php:22
    • > PHP Fatal error
      Uncaught Error: Class 'BaseTest' not found in wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient/tests/examples/simpleFileUploadTest.php:22
    • > PHP Fatal error
      Uncaught Error: Class 'Google_Model' not found in wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient-services/src/Google/Service/Drive/CommentQuotedFileContent.php:18
    • > PHP Fatal error
      Uncaught Error: Class 'Google_Collection' not found in wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient-services/src/Google/Service/Sheets/WaterfallChartSeries.php:18
    • > PHP Fatal error
      Uncaught Error: Class 'Google_Collection' not found in wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient-services/src/Google/Service/Drive/ChangeList.php:18
    • > PHP Fatal error
      Uncaught Error: Class 'Monolog\\TestCase' not found in wp-content/plugins/contactsheets-lite/lib/vendor/monolog/monolog/tests/Monolog/Handler/MongoDBHandlerTest.php:17
    • > PHP Fatal error
      Uncaught Error: Class 'Google_Model' not found in wp-content/plugins/contactsheets-lite/lib/vendor/google/apiclient-services/src/Google/Service/Sheets/PivotGroupRule.php:18
    • > PHP Fatal error
      Uncaught Error: Class 'Monolog\\Handler\\AbstractProcessingHandler' not found in wp-content/plugins/contactsheets-lite/lib/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php:28

User-side errors Passed 1 test

🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
Everything seems fine, but this is not an exhaustive test

Optimizations

Plugin configuration 90% from 29 tests

readme.txt 94% from 16 tests

The readme.txt file is undoubtedly the most important file in your plugin, preparing it for public listing on WordPress.org
Attributes that require attention:
  • Tags: There are too many tags (13 tag instead of maximum 10)
Please take inspiration from this readme.txt

contactsheets-lite/wpsyncsheets-lite-contact-form-7.php 85% from 13 tests

"WPSyncSheets Lite For Contact Form 7 - Contact Form 7 Google Spreadsheet Addon" version 1.5's primary PHP file adds more information about the plugin and serves as the entry point for WordPress
You should first fix the following items:
  • Text Domain: The text domain is optional since WordPress version 4.6; if you do specify it, it must be the same as the plugin slug
  • Main file name: Please rename the main PHP file in this plugin to the plugin slug ("contactsheets-lite.php" instead of "wpsyncsheets-lite-contact-form-7.php")

Code Analysis 97% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | This is an overview of file extensions present in this plugin and a short test that no dangerous files are bundled with this plugin
There were no executable files found in this plugin72,119 lines of code in 721 files:
LanguageFilesBlank linesComment linesLines of code
PHP65710,54734,13865,278
Markdown281,32504,393
JSON15001,140
CSS21915532
JavaScript21617320
XML73242252
YAML5321115
Bourne Shell13431
make211031
SVG10122
INI1015

PHP code 50% from 2 tests

This is a very shot review of cyclomatic complexity and code structure
Please fix the following
  • Cyclomatic complexity of methods should be reduced to less than 100 (currently 103)
Cyclomatic complexity
Average complexity per logical line of code0.25
Average class complexity9.76
▷ Minimum class complexity1.00
▷ Maximum class complexity626.00
Average method complexity2.14
▷ Minimum method complexity1.00
▷ Maximum method complexity103.00
Code structure
Namespaces41
Interfaces25
Traits5
Classes643
▷ Abstract classes111.71%
▷ Concrete classes63298.29%
▷ Final classes60.95%
Methods5,186
▷ Static methods1392.68%
▷ Public methods4,72791.15%
▷ Protected methods2043.93%
▷ Private methods2554.92%
Functions293
▷ Named functions8629.35%
▷ Anonymous functions20770.65%
Constants336
▷ Global constants3510.42%
▷ Class constants30189.58%
▷ Public constants301100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

PNG files should be compressed to save space and minimize bandwidth usage
6 PNG files occupy 0.23MB with 0.06MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
assets/css/images/sprite-icon.png5.31KB4.67KB▼ 12.07%
assets/css/images/pro_features.png107.91KB46.44KB▼ 56.96%
assets/images/sprite-icon.png6.67KB5.41KB▼ 18.88%
assets/images/logo.png6.03KB4.81KB▼ 20.17%
assets/images/notice-logo.png6.45KB5.01KB▼ 22.37%