Benchmarks
Plugin footprint 23% from 16 tests
Installer 0% from 1 test
🔺 Critical test (weight: 50) | Checking the installer triggered no errors
The following installer errors require your attention
- Install procedure had errors
- > Deprecated in wp-content/plugins/cross-linker/crosslink.php+682
Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`
Server metrics [RAM: ▼1.19MB] [CPU: ▼189.38ms] Passed 4 tests
An overview of server-side resources used by Cross-Linker
Normal server usage
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 2.44 ▼0.28 | 8.92 ▼12.83 |
Dashboard /wp-admin | 2.45 ▼0.60 | 11.55 ▼37.86 |
Posts /wp-admin/edit.php | 2.46 ▼0.65 | 6.63 ▼41.07 |
Add New Post /wp-admin/post-new.php | 2.45 ▼2.98 | 9.73 ▼643.72 |
Media Library /wp-admin/upload.php | 2.45 ▼0.55 | 7.14 ▼34.86 |
Cross-Linker /wp-admin/tools.php?page=crosslinker | 2.46 | 10.99 |
Server storage [IO: ▲0.27MB] [DB: ▲0.01MB] Passed 3 tests
Input-output and database impact of this plugin
This plugin installed successfully
Filesystem: 46 new files
Database: 10 new tables, 1 new option
New tables |
---|
wp_interlinker_special_chars |
wp_interlinker_backups |
wp_interlinker_lng_wds |
wp_interlinker_attributes |
wp_interlinker |
wp_interlinker_stats_details |
wp_interlinker_settings |
wp_interlinker_stats_main |
wp_interlinker_divide_chars |
wp_interlinker_multilang |
New WordPress options |
---|
jal_db_version |
Browser metrics Passed 4 tests
Cross-Linker: an overview of browser usage
This plugin renders optimally with no browser resource issues detected
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,756 ▲160 | 15.85 ▲0.42 | 9.44 ▼0.80 | 61.03 ▲11.66 |
Dashboard /wp-admin | 2,994 ▲60 | 6.13 ▲0.02 | 144.02 ▼15.20 | 144.84 ▲13.23 |
Posts /wp-admin/edit.php | 2,770 ▲31 | 2.83 ▲0.12 | 69.96 ▲0.56 | 98.76 ▲1.83 |
Add New Post /wp-admin/post-new.php | 1,663 ▼20 | 21.20 ▲2.43 | 286.60 ▼89.13 | 161.45 ▲39.45 |
Media Library /wp-admin/upload.php | 1,778 ▼29 | 5.02 ▼0.03 | 172.96 ▼0.91 | 176.27 ▲35.42 |
Cross-Linker /wp-admin/tools.php?page=crosslinker | 3,979 | 2.88 | 96.37 | 107.00 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.01MB] 25% from 4 tests
🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
Please fix the following items
- This plugin did not uninstall without warnings or errors
- > Deprecated in wp-content/plugins/cross-linker/crosslink.php+682
Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`
- Zombie tables detected upon uninstall: 10 tables
- wp_interlinker_attributes
- wp_interlinker_multilang
- wp_interlinker_settings
- wp_interlinker_divide_chars
- wp_interlinker_stats_details
- wp_interlinker_special_chars
- wp_interlinker_backups
- wp_interlinker
- wp_interlinker_lng_wds
- wp_interlinker_stats_main
- This plugin does not fully uninstall, leaving 1 option in the database
- jal_db_version
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)
Almost there, just fix the following server-side errors
- 6 occurences, only the last one shown
- > GET request to /wp-admin/tools.php?page=crosslinker
- > POST request to /wp-content/plugins/cross-linker/assets/process/list_hyperlinked_words.php
- > Deprecated in wp-content/plugins/cross-linker/crosslink.php+682
Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+450
Undefined index: cut_empty_spaces
- 2 occurences, only the last one shown
- > GET request to /wp-admin/tools.php?page=crosslinker
- > User deprecated in wp-includes/functions.php+5495
has_cap was called with an argument that is deprecated since version 2.0.0! Usage of user levels is deprecated. Use capabilities instead.
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+970
Undefined index: del_word
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+971
Undefined index: del_lang
- 2 occurences, only the last one shown
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+450
Undefined index: force_backup_days
- 2 occurences, only the last one shown
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+450
Undefined index: remove_old_backups
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+450
Undefined index: cl_data_filename
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1072
Undefined variable: optimisation_done
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/assets/process/show_crosslink_console.php+14
Undefined index: hyperlink_console
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/assets/process/show_crosslink_console.php+67
Undefined variable: add_permalinks
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1158
Undefined index: multilingual
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1196
Undefined index: blogrollmanagement
- 2 occurences, only the last one shown
- > GET request to /wp-admin/tools.php?page=crosslinker
- > POST request to /wp-content/plugins/cross-linker/assets/process/list_hyperlinked_words.php
- > Notice in wp-content/plugins/cross-linker/assets/process/list_hyperlinked_words.php+19
Undefined index: current_connections
- 2 occurences, only the last one shown
- > GET request to /wp-admin/tools.php?page=crosslinker
- > POST request to /wp-content/plugins/cross-linker/assets/process/list_hyperlinked_words.php
- > Notice in wp-content/plugins/cross-linker/assets/process/list_hyperlinked_words.php+95
Undefined variable: add_where
- 4 occurences, only the last one shown
- > GET request to /wp-admin/tools.php?page=crosslinker
- > POST request to /wp-content/plugins/cross-linker/assets/process/list_hyperlinked_words.php
- > Notice in wp-content/plugins/cross-linker/crosslink.php+450
Undefined index: clnkr_pagings
- 8 occurences, only the last one shown
- > GET request to /wp-admin/tools.php?page=crosslinker
- > POST request to /wp-content/plugins/cross-linker/assets/process/list_hyperlinked_words.php
- > Notice in wp-content/plugins/cross-linker/assets/process/list_hyperlinked_words.php+189
Undefined variable: orderme
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+450
Undefined index: delete_option
- 2 occurences, only the last one shown
- > GET request to /wp-admin/tools.php?page=crosslinker
- > POST request to /wp-content/plugins/cross-linker/assets/process/list_hyperlinked_words.php
- > Notice in wp-content/plugins/cross-linker/assets/process/list_hyperlinked_words.php+307
Undefined variable: bulk_id_js
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1259
Undefined index: word_replacement
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1331
Undefined index: ignored_html_tags
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1374
Undefined index: ignored_characters
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1475
Undefined variable: show_limits
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1484
Undefined variable: show_maxlimits
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1514
Undefined index: manage_settings
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1602
Undefined index: manage_backups
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1677
Undefined index: manage_imports
- > GET request to /wp-admin/tools.php?page=crosslinker
- > Notice in wp-content/plugins/cross-linker/crosslink.php+1716
Undefined index: optimizedb
- 6 occurences, only the last one shown
- > GET request to /wp-admin/tools.php?page=crosslinker
- > POST request to /wp-content/plugins/cross-linker/assets/process/list_ignored_chars.php
- > Notice in wp-content/plugins/cross-linker/assets/process/list_ignored_chars.php+22
Undefined variable: i
SRP 0% 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
Almost there! Just fix the following items
- 35× PHP files output text when accessed directly (only 10 are shown):
- > /wp-content/plugins/cross-linker/assets/process/list_hyperlinked_words.php
- > /wp-content/plugins/cross-linker/assets/process/backup_settings.php
- > /wp-content/plugins/cross-linker/assets/process/update_settings.php
- > /wp-content/plugins/cross-linker/assets/process/prepend.php
- > /wp-content/plugins/cross-linker/assets/process/deactivate_language.php
- > /wp-content/plugins/cross-linker/assets/process/ignored_chars.php
- > /wp-content/plugins/cross-linker/assets/process/delete_backup.php
- > /wp-content/plugins/cross-linker/assets/process/assign_attributes.php
- > /wp-content/plugins/cross-linker/assets/process/add_link.php
- > /wp-content/plugins/cross-linker/assets/process/show_crosslink_console.php
- 3× GET requests to PHP files have triggered server-side errors or warnings:
- > PHP Notice
Trying to get property 'prefix' of non-object in wp-content/plugins/cross-linker/crosslink.php on line 439
- > PHP Fatal error
Uncaught Error: Call to a member function get_results() on null in wp-content/plugins/cross-linker/crosslink.php:442
- > PHP Notice
Trying to get property 'prefix' of non-object in wp-content/plugins/cross-linker/crosslink.php on line 2468
- > PHP Notice
User-side errors Passed 1 test
🔹 Test weight: 20 | Just a short smoke test targeting errors on the browser (console and network errors and warnings)
There were no browser issues found
Optimizations
Plugin configuration 90% from 29 tests
readme.txt 94% from 16 tests
Don't ignore readme.txt as it is the file that instructs WordPress.org on how to present your plugin to the world
Attributes that require attention:
- Tags: You are using too many tags: 13 tag instead of maximum 10
cross-linker/crosslink.php 85% from 13 tests
This is the main PHP file of "Cross-Linker" version 3.0.1.9, providing information about the plugin in the header fields and serving as the principal entry point to the plugin's functions
Please take the time to fix the following:
- Description: If Twitter did it, so should we! Keep the description under 140 characters (currently 148 characters long)
- Main file name: Even though not officially enforced, the main plugin file should be the same as the plugin slug ("cross-linker.php" instead of "crosslink.php")
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | Executable files are considered dangerous and should not be included with any WordPress plugin
Everything looks great! No dangerous files found in this plugin4,891 lines of code in 42 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 39 | 1,079 | 405 | 4,223 |
JavaScript | 1 | 189 | 108 | 625 |
CSS | 1 | 0 | 0 | 33 |
SVG | 1 | 0 | 0 | 10 |
PHP code Passed 2 tests
A brief analysis of cyclomatic complexity and code structure for this plugin
Great job! No cyclomatic complexity issues were detected in this plugin
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.31 |
Average class complexity | 40.50 |
▷ Minimum class complexity | 3.00 |
▷ Maximum class complexity | 78.00 |
Average method complexity | 2.93 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 27.00 |
Code structure | ||
---|---|---|
Namespaces | 0 | |
Interfaces | 0 | |
Traits | 0 | |
Classes | 2 | |
▷ Abstract classes | 0 | 0.00% |
▷ Concrete classes | 2 | 100.00% |
▷ Final classes | 0 | 0.00% |
Methods | 41 | |
▷ Static methods | 0 | 0.00% |
▷ Public methods | 40 | 97.56% |
▷ Protected methods | 0 | 0.00% |
▷ Private methods | 1 | 2.44% |
Functions | 10 | |
▷ Named functions | 10 | 100.00% |
▷ Anonymous functions | 0 | 0.00% |
Constants | 33 | |
▷ Global constants | 16 | 48.48% |
▷ Class constants | 17 | 51.52% |
▷ Public constants | 17 | 100.00% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
PNG files should be compressed to save space and minimize bandwidth usage
2 compressed PNG files occupy 0.00MB
Potential savings
Compression of 2 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
assets/img/link-1271843_640.png | 0.42KB | 0.41KB | ▼ 2.78% |
warning.png | 1.48KB | 1.70KB | 0.00% |