10% clickgumshoe

Code Review | ClickGUMSHOE - Click Fraud Detection & Protection

WordPress plugin ClickGUMSHOE - Click Fraud Detection & Protection scored10%from 54 tests.

About plugin

  • Plugin page: clickgumshoe
  • Plugin version: 1.0.4
  • PHP version: 7.4.16
  • WordPress compatibility: 3.7-4.7.4
  • WordPress version: 6.3.1
  • First release: Jun 29, 2018
  • Latest release: Sep 20, 2018
  • Number of updates: 55
  • Update frequency: every 1.5 days
  • Top authors: hoangweb (100%)

Code review

54 tests

User reviews

1 review

Install metrics

10+ active /944 total downloads

Benchmarks

Plugin footprint 40% from 16 tests

Installer 0% from 1 test

🔺 Critical test (weight: 50) | All plugins must install correctly, without throwing any errors, warnings, or notices
These installer errors require your attention
  • The plugin cannot be installed
    • > Deprecated in wp-content/plugins/clickgumshoe/html/libs/classes/css.php+61
    Array and string offset access syntax with curly braces is deprecated

Server metrics [RAM: ▼1.54MB] [CPU: ▼52.89ms] Passed 4 tests

A check of server-side resources used by ClickGUMSHOE - Click Fraud Detection & Protection
Normal server usage
PageMemory (MB)CPU Time (ms)
Home /2.45 ▼1.0111.13 ▼30.19
Dashboard /wp-admin2.47 ▼0.839.31 ▼40.80
Posts /wp-admin/edit.php2.47 ▼0.8811.16 ▼38.56
Add New Post /wp-admin/post-new.php2.47 ▼3.4111.21 ▼102.00
Media Library /wp-admin/upload.php2.47 ▼0.7610.17 ▼28.78
ClickGUMSHOE /wp-admin/options-general.php?page=hcgs_settings2.4710.76

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

A short overview of filesystem and database impact
The plugin installed successfully
Filesystem: 283 new files
Database: no new tables, 6 new options
New WordPress options
widget_theysaidso_widget
can_compress_scripts
theysaidso_admin_options
widget_recent-comments
db_upgraded
widget_recent-posts

Browser metrics Passed 4 tests

Checking browser requirements for ClickGUMSHOE - Click Fraud Detection & Protection
This plugin renders optimally with no browser resource issues detected
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,893 ▲13214.06 ▼0.2919.40 ▲17.8634.77 ▼4.03
Dashboard /wp-admin2,204 ▲305.63 ▲0.0594.38 ▼2.3642.10 ▼2.39
Posts /wp-admin/edit.php2,106 ▲62.01 ▼0.0236.23 ▼5.9533.53 ▼5.42
Add New Post /wp-admin/post-new.php1,531 ▲323.11 ▼0.03653.93 ▲3.8250.09 ▼3.92
Media Library /wp-admin/upload.php1,406 ▲64.14 ▼0.0098.82 ▼19.2043.13 ▼0.75
ClickGUMSHOE /wp-admin/options-general.php?page=hcgs_settings1,3772.3442.67100.12

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
    • > Deprecated in wp-content/plugins/clickgumshoe/html/libs/classes/css.php+61
    Array and string offset access syntax with curly braces is deprecated
  • The uninstall procedure has failed, leaving 6 options in the database
    • widget_recent-comments
    • widget_theysaidso_widget
    • db_upgraded
    • can_compress_scripts
    • widget_recent-posts
    • theysaidso_admin_options

Smoke tests 25% from 4 tests

Server-side errors 0% from 1 test

🔹 Test weight: 20 | Just a short smoke test targeting errors on the server (in the Apache logs)
Please fix the following server-side errors
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/options-general.php?page=hcgs_settings
    • > POST request to /wp-admin/admin-ajax.php?action=hcgs_rest&task=check_status
    • > Deprecated in wp-content/plugins/clickgumshoe/html/libs/classes/css.php+61
    Array and string offset access syntax with curly braces is deprecated

SRP 0% from 2 tests

🔹 Tests weight: 20 | The single-responsibility principle: PHP files have to remain inert when accessed directly, throwing no errors and performing no actions
Almost there! Just fix the following items
  • 3× PHP files output non-empty strings when accessed directly via GET requests:
    • > /wp-content/plugins/clickgumshoe/html/libs/vendor/react/socket/examples/99-generate-self-signed.php
    • > /wp-content/plugins/clickgumshoe/lock.php
    • > /wp-content/plugins/clickgumshoe/plugin.php
  • 509× GET requests to PHP files have triggered server-side errors or warnings (only 10 are shown):
    • > PHP Warning
      include(settings.php): failed to open stream: No such file or directory in wp-content/plugins/clickgumshoe/libs/vendor/cloudinary/cloudinary_php/samples/PhotoAlbum/main.php on line 10
    • > PHP Fatal error
      Uncaught Error: Class 'AdminPageFramework_FieldType' not found in wp-content/plugins/clickgumshoe/libs/apf/factory/_common/form/field_type/AdminPageFramework_FieldType_textarea.php:7
    • > PHP Fatal error
      Uncaught Error: Class 'Monolog\\Handler\\AbstractProcessingHandler' not found in wp-content/plugins/clickgumshoe/html/libs/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php:22
    • > PHP Fatal error
      Uncaught Error: Class 'Monolog\\Handler\\MailHandler' not found in wp-content/plugins/clickgumshoe/html/libs/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php:23
    • > PHP Fatal error
      Uncaught Error: Class 'AdminPageFramework_FieldType' not found in wp-content/plugins/clickgumshoe/libs/apf/factory/_common/form/field_type/AdminPageFramework_FieldType_system.php:7
    • > PHP Fatal error
      Uncaught Error: Class 'AdminPageFramework_Form_Meta' not found in wp-content/plugins/clickgumshoe/libs/apf/factory/meta_box/form/AdminPageFramework_Form_post_meta_box.php:7
    • > PHP Fatal error
      Uncaught Error: Class 'AdminPageFramework_Resource_post_meta_box' not found in wp-content/plugins/clickgumshoe/libs/apf/factory/user_meta/_controller/AdminPageFramework_Resource_user_meta.php:7
    • > PHP Fatal error
      Uncaught Error: Class 'FluentDOM\odes' not found in wp-content/plugins/clickgumshoe/html/libs/vendor/fluentdom/fluentdom/src/FluentDOM/Query.php:26
    • > PHP Fatal error
      Uncaught Error: Class 'Stash\\Driver\\AbstractDriver' not found in wp-content/plugins/clickgumshoe/html/libs/vendor/tedivm/stash/src/Stash/Driver/Redis.php:23
    • > PHP Fatal error
      Uncaught Error: Class 'AdminPageFramework_FrameworkUtility' not found in wp-content/plugins/clickgumshoe/libs/apf/factory/admin_page/_view/AdminPageFramework_View__PageRenderer.php:7

User-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no browser errors were triggered
No browser errors were detected

Optimizations

Plugin configuration 93% from 29 tests

readme.txt Passed 16 tests

The readme.txt file describes your plugin functionality and requirements and it is parsed to prepare the your plugin's listing
3 plugin tags: clickgumshoe, adwords, fraud click

clickgumshoe/plugin.php 85% from 13 tests

The primary PHP file in "ClickGUMSHOE - Click Fraud Detection & Protection" version 1.0.4 is used by WordPress to initiate all plugin functionality
It is important to fix the following:
  • Main file name: It is recommended to name the main PHP file as the plugin slug ("clickgumshoe.php" instead of "plugin.php")
  • Text Domain: If you choose to specify the text domain, it must be the same as the plugin slug; optional since WordPress version 4.6

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 detected51,325 lines of code in 699 files:
LanguageFilesBlank linesComment linesLines of code
PHP6687,55522,92149,324
JSON20001,310
JavaScript595104442
XML110216
CSS57733

PHP code Passed 2 tests

A short review of cyclomatic complexity and code structure
There were no cyclomatic complexity issued detected
Cyclomatic complexity
Average complexity per logical line of code0.39
Average class complexity9.32
▷ Minimum class complexity1.00
▷ Maximum class complexity254.00
Average method complexity2.52
▷ Minimum method complexity1.00
▷ Maximum method complexity46.00
Code structure
Namespaces83
Interfaces56
Traits17
Classes695
▷ Abstract classes12017.27%
▷ Concrete classes57582.73%
▷ Final classes183.13%
Methods4,342
▷ Static methods51511.86%
▷ Public methods3,07270.75%
▷ Protected methods52612.11%
▷ Private methods74417.13%
Functions436
▷ Named functions20045.87%
▷ Anonymous functions23654.13%
Constants251
▷ Global constants103.98%
▷ Class constants24196.02%
▷ Public constants241100.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
14 compressed PNG files occupy 0.98MB
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
html/asset/images/colorbox/loading_background.png0.13KB0.15KB0.00%
asset/images/bullet-green.png0.63KB0.58KB▼ 7.32%
asset/images/quick-call-button.png0.62KB0.63KB0.00%
html/asset/images/colorbox/controls.png1.23KB1.28KB0.00%
html/asset/images/colorbox/border.png0.07KB0.10KB0.00%