40% matomo

Code Review | Matomo Analytics - Ethical Stats. Powerful Insights.

WordPress plugin Matomo Analytics - Ethical Stats. Powerful Insights. scored40%from 54 tests.

About plugin

  • Plugin page: matomo
  • Plugin version: 4.15.3
  • PHP compatiblity: 7.2.5+
  • PHP version: 7.4.16
  • WordPress compatibility: 2.4.0-6.3.2
  • WordPress version: 6.3.1
  • First release: Feb 13, 2020
  • Latest release: Nov 5, 2023
  • Number of updates: 50
  • Update frequency: every 29.7 days
  • Top authors: matomoteam (100%)

Code review

54 tests

User reviews

136 reviews

Install metrics

80,000+ active /1,083,497 total downloads

Benchmarks

Plugin footprint 29% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | It is important to correctly install your plugin, without throwing errors or notices
The plugin installed successfully, without throwing any errors or notices

Server metrics [RAM: ▲0.14MB] [CPU: ▼6.58ms] 75% from 4 tests

Analyzing server-side resources used by Matomo Analytics - Ethical Stats. Powerful Insights.
Please take the time to fix the following items
  • RAM: Total memory usage must be kept under 10MB (currently 10.68MB on /wp-admin/admin.php?page=matomo-summary)
PageMemory (MB)CPU Time (ms)
Home /3.58 ▲0.1237.40 ▼5.32
Dashboard /wp-admin3.43 ▲0.0948.83 ▼13.01
Posts /wp-admin/edit.php4.04 ▲0.6852.49 ▲3.63
Add New Post /wp-admin/post-new.php6.12 ▲0.2392.49 ▼7.14
Media Library /wp-admin/upload.php3.36 ▲0.1334.82 ▼0.86
Reporting /wp-admin/admin.php?page=matomo-reporting7.12204.02
Summary /wp-admin/admin.php?page=matomo-summary10.68456.66
Diagnostics /wp-admin/admin.php?page=matomo-systemreport6.2664.78
Marketplace /wp-admin/admin.php?page=matomo-marketplace3.4234.02
Settings /wp-admin/admin.php?page=matomo-settings5.8355.46
About /wp-admin/admin.php?page=matomo-about3.3729.03
Get Started /wp-admin/admin.php?page=matomo-get-started3.3834.32
Tag Manager /wp-admin/admin.php?page=matomo-tagmanager5.7446.39

Server storage [IO: ▲53.71MB] [DB: ▲0.07MB] 33% from 3 tests

Filesystem and database footprint
Just a few items left to fix
  • The plugin illegally modified 103 files (3,202.10KB) outside of "wp-content/plugins/matomo/" and "wp-content/uploads/"
    • (new file) wp-content/cache/matomo/assets/asset_manager_chunk.0.js.gz
    • (new file) wp-content/cache/matomo/assets/asset_manager_chunk.1.js
    • (new file) wp-content/cache/matomo/assets/asset_manager_non_core_js.js.gz
    • (new file) wp-content/cache/matomo/assets/asset_manager_chunk.2.js.gz
    • (new file) wp-content/cache/matomo/assets/asset_manager_non_core_js.js
    • (new file) wp-content/cache/matomo/assets/asset_manager_chunk.1.js.gz
    • (new file) wp-content/cache/matomo/assets/asset_manager_global_css.css
    • (new file) wp-content/cache/matomo/assets/asset_manager_global_css.css.gz
    • (new file) wp-content/cache/matomo/assets/asset_manager_chunk.0.js
    • (new file) wp-content/cache/matomo/assets/asset_manager_chunk.2.js
    • ...
  • Filesystem usage must be lower than 25MB (currently using 53.71MB)
Filesystem: 6,462 new files
Database: 47 new tables, 17 new options
New tables
wp_matomo_archive_numeric_2023_09
wp_matomo_access
wp_matomo_tagmanager_container_version
wp_matomo_report
wp_matomo_archive_numeric_2023_02
wp_matomo_site_url
wp_matomo_log_visit
wp_matomo_twofactor_recovery_code
wp_matomo_log_conversion_item
wp_matomo_log_profiling
...
New WordPress options
db_upgraded
matomo-user-login-1
matomo-plugin-version-matomo
matomo-before-cron-matomo_scheduled_archive
matomo-install-date
matomo-roles-setup
widget_recent-posts
matomo-matomo_salt
matomo-after-cron-matomo_scheduled_archive
widget_theysaidso_widget
...

Browser metrics Passed 4 tests

Checking browser requirements for Matomo Analytics - Ethical Stats. Powerful Insights.
This plugin renders optimally with no browser resource issues detected
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,849 ▲10214.67 ▲0.541.63 ▼0.0237.33 ▼5.62
Dashboard /wp-admin2,257 ▲795.59 ▼0.0891.22 ▼19.9940.42 ▼5.76
Posts /wp-admin/edit.php2,162 ▲621.95 ▼0.0239.62 ▲3.0435.88 ▲0.58
Add New Post /wp-admin/post-new.php6,236 ▲4,70019.06 ▼4.00931.67 ▲286.9261.83 ▼13.45
Media Library /wp-admin/upload.php1,462 ▲624.17 ▼0.03105.37 ▲8.9242.81 ▲1.53
Reporting /wp-admin/admin.php?page=matomo-reporting5,30410.14403.20152.20
Summary /wp-admin/admin.php?page=matomo-summary1,7483.3687.6534.97
Diagnostics /wp-admin/admin.php?page=matomo-systemreport1,8531.8128.3446.29
Marketplace /wp-admin/admin.php?page=matomo-marketplace1,3532.1425.2235.02
Settings /wp-admin/admin.php?page=matomo-settings2,2592.2328.8367.62
About /wp-admin/admin.php?page=matomo-about1,1112.1726.2129.70
Get Started /wp-admin/admin.php?page=matomo-get-started9942.2026.4630.73
Tag Manager /wp-admin/admin.php?page=matomo-tagmanager1,2827.98246.8646.11

Uninstaller [IO: ▲54.34MB] [DB: ▲0.07MB] 0% 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
  • Uninstall procedure had uncaught errors
    • > Error in wp-content/plugins/matomo/shared.php+29
    Cannot redeclare matomo_plugin_autoloader() (previously declared in wp-content/plugins/matomo/shared.php:29)
  • Uninstaller has failed for this plugin, leaving 6,463 files (53.71MB) in the plugin directory
    • (new file) app/DIObject.php
    • (new file) LEGALNOTICE
    • (new file) app/LegacyAutoloader.php
    • (new file) app/PRIVACY.md
    • (new file) app/.htaccess
    • (new file) app/LICENSE
    • (new file) app/LEGALNOTICE
    • (new file) .env.default
    • (new file) LICENSE
    • (new file) .htaccess
    • ...
  • This plugin does not fully uninstall, leaving 47 tables in the database
    • wp_matomo_session
    • wp_matomo_archive_numeric_2023_08
    • wp_matomo_site
    • wp_matomo_sequence
    • wp_matomo_archive_numeric_2023_07
    • wp_matomo_archive_invalidations
    • wp_matomo_user
    • wp_matomo_archive_numeric_2023_06
    • wp_matomo_goal
    • wp_matomo_tagmanager_container
    • ...
  • The uninstall procedure has failed, leaving 22 options in the database
    • matomo-referral-dismissed
    • matomo-roles-setup
    • matomo-before-cron-matomo_scheduled_sync
    • matomo-after-cron-matomo_scheduled_archive
    • matomo-after-cron-matomo_scheduled_sync
    • theysaidso_admin_options
    • matomo-matomo_salt
    • matomo-after-cron-matomo_scheduled_geoipdb
    • widget_recent-comments
    • widget_theysaidso_widget
    • ...

Smoke tests 25% from 4 tests

Server-side errors 0% from 1 test

🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
These errors were triggered by the plugin
  • 9 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=matomo-systemreport
    • > Notice in wp-content/plugins/matomo/app/core/IP.php+49
    Undefined index: proxy_client_headers
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/am.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/ar.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/be.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/bg.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/bn.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/bs.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/ca.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/cs.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/cy.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/da.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/de.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/el.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/en.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/eo.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/es-ar.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/es.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/et.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/eu.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/fa.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/fi.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/fr.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/gl.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/he.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/hi.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/hr.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/hu.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/id.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/is.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/it.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/ja.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/ka.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/ko.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/ku.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/lt.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/lv.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/nb.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/nl.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/nn.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/pl.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/pt-br.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/pt.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/ro.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/ru.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/sk.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/sl.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/sq.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/sr.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/sv.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/ta.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/te.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/th.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/tl.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/tr.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/uk.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/vi.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/zh-cn.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/plugins/LanguagesManager/API.php+369
    file_get_contents(wp-content/plugins/matomo/app/plugins/Intl/lang/zh-tw.json): failed to open stream: No such file or directory
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/core/ProxyHttp.php+287
    filemtime(): stat failed for wp-content/cache/matomo/assets/asset_manager_non_core_js.js.gz
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/core/ProxyHttp.php+287
    filemtime(): stat failed for wp-content/cache/matomo/assets/asset_manager_chunk.0.js.gz
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/core/ProxyHttp.php+287
    filemtime(): stat failed for wp-content/cache/matomo/assets/asset_manager_chunk.1.js.gz
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/core/ProxyHttp.php+287
    filemtime(): stat failed for wp-content/cache/matomo/assets/asset_manager_global_css.css.gz
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Warning in wp-content/plugins/matomo/app/core/ProxyHttp.php+287
    filemtime(): stat failed for wp-content/cache/matomo/assets/asset_manager_chunk.2.js.gz
  • 12 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=matomo-reporting
    • > Notice in wp-content/plugins/matomo/app/plugins/API/API.php+350
    Undefined index: processedMetrics

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
Please fix the following items
  • 9× GET requests to PHP files return non-empty strings:
    • > /wp-content/plugins/matomo/app/vendor/mustangostang/spyc/php4/5to4.php
    • > /wp-content/plugins/matomo/app/piwik.php
    • > /wp-content/plugins/matomo/app/core/testMinimumPhpVersion.php
    • > /wp-content/plugins/matomo/app/vendor/phpmailer/phpmailer/get_oauth_token.php
    • > /wp-content/plugins/matomo/app/config/global.ini.php
    • > /wp-content/plugins/matomo/app/index.php
    • > /wp-content/plugins/matomo/config/common.config.ini.php
    • > /wp-content/plugins/matomo/app/vendor/mustangostang/spyc/examples/yaml-load.php
    • > /wp-content/plugins/matomo/app/matomo.php
  • 2140× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'Twig\ode\\Expression\\Binary\\AbstractBinary' not found in wp-content/plugins/matomo/app/vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php:16
    • > PHP Fatal error
      Uncaught Error: Class 'Zend_Session_Validator_Abstract' not found in wp-content/plugins/matomo/app/libs/Zend/Session/Validator/HttpUserAgent.php:37
    • > PHP Fatal error
      Uncaught Error: Class 'Piwik\\QuickForm2' not found in wp-content/plugins/matomo/app/plugins/TwoFactorAuth/FormTwoFactorAuthCode.php:16
    • > PHP Fatal error
      Uncaught Error: Class 'Twig\\Extension\\AbstractExtension' not found in wp-content/plugins/matomo/app/vendor/twig/twig/src/Extension/EscaperExtension.php:18
    • > PHP Fatal error
      Uncaught Error: Class 'Doctrine\\Common\\Cache\\CacheProvider' not found in wp-content/plugins/matomo/app/vendor/matomo/doctrine-cache-fork/lib/Doctrine/Common/Cache/MongoDBCache.php:14
    • > PHP Fatal error
      Uncaught Error: Class 'Twig\ode\\Expression\\AbstractExpression' not found in wp-content/plugins/matomo/app/core/View/MethodCallExpression.php:18
    • > PHP Fatal error
      Uncaught Error: Class 'Piwik\\Plugins\\TagManager\\Template\\Tag\\BaseTag' not found in wp-content/plugins/matomo/app/plugins/TagManager/Template/Tag/DriftTag.php:17
    • > PHP Fatal error
      Uncaught Error: Class 'Piwik\\Plugins\\TagManager\\Template\\Trigger\\BaseTrigger' not found in wp-content/plugins/matomo/app/plugins/TagManager/Template/Trigger/JavaScriptErrorTrigger.php:11
    • > PHP Fatal error
      Uncaught Error: Class 'Piwik\\Plugin\\Dimension\\ActionDimension' not found in wp-content/plugins/matomo/app/plugins/Contents/Columns/ContentInteraction.php:18
    • > PHP Fatal error
      Uncaught Error: Class 'Piwik\\Plugin\\Controller' not found in wp-content/plugins/matomo/app/plugins/Overlay/Controller.php:27

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)
No browser errors were detected

Optimizations

Plugin configuration 93% from 29 tests

readme.txt Passed 16 tests

The readme.txt file describes your plugin functionality and requirements and it is parsed to prepare the your plugin's listing
7 plugin tags: statistics, stats, piwik, matomo, analytics...

matomo/matomo.php 85% from 13 tests

The main file in "Matomo Analytics - Ethical Stats. Powerful Insights." v. 4.15.3 serves as a complement to information provided in readme.txt and as the entry point to the plugin
Please make the necessary changes and fix the following:
  • Requires at least: The required version number did not match the one declared in readme.txt ("4.8" instead of "2.4.0")
  • Description: Please keep the plugin description shorter than 140 characters (currently 142 characters long)

Code Analysis 95% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | Executable files are not allowed as they can serve as attack vectors
Everything looks great! No dangerous files found in this plugin742,867 lines of code in 4,560 files:
LanguageFilesBlank linesComment linesLines of code
PHP3,02360,419132,366356,565
JSON19000219,966
JavaScript1318,7587,29950,516
YAML233,5462,78143,669
Vuejs Component1502,2451,23830,933
LESS1462,26115511,644
TypeScript2631,9992,33910,732
Twig2991,5244710,493
Markdown762,00304,649
CSS24315712,068
SVG2251291,352
HTML6180232
reStructuredText324744
Bourne Shell1204

PHP code 0% from 2 tests

An overview of cyclomatic complexity and code structure
These items need your attention
  • Cyclomatic complexity of classes should be reduced to less than 1000 (currently 4,415)
  • Cyclomatic complexity of methods has to be reduced to less than 100 (currently 500)
Cyclomatic complexity
Average complexity per logical line of code0.38
Average class complexity15.69
▷ Minimum class complexity1.00
▷ Maximum class complexity4,415.00
Average method complexity3.29
▷ Minimum method complexity1.00
▷ Maximum method complexity500.00
Code structure
Namespaces516
Interfaces92
Traits8
Classes2,736
▷ Abstract classes1585.77%
▷ Concrete classes2,57894.23%
▷ Final classes662.56%
Methods18,309
▷ Static methods2,03011.09%
▷ Public methods13,24672.35%
▷ Protected methods2,51413.73%
▷ Private methods2,54913.92%
Functions1,177
▷ Named functions35229.91%
▷ Anonymous functions82570.09%
Constants2,215
▷ Global constants42919.37%
▷ Class constants1,78680.63%
▷ Public constants1,75798.38%

Plugin size 50% from 2 tests

Image compression 50% from 2 tests

It is recommended to compress PNG files in your plugin to minimize bandwidth usage
1445 PNG files occupy 1.63MB with 0.40MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
app/plugins/Morpheus/icons/dist/flags/ma.png0.28KB0.22KB▼ 20.57%
app/plugins/Morpheus/icons/dist/searchEngines/blekko.com.png0.41KB0.77KB0.00%
app/plugins/Morpheus/icons/dist/SEO/alexa.com.png2.52KB2.33KB▼ 7.86%
app/plugins/Morpheus/icons/dist/brand/Fondi.png0.63KB0.60KB▼ 6.15%
app/plugins/Morpheus/images/sort_subtable_desc.png0.96KB0.11KB▼ 88.47%