Benchmarks
Plugin footprint 83% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | The install procedure must perform silently
This plugin's installer ran successfully
Server metrics [RAM: ▲1.29MB] [CPU: ▲23.68ms] Passed 4 tests
Analyzing server-side resources used by HearMe.ai
Server-side resource usage in normal parameters
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 4.76 ▲1.30 | 64.45 ▲23.46 |
Dashboard /wp-admin | 4.64 ▲1.29 | 74.42 ▲10.99 |
Posts /wp-admin/edit.php | 4.69 ▲1.33 | 78.25 ▲31.74 |
Add New Post /wp-admin/post-new.php | 7.18 ▲1.29 | 123.37 ▲28.53 |
Media Library /wp-admin/upload.php | 4.50 ▲1.27 | 64.97 ▲34.43 |
Setup Wizard /wp-admin/admin.php?page=hear-me-wizard | 6.62 | 72.40 |
Server storage [IO: ▲2.65MB] [DB: ▲0.00MB] Passed 3 tests
Filesystem and database footprint
No storage issues were detected
Filesystem: 484 new files
Database: no new tables, 6 new options
New WordPress options |
---|
widget_recent-comments |
widget_recent-posts |
can_compress_scripts |
widget_theysaidso_widget |
db_upgraded |
theysaidso_admin_options |
Browser metrics Passed 4 tests
A check of browser resources used by HearMe.ai
There were no issues detected in relation to browser resource usage
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,876 ▲130 | 14.47 ▲0.17 | 1.67 ▼0.59 | 35.71 ▼7.11 |
Dashboard /wp-admin | 2,285 ▲97 | 4.88 ▼0.01 | 100.54 ▼6.72 | 70.55 ▲26.50 |
Posts /wp-admin/edit.php | 2,168 ▲79 | 2.03 ▲0.02 | 39.73 ▲3.45 | 36.51 ▲3.66 |
Add New Post /wp-admin/post-new.php | 1,589 ▲47 | 22.93 ▲4.65 | 724.20 ▲94.62 | 51.96 ▼10.38 |
Media Library /wp-admin/upload.php | 1,458 ▲76 | 4.23 ▲0.04 | 97.87 ▼0.32 | 71.84 ▲28.93 |
Setup Wizard /wp-admin/admin.php?page=hear-me-wizard | 973 | 2.04 | 29.52 | 45.08 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 75% from 4 tests
🔸 Tests weight: 35 | It is important to correctly uninstall your plugin, without leaving any traces
The following items require your attention
- This plugin does not fully uninstall, leaving 6 options in the database
- theysaidso_admin_options
- widget_theysaidso_widget
- can_compress_scripts
- widget_recent-comments
- widget_recent-posts
- db_upgraded
Smoke tests 75% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | This is a shallow check for server-side errors
The smoke test was a success, however most plugin functionality was not tested
SRP 50% 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
Please fix the following items
- 209× GET requests to PHP files have triggered server-side errors or warnings (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Interface 'Symfony\\Component\\Dotenv\\Exception\\ExceptionInterface' not found in wp-content/plugins/hearme-ai/vendor/symfony/dotenv/Exception/FormatException.php:19
- > PHP Fatal error
Uncaught Error: Class 'HearMe\\Includes\\HMA_Endpoint' not found in wp-content/plugins/hearme-ai/src/Endpoints/HMA_GenerateAllDrafts.php:8
- > PHP Fatal error
Uncaught Error: Interface 'Psr\\Http\\Message\\UploadedFileInterface' not found in wp-content/plugins/hearme-ai/vendor/guzzlehttp/psr7/src/UploadedFile.php:12
- > PHP Fatal error
Uncaught Error: Class 'HearMe\\Includes\\HMA_Endpoint' not found in wp-content/plugins/hearme-ai/src/Endpoints/HMA_GetPlayer.php:9
- > PHP Fatal error
Uncaught Error: Class 'PHPUnit\\Framework\\TestCase' not found in wp-content/plugins/hearme-ai/vendor/twig/twig/src/Test/IntegrationTestCase.php:30
- > PHP Fatal error
Uncaught Error: Class 'GuzzleHttp\\Exception\\TransferException' not found in wp-content/plugins/hearme-ai/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:15
- > PHP Fatal error
Uncaught Error: Class 'HearMe\\Includes\\HMA_Endpoint' not found in wp-content/plugins/hearme-ai/src/Endpoints/HMA_CostInfo.php:10
- > PHP Fatal error
Uncaught Error: Class 'Twig\ode\ode' not found in wp-content/plugins/hearme-ai/vendor/twig/twig/src/Node/BlockNode.php:22
- > PHP Fatal error
Uncaught Error: Class 'Twig\\TokenParser\\AbstractTokenParser' not found in wp-content/plugins/hearme-ai/vendor/twig/twig/src/TokenParser/FlushTokenParser.php:25
- > PHP Fatal error
Uncaught Error: Class 'Twig\ode\\Expression\\AbstractExpression' not found in wp-content/plugins/hearme-ai/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php:17
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a shallow check for browser errors
Everything seems fine, but this is not an exhaustive test
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
4 plugin tags: voice, hearme, podcast, blog
hearme-ai/hearme-ai.php 92% from 13 tests
The main file in "HearMe.ai" v. 1.15.6 serves as a complement to information provided in readme.txt and as the entry point to the plugin
The following require your attention:
- 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 | A short review of files and their extensions; it is not recommended to include executable files
Everything looks great! No dangerous files found in this plugin34,496 lines of code in 423 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 352 | 5,309 | 10,418 | 26,935 |
Markdown | 20 | 1,298 | 0 | 3,753 |
JSON | 15 | 0 | 0 | 1,617 |
SVG | 8 | 0 | 0 | 1,478 |
Twig | 18 | 18 | 0 | 284 |
JavaScript | 4 | 26 | 1 | 245 |
YAML | 3 | 45 | 33 | 164 |
reStructuredText | 1 | 8 | 5 | 10 |
make | 1 | 4 | 0 | 9 |
CSS | 1 | 0 | 0 | 1 |
PHP code Passed 2 tests
This is a very shot review of cyclomatic complexity and code structure
This plugin has no cyclomatic complexity problems
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.47 |
Average class complexity | 9.95 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 166.00 |
Average method complexity | 2.69 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 33.00 |
Code structure | ||
---|---|---|
Namespaces | 51 | |
Interfaces | 39 | |
Traits | 3 | |
Classes | 287 | |
▷ Abstract classes | 20 | 6.97% |
▷ Concrete classes | 267 | 93.03% |
▷ Final classes | 103 | 38.58% |
Methods | 1,767 | |
▷ Static methods | 210 | 11.88% |
▷ Public methods | 1,483 | 83.93% |
▷ Protected methods | 63 | 3.57% |
▷ Private methods | 221 | 12.51% |
Functions | 327 | |
▷ Named functions | 186 | 56.88% |
▷ Anonymous functions | 141 | 43.12% |
Constants | 129 | |
▷ Global constants | 11 | 8.53% |
▷ Class constants | 118 | 91.47% |
▷ Public constants | 106 | 89.83% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
PNG files should be compressed to save space and minimize bandwidth usage
4 PNG files occupy 0.01MB with 0.01MB in potential savings
Potential savings
Compression of 4 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
assets/img/before_p.png | 2.23KB | 0.93KB | ▼ 58.29% |
assets/img/after_h.png | 2.24KB | 0.97KB | ▼ 56.64% |
assets/img/before_h.png | 2.32KB | 0.99KB | ▼ 57.49% |
assets/img/after_p.png | 2.22KB | 0.94KB | ▼ 57.59% |