Benchmarks
Plugin footprint 65% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | Checking the installer triggered no errors
The plugin installed successfully, without throwing any errors or notices
Server metrics [RAM: ▲1.02MB] [CPU: ▲4.30ms] Passed 4 tests
A check of server-side resources used by Off Page SEO
Server-side resource usage in normal parameters
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 4.49 ▲1.03 | 48.17 ▲7.17 |
Dashboard /wp-admin | 4.33 ▲1.03 | 56.30 ▲5.86 |
Posts /wp-admin/edit.php | 4.38 ▲1.02 | 52.00 ▲2.88 |
Add New Post /wp-admin/post-new.php | 6.91 ▲1.02 | 90.96 ▲1.70 |
Media Library /wp-admin/upload.php | 4.26 ▲1.02 | 39.13 ▲6.75 |
Tools /wp-admin/admin.php?page=ops_tools | 4.23 | 36.96 |
Search Console /wp-admin/admin.php?page=ops_search_console | 4.23 | 36.63 |
Backlinks /wp-admin/admin.php?page=ops_backlinks | 4.25 | 44.53 |
Premium /wp-admin/admin.php?page=ops_premium | 4.23 | 38.13 |
Off Page SEO /wp-admin/admin.php?page=ops | 4.31 | 40.65 |
Settings /wp-admin/admin.php?page=ops_settings | 5.10 | 45.16 |
Server storage [IO: ▲4.34MB] [DB: ▲0.00MB] Passed 3 tests
How much does this plugin use your filesystem and database?
No storage issues were detected
Filesystem: 841 new files
Database: 1 new table, 6 new options
New tables |
---|
wp_ops_rankings |
New WordPress options |
---|
theysaidso_admin_options |
widget_theysaidso_widget |
can_compress_scripts |
widget_recent-posts |
db_upgraded |
widget_recent-comments |
Browser metrics Passed 4 tests
Checking browser requirements for Off Page SEO
There were no issues detected in relation to browser resource usage
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,884 ▲149 | 14.81 ▲0.17 | 2.07 ▲0.14 | 42.20 ▲2.38 |
Dashboard /wp-admin | 2,252 ▲60 | 5.83 ▲0.75 | 97.22 ▼9.85 | 38.39 ▼3.41 |
Posts /wp-admin/edit.php | 2,141 ▲52 | 2.06 ▲0.09 | 35.38 ▼4.26 | 31.31 ▼3.46 |
Add New Post /wp-admin/post-new.php | 1,576 ▲54 | 23.05 ▼0.29 | 671.64 ▲5.67 | 59.61 ▲4.80 |
Media Library /wp-admin/upload.php | 1,434 ▲49 | 4.19 ▼0.00 | 101.93 ▼4.00 | 42.67 ▼1.81 |
Tools /wp-admin/admin.php?page=ops_tools | 990 | 1.87 | 31.14 | 28.80 |
Search Console /wp-admin/admin.php?page=ops_search_console | 961 | 1.84 | 26.76 | 25.86 |
Backlinks /wp-admin/admin.php?page=ops_backlinks | 1,390 | 2.41 | 38.51 | 33.54 |
Premium /wp-admin/admin.php?page=ops_premium | 1,232 | 2.17 | 34.53 | 56.08 |
Off Page SEO /wp-admin/admin.php?page=ops | 1,028 | 1.84 | 28.21 | 28.37 |
Settings /wp-admin/admin.php?page=ops_settings | 4,264 | 2.22 | 45.29 | 38.61 |
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
- The plugin did not uninstall successfully, leaving 1 table in the database
- wp_ops_rankings
- Zombie WordPress options were found after uninstall: 6 options
- widget_recent-posts
- widget_theysaidso_widget
- widget_recent-comments
- theysaidso_admin_options
- can_compress_scripts
- db_upgraded
Smoke tests 75% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
Even though no errors were found, 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 take a closer look at the following
- 407× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Interface 'GuzzleHttp\\Exception\\GuzzleException' not found in wp-content/plugins/off-page-seo/lib/third-party/google/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php:5
- > PHP Fatal error
Uncaught Error: Class 'phpseclib3\\Crypt\\EC\\Curves\\secp256r1' not found in wp-content/plugins/off-page-seo/lib/third-party/google/vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/prime256v1.php:18
- > PHP Fatal error
Uncaught Error: Class 'GuzzleHttp\\Cookie\\CookieJar' not found in wp-content/plugins/off-page-seo/lib/third-party/google/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php:8
- > PHP Warning
Class 'Google\\Task\\Retryable' not found in wp-content/plugins/off-page-seo/lib/third-party/google/vendor/google/apiclient/src/aliases.php on line 33
- > PHP Fatal error
Trait 'Google\\Auth\\CacheTrait' not found in wp-content/plugins/off-page-seo/lib/third-party/google/vendor/google/auth/src/GCECache.php on line 38
- > PHP Fatal error
Uncaught Error: Class 'phpseclib3\\Math\\Common\\FiniteField' not found in wp-content/plugins/off-page-seo/lib/third-party/google/vendor/phpseclib/phpseclib/phpseclib/Math/PrimeField.php:30
- > PHP Fatal error
Uncaught Error: Call to undefined function plugins_url() in wp-content/plugins/off-page-seo/templates/part-popup.php:5
- > PHP Fatal error
Uncaught Error: Class 'Monolog\\Formatter\ormalizerFormatter' not found in wp-content/plugins/off-page-seo/lib/third-party/google/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php:20
- > PHP Fatal error
Uncaught Error: Interface 'Psr\\Http\\Message\\StreamInterface' not found in wp-content/plugins/off-page-seo/lib/third-party/google/vendor/guzzlehttp/psr7/src/NoSeekStream.php:12
- > PHP Fatal error
Uncaught Error: Class 'phpseclib3\\Crypt\\EC\\Curves\\sect233r1' not found in wp-content/plugins/off-page-seo/lib/third-party/google/vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/nistb233.php:18
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
No browser issues were found
Optimizations
Plugin configuration 97% from 29 tests
readme.txt 94% from 16 tests
The readme.txt file is important because it is parsed by WordPress.org for the public listing of your plugin
These attributes need your attention:
- Tags: There are too many tags (15 tag instead of maximum 10)
off-page-seo/off-page-seo.php Passed 13 tests
"Off Page SEO" version 3.0.3's primary PHP file adds more information about the plugin and serves as the entry point for WordPress
57 characters long description:
Provides various tools to help you with the off-page SEO.
Code Analysis 97% from 3 tests
File types Passed 1 test
🔸 Test weight: 35 | An overview of files in this plugin; executable files are not allowed
No dangerous file extensions were detected84,178 lines of code in 808 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 720 | 12,968 | 40,394 | 62,233 |
CSS | 4 | 0 | 27 | 7,461 |
LESS | 5 | 1,931 | 15 | 6,663 |
Markdown | 28 | 1,702 | 0 | 5,048 |
JSON | 21 | 0 | 0 | 1,786 |
JavaScript | 2 | 157 | 41 | 715 |
YAML | 6 | 24 | 1 | 121 |
Python | 1 | 22 | 25 | 72 |
XML | 3 | 0 | 0 | 41 |
SVG | 16 | 0 | 0 | 26 |
make | 1 | 4 | 0 | 9 |
Bourne Shell | 1 | 2 | 0 | 3 |
PHP code 50% from 2 tests
An short overview of logical lines of code, cyclomatic complexity, and other code metrics
Please fix the following
- Cyclomatic complexity of methods should be reduced to less than 100 (currently 106)
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.38 |
Average class complexity | 12.44 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 657.00 |
Average method complexity | 3.28 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 106.00 |
Code structure | ||
---|---|---|
Namespaces | 75 | |
Interfaces | 42 | |
Traits | 14 | |
Classes | 658 | |
▷ Abstract classes | 215 | 32.67% |
▷ Concrete classes | 443 | 67.33% |
▷ Final classes | 39 | 8.80% |
Methods | 3,605 | |
▷ Static methods | 644 | 17.86% |
▷ Public methods | 2,731 | 75.76% |
▷ Protected methods | 403 | 11.18% |
▷ Private methods | 471 | 13.07% |
Functions | 205 | |
▷ Named functions | 71 | 34.63% |
▷ Anonymous functions | 134 | 65.37% |
Constants | 510 | |
▷ Global constants | 35 | 6.86% |
▷ Class constants | 475 | 93.14% |
▷ Public constants | 455 | 95.79% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
It is recommended to compress PNG files in your plugin to minimize bandwidth usage
2 PNG files occupy 0.05MB with 0.03MB in potential savings
Potential savings
Compression of 2 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
img/logo.png | 13.63KB | 3.79KB | ▼ 72.19% |
img/mascot.png | 34.81KB | 16.32KB | ▼ 53.10% |