10% ach-for-stripe-plaid

Code Review | LittleBot ACH for Stripe + Plaid

WordPress plugin LittleBot ACH for Stripe + Plaid scored 10% from 54 tests.

About plugin

  • Plugin page: ach-for-stripe-plaid
  • Plugin version: 1.2.8
  • PHP version: 7.4.16
  • WordPress compatibility: 3.0.1-5.4.0
  • WordPress version: 5.8.1
  • First release: Nov 16, 2016
  • Latest release: Apr 11, 2020
  • Number of updates: 31
  • Update frequency: every 40.0 days
  • Top authors: jwind (100%)

Code review

54 tests

User reviews

1 review

Install metrics

200+ active / 4,091 total downloads

Benchmarks

Plugin footprint 58% from 16 tests

Installer 0% from 1 test

🔺 Critical test (weight: 50) | It is important to correctly install your plugin, without throwing errors or notices
You still need to fix the following installer errors
  • Install procedure had errors
    • > Notice in wp-content/plugins/ach-for-stripe-plaid/public/class-wp-stripe-plaid-public.php+124
    Trying to access array offset on value of type bool

Server metrics [RAM: ▲4.58MB] [CPU: ▼118.82ms] Passed 4 tests

A check of server-side resources used by LittleBot ACH for Stripe + Plaid
Normal server usage
PageMemory (MB)CPU Time (ms)
Home /8.09 ▲5.2557.78 ▲25.91
Dashboard /wp-admin8.11 ▲5.0574.55 ▲30.87
Posts /wp-admin/edit.php8.11 ▲5.0070.30 ▲27.22
Add New Post /wp-admin/post-new.php8.61 ▲3.17114.13 ▼546.45
Media Library /wp-admin/upload.php8.11 ▲5.1057.48 ▲18.05
Stripe + Plaid /wp-admin/options-general.php?page=stripe_plaid8.1158.43
LittleBot ACH for Stripe + Plaid /wp-admin/admin.php?page=ach-for-stripe-plaid8.1154.02
Freemius Debug [v.2.3.2] /wp-admin/admin.php?page=freemius8.1156.50

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

A short overview of filesystem and database impact
There were no storage issued detected upon installing this plugin
Filesystem: 451 new files
Database: no new tables, 7 new options
New WordPress options
stripe_plaid_settings_db
fs_active_plugins
fs_debug_mode
stripe_plaid_settings
fs_accounts
stripe_plaid_log
fs_gdpr

Browser metrics Passed 4 tests

An overview of browser requirements for LittleBot ACH for Stripe + Plaid
Normal browser usage
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,955 ▲35917.67 ▲2.399.56 ▼1.5546.49 ▼6.01
Dashboard /wp-admin3,236 ▲3028.07 ▲1.91163.84 ▲24.68120.79 ▲11.84
Posts /wp-admin/edit.php3,025 ▲2864.43 ▲1.7181.76 ▲20.51101.52 ▲14.90
Add New Post /wp-admin/post-new.php1,713 ▲21518.78 ▼0.02352.42 ▼17.41107.36 ▼2.21
Media Library /wp-admin/upload.php1,824 ▲144.88 ▼0.13109.46 ▼38.07125.58 ▲3.13
Stripe + Plaid /wp-admin/options-general.php?page=stripe_plaid1,5374.1685.5191.46
LittleBot ACH for Stripe + Plaid /wp-admin/admin.php?page=ach-for-stripe-plaid1,6033.8174.11122.36
Freemius Debug [v.2.3.2] /wp-admin/admin.php?page=freemius1,7423.9581.2175.26

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

🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
You still need to fix the following
  • The uninstall procedure has failed, leaving 7 options in the database
    • fs_gdpr
    • fs_debug_mode
    • stripe_plaid_settings_db
    • stripe_plaid_settings
    • stripe_plaid_log
    • fs_active_plugins
    • fs_accounts

Smoke tests 50% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | This is a shallow check for server-side errors
Everything seems fine, however this is by no means an exhaustive test

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
The following issues need your attention
  • 9× PHP files perform the task of outputting text when accessed with GET requests:
    • > /wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/examples/oauth.php
    • > /wp-content/plugins/ach-for-stripe-plaid/admin/partials/wp-stripe-plaid-admin-display.php
    • > /wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/tests/bootstrap.php
    • > /wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/update_certs.php
    • > /wp-content/plugins/ach-for-stripe-plaid/freemius/templates/ajax-loader.php
    • > /wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/tests/bootstrap.no_autoload.php
    • > /wp-content/plugins/ach-for-stripe-plaid/public/partials/payment-form.php
    • > /wp-content/plugins/ach-for-stripe-plaid/public/partials/wp-stripe-plaid-public-display.php
    • > /wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/build.php
  • 164× PHP files trigger server errors when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\TestCase' not found in wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/tests/Stripe/HttpClient/CurlClientTest.php:7
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\TestCase' not found in wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/tests/SubscriptionItemTest.php:5
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\TestCase' not found in wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/tests/Stripe/CouponTest.php:5
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\TestCase' not found in wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/tests/PermissionsErrorTest.php:5
    • > PHP Notice
      Undefined variable: argv in wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/build.php on line 5
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\ApiResource' not found in wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/lib/ThreeDSecure.php:5
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\TestCase' not found in wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/tests/TokenTest.php:5
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\TestCase' not found in wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/tests/ProductTest.php:5
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\TestCase' not found in wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/tests/Stripe/AlipayAccountTest.php:5
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\TestCase' not found in wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/tests/Stripe/CustomerTest.php:5

User-side errors Passed 1 test

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

Optimizations

Plugin configuration 90% from 29 tests

readme.txt Passed 16 tests

It's important to format your readme.txt file correctly as it is parsed for the public listing of your plugin
8 plugin tags: stripe, e-commerce, ecommerce, ach, plaid...

ach-for-stripe-plaid/wp-stripe-plaid.php 77% from 13 tests

The entry point to "LittleBot ACH for Stripe + Plaid" version 1.2.8 is a PHP file that has certain tags in its header comment area
You should first fix the following items:
  • Main file name: Name the main plugin file the same as the plugin slug ("ach-for-stripe-plaid.php" instead of "wp-stripe-plaid.php")
  • Git Repository: Please remove the Git repository from this plugin
  • Text Domain: You no longer need to specify the text domain since WordPress 4.6; it must be the same as the plugin slug

Code Analysis 3% from 3 tests

File types 0% from 1 test

🔸 Test weight: 35 | An overview of files in this plugin; executable files are not allowed
Almost there! Just fix the following issues
  • Do not include executable or dangerous files in your plugin
    • .crt - Security Certificate in Firefox, IE, Chrome, Safari
      • wp-content/plugins/ach-for-stripe-plaid/vendor/stripe/stripe-php/data/ca-certificates.crt
61,572 lines of code in 392 files:
LanguageFilesBlank linesComment linesLines of code
PHP3099,03219,14240,882
PO File137,5159,13516,441
Sass35461802,847
Markdown52800696
JavaScript675133386
JSON500137
CSS135489
YAML49164
XML20030

PHP code 50% from 2 tests

A brief analysis of cyclomatic complexity and code structure for this plugin
These items need your attention
  • Cyclomatic complexity of classes should be reduced to less than 1000 (currently 2,772)
Cyclomatic complexity
Average complexity per logical line of code0.46
Average class complexity19.76
▷ Minimum class complexity1.00
▷ Maximum class complexity2,772.00
Average method complexity3.26
▷ Minimum method complexity1.00
▷ Maximum method complexity86.00
Code structure
Namespaces7
Interfaces4
Traits7
Classes223
▷ Abstract classes104.48%
▷ Concrete classes21395.52%
▷ Final classes00.00%
Methods1,975
▷ Static methods29414.89%
▷ Public methods1,58180.05%
▷ Protected methods321.62%
▷ Private methods36218.33%
Functions108
▷ Named functions9991.67%
▷ Anonymous functions98.33%
Constants290
▷ Global constants10235.17%
▷ Class constants18864.83%
▷ Public constants188100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

PNG files should be compressed to save space and minimize bandwidth usage
5 PNG files occupy 0.03MB with 0.01MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
freemius/assets/img/theme-icon.png10.97KB5.78KB▼ 47.37%
freemius/assets/img/plugin-icon.png9.16KB5.26KB▼ 42.58%
freemius/assets/img/ach-for-stripe-plaid.png9.16KB5.26KB▼ 42.58%
vendor/stripe/stripe-php/tests/data/test.png0.09KB0.09KB0.00%
vendor/stripe/stripe-php/data/test.png0.09KB0.09KB0.00%