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
This plugin's installer ran successfully
Server metrics [RAM: ▲0.84MB] [CPU: ▲9.91ms] Passed 4 tests
A check of server-side resources used by Limit Login Attempts
Normal server usage
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 4.43 ▲0.96 | 53.91 ▲14.68 |
Dashboard /wp-admin | 4.14 ▲0.84 | 55.00 ▲8.43 |
Posts /wp-admin/edit.php | 4.19 ▲0.83 | 53.36 ▲6.62 |
Add New Post /wp-admin/post-new.php | 6.74 ▲0.85 | 114.31 ▲9.91 |
Media Library /wp-admin/upload.php | 4.06 ▲0.83 | 47.56 ▲15.85 |
Notifications /wp-admin/admin.php?page=notifications | 4.15 | 67.97 |
Upgrade /wp-admin/admin.php?page=upgrade | 4.05 | 39.97 |
Limit Login Attempts /wp-admin/admin.php?page=Limit_Login_Attempts | 4.05 | 44.47 |
Reports /wp-admin/admin.php?page=reports | 4.05 | 44.42 |
Premium Features /wp-admin/admin.php?page=advancedblocking | 4.12 | 45.10 |
Dashboard /wp-admin/admin.php?page=dashboard | 4.05 | 45.97 |
Account /wp-admin/admin.php?page=wpnsaccount | 4.09 | 45.47 |
Settings /wp-admin/admin.php?page=mo_lla_login_and_spam | 4.22 | 51.24 |
Server storage [IO: ▲1.80MB] [DB: ▲0.01MB] Passed 3 tests
How much does this plugin use your filesystem and database?
No storage issues were detected
Filesystem: 93 new files
Database: 6 new tables, 25 new options
New tables |
---|
wp_wpns_attack_logs |
wp_wpns_email_sent_audit |
wp_wpns_blocked_ips |
wp_wpns_transactions |
wp_wpns_ip_rate_details |
wp_wpns_whitelisted_ips |
New WordPress options |
---|
XSSAttack |
mo_lla_activate_recaptcha_for_comments |
WAFEnabled |
limitAttack |
widget_recent-posts |
mo_lla_new_registration |
theysaidso_admin_options |
widget_recent-comments |
widget_theysaidso_widget |
mo_lla_activate_recaptcha_for_email_subscription |
... |
Browser metrics Passed 4 tests
An overview of browser requirements for Limit Login Attempts
Minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,939 ▲178 | 13.73 ▼0.64 | 2.01 ▲0.35 | 35.11 ▼6.75 |
Dashboard /wp-admin | 2,314 ▲134 | 5.04 ▼0.64 | 89.08 ▲0.97 | 84.50 ▲43.46 |
Posts /wp-admin/edit.php | 2,165 ▲65 | 2.38 ▲0.37 | 34.57 ▼4.04 | 33.22 ▼1.93 |
Add New Post /wp-admin/post-new.php | 1,729 ▲201 | 22.50 ▼0.61 | 647.92 ▼36.66 | 33.86 ▼24.08 |
Media Library /wp-admin/upload.php | 1,459 ▲59 | 4.57 ▲0.37 | 97.42 ▼14.74 | 70.01 ▲21.71 |
Notifications /wp-admin/admin.php?page=notifications | 2,026 | 8.60 | 172.39 | 104.11 |
Upgrade /wp-admin/admin.php?page=upgrade | 1,198 | 2.08 | 28.26 | 43.80 |
Limit Login Attempts /wp-admin/admin.php?page=Limit_Login_Attempts | 1,079 | 4.14 | 107.98 | 41.59 |
Reports /wp-admin/admin.php?page=reports | 1,324 | 2.52 | 45.55 | 42.51 |
Premium Features /wp-admin/admin.php?page=advancedblocking | 2,273 | 2.20 | 29.02 | 48.66 |
Dashboard /wp-admin/admin.php?page=dashboard | 1,072 | 3.15 | 111.18 | 38.13 |
Account /wp-admin/admin.php?page=wpnsaccount | 1,069 | 2.06 | 28.55 | 33.69 |
Settings /wp-admin/admin.php?page=mo_lla_login_and_spam | 2,284 | 2.46 | 54.17 | 46.31 |
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
Please fix the following items
- Zombie WordPress options detected upon uninstall: 8 options
- db_upgraded
- widget_theysaidso_widget
- widget_recent-comments
- widget_recent-posts
- mo_lla_activate_recaptcha_for_email_subscription
- theysaidso_admin_options
- mo_lla_new_registration
- can_compress_scripts
Smoke tests 50% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | A smoke test targeting server-side errors
Even though no errors were found, this is by no means an exhaustive test
SRP 0% from 2 tests
🔹 Tests weight: 20 | SRP (Single-Responsibility Principle) - PHP files must act as libraries and never output text or perform any action when accessed directly in a browser
Please fix the following items
- 4× PHP files perform the action of outputting non-empty strings when accessed directly:
- > /wp-content/plugins/miniorange-limit-login-attempts/views/setup-wizard/one.php
- > /wp-content/plugins/miniorange-limit-login-attempts/handler/mowpns-setup-wizard.php
- > /wp-content/plugins/miniorange-limit-login-attempts/views/setup-wizard/three.php
- > /wp-content/plugins/miniorange-limit-login-attempts/views/setup-wizard/two.php
- 72× PHP files trigger server errors when accessed directly (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Class 'Mo_lla_MoWpnsHandler' not found in wp-content/plugins/miniorange-limit-login-attempts/controllers/reports.php:19
- > PHP Warning
include_once(): Failed opening 'controllers/content-protection.php' for inclusion (include_path='.:/usr/share/php') in wp-content/plugins/miniorange-limit-login-attempts/views/login_spam.php on line 70
- > PHP Fatal error
Uncaught Error: Call to undefined function add_query_arg() in wp-content/plugins/miniorange-limit-login-attempts/controllers/navbar.php:6
- > PHP Warning
include_once(): Failed opening 'views/ip-blocking.php' for inclusion (include_path='.:/usr/share/php') in wp-content/plugins/miniorange-limit-login-attempts/views/login_spam.php on line 41
- > PHP Fatal error
Uncaught Error: Class 'Mo_lla_MoWpnsHandler' not found in wp-content/plugins/miniorange-limit-login-attempts/controllers/ip-blocking.php:4
- > PHP Fatal error
Uncaught Error: Class 'Mo_lla_MoWpnsDB' not found in wp-content/plugins/miniorange-limit-login-attempts/controllers/dashboard.php:4
- > PHP Warning
include_once(): Failed opening 'controllers/login-security.php' for inclusion (include_path='.:/usr/share/php') in wp-content/plugins/miniorange-limit-login-attempts/views/login_spam.php on line 34
- > PHP Warning
include_once(views/ip-blocking.php): failed to open stream: No such file or directory in wp-content/plugins/miniorange-limit-login-attempts/views/login_spam.php on line 41
- > PHP Fatal error
Uncaught Error: Call to undefined function get_option() in wp-content/plugins/miniorange-limit-login-attempts/handler/spam.php:7
- > PHP Fatal error
Uncaught Error: Call to undefined function esc_html() in wp-content/plugins/miniorange-limit-login-attempts/views/login_spam.php:84
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
Everything seems fine on the user side
Optimizations
Plugin configuration 96% from 29 tests
readme.txt Passed 16 tests
The readme.txt file is important because it is parsed by WordPress.org for the public listing of your plugin
10 plugin tags: traffic blocking, google recaptcha, spam protection, rename login url, ip blocking...
miniorange-limit-login-attempts/mo_limit_login_widget.php 92% from 13 tests
The main file in "Limit Login Attempts" v. 5.0.2 serves as a complement to information provided in readme.txt and as the entry point to the plugin
You should first fix the following items:
- Main file name: Even though not officially enforced, the main plugin file should be the same as the plugin slug ("miniorange-limit-login-attempts.php" instead of "mo_limit_login_widget.php")
Code Analysis Passed 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
Everything looks great! No dangerous files found in this plugin9,931 lines of code in 72 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 62 | 1,079 | 150 | 7,508 |
CSS | 7 | 302 | 34 | 2,187 |
JavaScript | 3 | 22 | 15 | 236 |
PHP code Passed 2 tests
An short overview of logical lines of code, cyclomatic complexity, and other code metrics
No cyclomatic complexity issues were detected for this plugin
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.31 |
Average class complexity | 27.78 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 116.00 |
Average method complexity | 3.50 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 24.00 |
Code structure | ||
---|---|---|
Namespaces | 0 | |
Interfaces | 0 | |
Traits | 0 | |
Classes | 18 | |
▷ Abstract classes | 0 | 0.00% |
▷ Concrete classes | 18 | 100.00% |
▷ Final classes | 0 | 0.00% |
Methods | 193 | |
▷ Static methods | 28 | 14.51% |
▷ Public methods | 180 | 93.26% |
▷ Protected methods | 0 | 0.00% |
▷ Private methods | 13 | 6.74% |
Functions | 42 | |
▷ Named functions | 42 | 100.00% |
▷ Anonymous functions | 0 | 0.00% |
Constants | 81 | |
▷ Global constants | 4 | 4.94% |
▷ Class constants | 77 | 95.06% |
▷ Public constants | 77 | 100.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
16 PNG files occupy 0.24MB with 0.08MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
includes/images/error.png | 1.04KB | 1.13KB | 0.00% |
includes/images/mowpns-security-logo.png | 11.86KB | 6.04KB | ▼ 49.07% |
includes/images/support3.png | 2.49KB | 2.11KB | ▼ 15.28% |
includes/images/wrong.png | 30.98KB | 13.50KB | ▼ 56.42% |
includes/images/miniorange_logo.png | 1.95KB | 1.16KB | ▼ 40.58% |