Repository Analysis

matomo-org/matomo

Empowering People Ethically 🚀 — Matomo is hiring! Join us → https://matomo.org/jobs Matomo is the leading open-source alternative to Google Analytics, giving you complete control and built-in privacy. Easily collect, visualise, and analyse data from websites & apps. Star us on GitHub ⭐️ – Pull Requests welcome!

6.0 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of matomo-org/matomo, a PHP project with 21,733 GitHub stars. SynthScan v2.0 examined 1,727,596 lines of code across 11153 source files, recording 8996 pattern matches distributed across 11 syntactic categories. The overall adjusted score of 6.0 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

6.0
Adjusted Score
6.0
Raw Score
100%
Time Factor
2026-08-01
Last Push
21.7K
Stars
PHP
Language
1.7M
Lines of Code
11.2K
Files
9.0K
Pattern Hits
2026-08-02
Scan Date
0.02
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 192HIGH 1MEDIUM 23LOW 8780

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 8996 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers7507 hits · 7986 pts
SeverityFileLineSnippetContext
LOWvue.config.js63function OutputDetectedDependentPluginsPlugin() {}CODE
LOWcore/Access.php206 public function getRawSitesWithSomeViewAccess($login)CODE
LOWcore/Access.php364 public function getSitesIdWithAtLeastViewAccess()CODE
LOWcore/Access.php383 public function getSitesIdWithAtLeastWriteAccess()CODE
LOWcore/Access.php400 public function getSitesIdWithAdminAccess()CODE
LOWcore/Access.php431 public function getSitesIdWithWriteAccess()CODE
LOWcore/Access.php443 public function checkUserHasSuperUserAccess()CODE
LOWcore/Access.php487 public function checkUserHasSomeWriteAccess()CODE
LOWcore/Access.php499 public function checkUserHasSomeAdminAccess()CODE
LOWcore/Access.php511 public function checkUserHasSomeViewAccess()CODE
LOWcore/Segment.php301 private function getExpressionsWithUnionsResolved(array $expressions): arrayCODE
LOWcore/Segment.php364 private function getInvertedOperatorForSubQuery($operator)CODE
LOWcore/Segment.php772 private function mergeSubqueryExpressionsInTree(array $tree): arrayCODE
LOWcore/Segment.php783 private function mergeSubqueryExpressionsInExpr(array $expressions, bool $isAndChain): arrayCODE
LOWcore/Archive.php283 public static function shouldSkipArchiveIfSkippingSegmentArchiveForToday(Site $site, Period $period, Segment $segmenCODE
LOWcore/Archive.php400 public function getDataTableFromNumericAndMergeChildren($names)CODE
LOWcore/Archive.php506 public static function createDataTableFromArchive($recordName, $idSite, $period, $date, $segment, $expanded = false,CODE
LOWcore/Archive.php627 private function addDataToResultCollection(CODE
LOWcore/Archive.php717 private function cacheArchiveIdsAfterLaunching($archiveNamesByPlugin): voidCODE
LOWcore/Archive.php772 private function cacheArchiveIdsWithoutLaunching($plugins): voidCODE
LOWcore/Archive.php1037 private function getArchiveIdsAndStatesByMonth($doneFlags): arrayCODE
LOWcore/Archive.php1081 public function forceFetchingWithoutLaunchingArchiving()CODE
LOWcore/Mail.php360 protected function parseDomainPlaceholderAsPiwikHostName($email)CODE
LOWcore/DataArray.php44 public function getDataArrayWithTwoLevels()CODE
LOWcore/DataArray.php361 public function enrichMetricsWithConversions()CODE
LOWcore/SettingsServer.php55 public static function setIsNotTrackerApiRequest()CODE
LOWcore/SettingsServer.php147 public static function raiseMemoryLimitIfNecessary()CODE
LOWcore/SettingsServer.php233 private static function getMegaBytesFromShorthandByte($value)CODE
LOWcore/Filesystem.php252 public static function unlinkTargetFilesNotPresentInSource($source, $target)CODE
LOWcore/Filesystem.php276 public static function sortFilesDescByPathLength($files)CODE
LOWcore/Filesystem.php539 private static function tryToCopyFileAndVerifyItWasCopied($source, $dest)CODE
LOWcore/Filesystem.php573 public static function isFileSystemCaseInsensitive(): boolCODE
LOWcore/Filesystem.php617 private static function createIndexFilesToPreventDirectoryListing($path)CODE
LOWcore/Cookie.php458 private static function getSameSiteValueForBrowser($default)CODE
LOWcore/Plugin.php162 private function hasDefinedPluginInformationInPluginClass()CODE
LOWcore/Plugin.php261 public function requiresInternetConnection()CODE
LOWcore/Plugin.php477 public function getMissingDependenciesAsString($piwikVersion = null)CODE
LOWcore/Plugin.php518 public function schedulePluginReArchiving()CODE
LOWcore/Plugin.php549 public static function getPluginNameFromBacktrace($backtrace)CODE
LOWcore/Plugin.php570 public static function getPluginNameFromNamespace($namespaceOrClassName)CODE
LOWcore/Plugin.php597 public function getPluginLastActivationTime()CODE
LOWcore/Plugin.php611 public function getPluginLastDeactivationTime()CODE
LOWcore/ArchiveProcessor.php214 public function aggregateDataTableRecords(CODE
LOWcore/ArchiveProcessor.php322 public function getNumberOfVisitsConverted()CODE
LOWcore/ArchiveProcessor.php402 protected function getAggregatedDataTableMapFromBlobs(\Iterator $dataTableBlobs, $columnsAggregationOperation, $coluCODE
LOWcore/ArchiveProcessor.php445 public function areColumnsNotAlreadyRenamed($table)CODE
LOWcore/ArchiveProcessor.php465 protected function enrichWithUniqueVisitorsMetric(Row $row)CODE
LOWcore/ArchiveProcessor.php543 private function getIdSitesToComputeNbUniques()CODE
LOWcore/ArchiveProcessor.php595 protected function getAggregatedDataTableMap($data, $columnsAggregationOperation)CODE
LOWcore/ArchiveProcessor.php616 protected function aggregatedDataTableMapsAsOne(Map $map, DataTable $aggregated)CODE
LOWcore/ArchiveProcessor.php630 public function renameColumnsAfterAggregation(DataTable $table, $columnsToRenameAfterAggregation = null)CODE
LOWcore/ArchiveProcessor.php653 protected function getAggregatedNumericMetrics($columns, $operationsToApply)CODE
LOWcore/Theme.php107 private function rewriteAssetPathIfOverridesFound($src)CODE
LOWcore/Http.php142 public static function ensureDestinationDirectoryExists($destinationPath)CODE
LOWcore/Http.php1045 public static function getClientHintsFromServerVariables(): arrayCODE
LOWcore/Nonce.php95 public static function verifyNonceWithErrorMessage($id, $cnonce, $allowedReferrerHost = null)CODE
LOWcore/UpdateCheck.php76 private static function getLatestAvailableVersionNumber()CODE
LOWcore/AssetManager.php116 public function setMinimalStylesheetFetcher($minimalStylesheetFetcher)CODE
LOWcore/AssetManager.php227 public function getMergedNonCoreJavaScript()CODE
LOWcore/AssetManager.php376 protected function getIndividualCoreAndNonCoreJsIncludes(): stringCODE
7447 more matches not shown…
Hallucination Indicators192 hits · 1568 pts
SeverityFileLineSnippetContext
CRITICALplugins/CoreVisualizations/javascripts/jqplot.js565 this.jqplotParams.axes.xaxis.ticksOriginal = this.jqplotParams.axes.xaxis.ticks.slice();CODE
CRITICALplugins/CoreVisualizations/javascripts/jqplot.js568 var ticks = this.jqplotParams.axes.xaxis.ticks = this.jqplotParams.axes.xaxis.ticksOriginal.slice();CODE
CRITICALplugins/Overlay/javascripts/Piwik_Overlay.js487 var currentHashStr = window.CoreHome.MatomoUrl.url.value.hash.replace(/^[#/?]+/g, '');CODE
CRITICALplugins/Overlay/javascripts/Piwik_Overlay.js500 hashChangeCallback(window.CoreHome.MatomoUrl.url.value.hash.replace(/^[#/?]+/g, ''));CODE
CRITICALtests/javascript/frameworks/ext/ext-all-3.3.1.js7(function(){var h=Ext.util,k=Ext.each,g=true,i=false;h.Observable=function(){var l=this,m=l.events;if(l.listeners){l.on(CODE
CRITICALtests/javascript/frameworks/ext/ext-all-3.3.1.js11var swfobject=function(){var F="undefined",t="object",U="Shockwave Flash",Y="ShockwaveFlash.ShockwaveFlash",s="applicatiCODE
CRITICALtests/javascript/frameworks/ext/ext-base-2.3.0.js183return[tmp[0][0],tmp[0][1]];};};(function(){Ext.lib.ColorAnim=function(el,attributes,duration,method){Ext.lib.ColorAnim.CODE
CRITICALtests/javascript/frameworks/ext/ext-base-2.3.0.js216return Ext.lib.Easing.bounceOut(t*2-d,0,c,d)*.5+c*.5+b;}};(function(){Ext.lib.Motion=function(el,attributes,duration,metCODE
CRITICALtests/javascript/frameworks/ext/ext-base-2.3.0.js225else{superclass.setRuntimeAttribute.call(this,attr);}};var translateValues=function(val,start){var pageXY=Ext.lib.Dom.geCODE
CRITICALtests/javascript/frameworks/ext/ext-core-3.0.0.js9window.undefined=window.undefined;Ext={version:"3.0"};Ext.apply=function(d,e,b){if(b){Ext.apply(d,b)}if(d&&e&&typeof e==CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js710Ext.dd.DragSource.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js711if(this.afterDragEnter){this.afterDragEnter(target,e,id);}}},beforeDragEnter:function(target,e,id){return true;},alignElCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js720var data=this.getDragData(e);if(data&&this.onBeforeDrag(data,e)!==false){this.dragData=data;this.proxy.stop();Ext.dd.DraCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js723Ext.dd.DropTarget.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{isTarget:true});};Ext.extend(ExCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js726Ext.dd.DragZone=function(el,config){Ext.dd.DragZone.superclass.constructor.call(this,el,config);if(this.containerScroll)CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js729Ext.dd.DropZone=function(el,config){Ext.dd.DropZone.superclass.constructor.call(this,el,config);};Ext.extend(Ext.dd.DropCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js785Ext.data.SimpleStore=function(config){Ext.data.SimpleStore.superclass.constructor.call(this,Ext.apply(config,{reader:newCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js787Ext.data.SimpleStore.superclass.loadData.call(this,data,append);}});CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js789Ext.data.JsonStore=function(c){Ext.data.JsonStore.superclass.constructor.call(this,Ext.apply(c,{proxy:c.proxy||(!c.data?CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js805Ext.data.DataProxy=function(){this.addEvents('beforeload','load');Ext.data.DataProxy.superclass.constructor.call(this);}CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js807Ext.data.MemoryProxy=function(data){Ext.data.MemoryProxy.superclass.constructor.call(this);this.data=data;};Ext.extend(ECODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js810Ext.data.HttpProxy=function(conn){Ext.data.HttpProxy.superclass.constructor.call(this);this.conn=conn;this.useAjax=!connCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js814Ext.data.HttpProxy.superclass.destroy.call(this);}});CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js816Ext.data.ScriptTagProxy=function(config){Ext.data.ScriptTagProxy.superclass.constructor.call(this);Ext.apply(this,configCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js819this.fireEvent("load",this,o,trans.arg);trans.callback.call(trans.scope||window,result,trans.arg,true);},handleFailure:fCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js821Ext.data.JsonReader=function(meta,recordType){meta=meta||{};Ext.data.JsonReader.superclass.constructor.call(this,meta,reCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1040Ext.layout.FitLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,onLayout:function(ct,target){Ext.layout.FCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1043this.activeItem=item;item.show();this.layout();}},renderAll:function(ct,target){if(this.deferredRender){this.renderItem(CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1045Ext.layout.AnchorLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,getAnchorViewSize:function(ct,target){CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1085this.isSlid=false;if(this.animFloat!==false){this.beforeSlide();this.el.slideOut(this.getSlideAnchor(),{callback:functioCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1089var sd=this.splitEl.dom,s=sd.style;var sh=sd.offsetHeight;this.panel.setPosition(box.x,box.y+sh);s.left=(box.x)+'px';s.tCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1097Ext.layout.FormLayout=Ext.extend(Ext.layout.AnchorLayout,{labelSeparator:':',getAnchorViewSize:function(ct,target){returCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1103c.render('x-form-el-'+c.id);}else{Ext.layout.FormLayout.superclass.renderItem.apply(this,arguments);}},adjustWidthAnchorCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1111Ext.layout.Accordion.superclass.renderItem.apply(this,arguments);c.header.addClass('x-accordion-hd');c.on('beforeexpand'CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1116Ext.layout.TableLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:false,setContainer:function(ct){Ext.layout.TCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1263this.panel.el.dom.style.display='none';}},repair:function(xy,callback,scope){this.hide();if(typeof callback=="function")CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1266Ext.state.Provider=function(){this.addEvents("statechange");this.state={};Ext.state.Provider.superclass.constructor.callCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1275Ext.state.CookieProvider=function(config){Ext.state.CookieProvider.superclass.constructor.call(this);this.path="/";this.CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1276this.setCookie(name,value);Ext.state.CookieProvider.superclass.set.call(this,name,value);},clear:function(name){this.cleCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1580curNode=c;c.expand(false,false,f);};curNode.expand(false,false,f);},selectPath:function(path,attr,callback){attr=attr||"CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1581(this.useArrows?'x-tree-arrows':this.lines?"x-tree-lines":"x-tree-no-lines")});},initEvents:function(){Ext.tree.TreePaneCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1584this.getSelectionModel().init(this);},afterRender:function(){Ext.tree.TreePanel.superclass.afterRender.call(this);this.rCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1586this.root.destroy();this.nodeHash=null;Ext.tree.TreePanel.superclass.onDestroy.call(this);}});Ext.tree.TreePanel.nodeTypCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1614break;};}});Ext.tree.MultiSelectionModel=function(config){this.selNodes=[];this.selMap={};this.addEvents("selectionchangCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1621this.childrenRendered=false;this.rendered=false;Ext.tree.TreeNode.superclass.constructor.call(this,attributes);this.expaCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1622if(this.rendered){this.renderIndent(true,true);}},setLastChild:function(node){var ol=this.lastChild;Ext.tree.TreeNode.suCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1624var node=Ext.tree.TreeNode.superclass.appendChild.call(this,n);if(node&&this.childrenRendered){node.render();}CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1625this.ui.updateExpandIcon();return node;},removeChild:function(node){this.ownerTree.getSelectionModel().unselect(node);ExCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1629var newNode=Ext.tree.TreeNode.superclass.insertBefore.apply(this,arguments);if(newNode&&refNode&&this.childrenRendered){CODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1642this.childrenRendered=true;},sort:function(fn,scope){Ext.tree.TreeNode.superclass.sort.apply(this,arguments);if(this.chiCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1647Ext.tree.AsyncTreeNode=function(config){this.loaded=config&&config.loaded===true;this.loading=false;Ext.tree.AsyncTreeNoCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1650Ext.tree.AsyncTreeNode.superclass.expand.call(this,deep,anim,callback);},isLoading:function(){return this.loading;},loadCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1727if(Ext.dd.DragZone){Ext.tree.TreeDragZone=function(tree,config){Ext.tree.TreeDragZone.superclass.constructor.call(this,tCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1730Ext.tree.TreeEditor=function(tree,fc,config){fc=fc||{};var field=fc.events?fc:new Ext.form.TextField(fc);Ext.tree.TreeEdCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1733this.autoEditTimer=this.startEdit.defer(this.editDelay,this,[node.ui.textNode,value]);return false;}},bindScroll:functioCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1736Ext.apply(this,config);this.id=this.id||Ext.id();this.addEvents('beforeshow','beforehide','show','hide','click','mouseovCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1779Ext.menu.BaseItem=function(config){Ext.menu.BaseItem.superclass.constructor.call(this,config);this.addEvents('click','acCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1780Ext.menu.BaseItem.superclass.destroy.call(this);},render:function(container,parentMenu){this.parentMenu=parentMenu;Ext.mCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1786Ext.menu.TextItem.superclass.constructor.call(this,cfg);};Ext.extend(Ext.menu.TextItem,Ext.menu.BaseItem,{hideOnClick:faCODE
CRITICALtests/javascript/frameworks/ext/ext-all-2.3.0.js1788Ext.menu.Separator=function(config){Ext.menu.Separator.superclass.constructor.call(this,config);};Ext.extend(Ext.menu.SeCODE
132 more matches not shown…
Over-Commented Block1161 hits · 686 pts
SeverityFileLineSnippetContext
LOWcore/DataTable/Renderer/Xml.php261 // 0 =>COMMENT
LOWplugins/ExampleTheme/docs/index.md1## DocumentationCOMMENT
LOWplugins/ExampleTheme/stylesheets/theme.less1// Theme colors are defined through Theme.configureThemeVariables so they canCOMMENT
LOW…cking/Reports/AbstractAIChatbotFavouredPagesReport.php201 // For that to hold, all of the following must stay true (the BotTracking_spec.js pairingCOMMENT
LOW…tions/JqplotDataGenerator/ForecastSubPeriodFetcher.php361 return '' !== $column;COMMENT
LOW…tions/JqplotDataGenerator/ForecastSubPeriodFetcher.php881COMMENT
LOW…reVisualizations/vue/src/Sparklines/SparklineCard.less21 // Query container for the metric readout: MetricValue's number + heights scale with this width viaCOMMENT
LOW…tests/Unit/JqplotDataGenerator/ForecastBuilderTest.php801 // Same-DoW feed-forward also has to apply to MONOTONICITY_FREE series (ratios,COMMENT
LOW…tests/Unit/JqplotDataGenerator/ForecastBuilderTest.php841 // Tick 2: with feed-forward, $runningDailySamples['2026-04-28'] = 35. Walk from May 5COMMENT
LOW…tests/Unit/JqplotDataGenerator/ForecastBuilderTest.php901COMMENT
LOW…tests/Unit/JqplotDataGenerator/ForecastBuilderTest.php961 // the chunk-3 walk it lands on (100 + 100 + 500) / 3 = 233.33.COMMENT
LOW…tests/Unit/JqplotDataGenerator/ForecastBuilderTest.php1801 {COMMENT
LOW…tests/Unit/JqplotDataGenerator/ForecastBuilderTest.php1841 self::assertSame([[null, 2730.0]], $forecastData);COMMENT
LOW…tests/Unit/JqplotDataGenerator/ForecastBuilderTest.php1861 // Month-of-year scale (computeMonthOfYearScale, analogChunk = MONTH_ANALOG_CHUNK = 4):COMMENT
LOW…tests/Unit/JqplotDataGenerator/ForecastBuilderTest.php1921 // - April daily samples reproduce a per-month total of 1000 via the monthCOMMENT
LOW…s/PrivacyManager/tests/Integration/DataPurgingTest.php621 $this->checkLogDataPurged();COMMENT
LOWplugins/ImageGraph/StaticGraph/GridGraph.php421 // can not currently be used because pChart's label design is not flexible enoughCOMMENT
LOWplugins/ImageGraph/StaticGraph/GridGraph.php441// $Format = array(COMMENT
LOWplugins/ImageGraph/StaticGraph/GridGraph.php461// // display only one min & max labelCOMMENT
LOWplugins/ImageGraph/StaticGraph/GridGraph.php481// if ($value < $minValue)COMMENT
LOWplugins/CoreVue/types/plugin-modules.d.ts1// Plugin-name imports (e.g. `import { translate } from 'CoreHome'`) are wiredCOMMENT
LOWplugins/ExamplePlugin/docs/index.md1## DocumentationCOMMENT
LOWplugins/Actions/ArchivingHelper.php521 $configLimit = $configGeneral['archiving_ranking_query_row_limit'];COMMENT
LOW…/tests/Unit/Processor/ExceptionToTextProcessorTest.php141COMMENT
LOW…/tests/Unit/Processor/ExceptionToTextProcessorTest.php201 $wholeTrace = preg_replace('/\\(\\d+\\)/', '', $wholeTrace);COMMENT
LOW…/tests/Unit/Processor/ExceptionToTextProcessorTest.php261COMMENT
LOW…/tests/Unit/Processor/ExceptionToTextProcessorTest.php281#11 {main},COMMENT
LOWplugins/GeoIp2/data/isoRegionNames.php1<?phpCOMMENT
LOWjs/piwik.js1061COMMENT
LOWjs/piwik.js2341 // pk_vid = visitor IDCOMMENT
LOW…sources/extractSearchEngineInformationFromUrlTests.yml201# Bing mobile image search has a special URLCOMMENT
LOW…ts/PHPUnit/Unit/AssetManager/scripts/SimpleComments.js1//This is a simple commentCOMMENT
LOWtests/lib/q-1.4.1/spec/lib/jasmine-1.2.0/jasmine.css1body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; }COMMENT
LOWtests/lib/q-1.4.1/spec/lib/jasmine-1.2.0/jasmine.css21#HTMLReporter .symbolSummary li.pending:before { color: #aaaaaa; content: "-"; }COMMENT
LOWtests/lib/q-1.4.1/spec/lib/jasmine-1.2.0/jasmine.css41#HTMLReporter .summary .suite .suite, #HTMLReporter .summary .specSummary { margin-left: 14px; }COMMENT
LOWtests/lib/q-1.4.1/spec/lib/jasmine-1.2.0/jasmine.css61#TrivialReporter .options { text-align: right; font-size: .8em; }COMMENT
LOWtests/javascript/index.php201 // a. Let Pk be ToString(k).COMMENT
LOWtests/javascript/jslint/jslint.js1// jslint.jsCOMMENT
LOWtests/javascript/jslint/jslint.js21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERCOMMENT
LOWtests/javascript/jslint/jslint.js41// or an object whose keys are used as global names, with a boolean valueCOMMENT
LOWtests/javascript/jslint/jslint.js61// If a stopping error was found, a null will be the last element of theCOMMENT
LOWtests/javascript/jslint/jslint.js81// functions: [COMMENT
LOWtests/javascript/jslint/jslint.js101// STRINGCOMMENT
LOWtests/javascript/jslint/jslint.js121// STRING: NUMBERCOMMENT
LOWtests/javascript/jslint/jslint.js141// var myErrorReport = JSLINT.error_report(data);COMMENT
LOWtests/javascript/jslint/jslint.js161COMMENT
LOWtests/javascript/jslint/jslint.js181COMMENT
LOWtests/javascript/jslint/jslint.js201// forin true, if for in statements need not filterCOMMENT
LOWtests/javascript/frameworks/yui/yui-3.3.0.js3701// caps=1:1;2:0;3:1;COMMENT
LOWtests/javascript/frameworks/jquery/jquery-1.4.4.js941COMMENT
LOWtests/javascript/frameworks/jquery/jquery-1.2.6.js3381 // IE adds the HTML element's border, by default it is medium which is 2pxCOMMENT
LOWtests/javascript/frameworks/dojo/dojo-1.6.0.js61COMMENT
LOWtests/javascript/frameworks/dojo/dojo-1.6.0.js81 // only then are resources evaluated in dependency order viaCOMMENT
LOWtests/javascript/frameworks/dojo/dojo-1.6.0.js101 locale: undefined,COMMENT
LOWtests/javascript/frameworks/dojo/dojo-1.6.0.js121 // `djConfig.modulePaths = { "foo": "../../bar" }` is the equivalentCOMMENT
LOWtests/javascript/frameworks/dojo/dojo-1.6.0.js141 // require: ArrayCOMMENT
LOWtests/javascript/frameworks/dojo/dojo-1.6.0.js161 ioPublish: false,COMMENT
LOWtests/javascript/frameworks/dojo/dojo-1.6.0.js281 // Version number of the Dojo ToolkitCOMMENT
LOWtests/javascript/frameworks/dojo/dojo-1.6.0.js341 if(!(name in target) || (target[name] !== s && (!(name in empty) || empty[name] !== s))){COMMENT
LOWtests/javascript/frameworks/dojo/dojo-1.6.0.js361 // props:COMMENT
1101 more matches not shown…
Fake / Example Data97 hits · 116 pts
SeverityFileLineSnippetContext
LOWcore/Plugin.php183 * - 'author_homepage' => string // author homepage URL (or email "mailto:youremail@example.org")COMMENT
LOWcore/Updater.php123 * $mail->addTo('test@example.org');COMMENT
LOWcore/Db/Schema/Mysql.php649 VALUES ( 'anonymous', '', 'anonymous@example.org', '', 0, '$now', '$now' , NULL);");CODE
LOWcore/API/DocumentationGenerator.php217 'email' => 'test@example.org',CODE
LOWplugins/WebsiteMeasurable/MeasurableSettings.php192 'placeholder' => $ip,CODE
LOWplugins/WebsiteMeasurable/Settings/Urls.php43 'placeholder' => "http://example.com/\nhttps://www.example.org/",CODE
LOWplugins/CoreAdminHome/tests/Integration/TasksTest.php192 $this->assertEquals($mail->getEmailAddress(), 'hello@example.org');CODE
LOWplugins/CoreAdminHome/tests/Integration/TasksTest.php222 $this->assertEquals('hello@example.org', $mail->getEmailAddress());CODE
LOW…ins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue104 $materialInput.attr('placeholder', placeholder);CODE
LOW…oreVisualizations/Visualizations/Sparklines/Config.php205 'group' => 'placeholder' . count($this->sparklines),CODE
LOWplugins/ExampleUI/Controller.php19 $notification = new Notification('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');CODE
LOWplugins/ExampleUI/Controller.php19 $notification = new Notification('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');CODE
LOWplugins/ExampleUI/Controller.php22 $notification = new Notification('Neque porro quisquam est qui dolorem ipsum quia dolor sit amet.');CODE
LOWplugins/ExampleUI/Controller.php22 $notification = new Notification('Neque porro quisquam est qui dolorem ipsum quia dolor sit amet.');CODE
LOWplugins/Marketplace/tests/Integration/ApiTest.php277 self::assertSame(['hello@example.org' => ''], $sentMail->getRecipients());CODE
LOWplugins/Marketplace/Api/Service.php83 * @param null|array $postData eg array('email' => 'user@example.org')COMMENT
LOWplugins/Marketplace/Api/Service.php137 * @param null|array $postData eg array('email' => 'user@example.org')COMMENT
LOWplugins/ScheduledReports/API.php131 * 'additionalEmails' => ['user@example.com']]` for email reports.COMMENT
LOWplugins/ScheduledReports/API.php221 * 'additionalEmails' => ['user@example.com']]` for email reports.COMMENT
LOW…ledReports/tests/Integration/SubscriptionModelTest.php89 [true, [], 'hello@example.org', 1, false, []],CODE
LOW…ledReports/tests/Integration/SubscriptionModelTest.php91 [true, ['hello@example.org'], 'hello@example.org', 1, false, []],CODE
LOW…ledReports/tests/Integration/SubscriptionModelTest.php93 [false, ['hello@example.org'], 'hello@example.org', 1, false, []],CODE
LOW…ledReports/tests/Integration/SubscriptionModelTest.php97 [false, ['guest@example.org', 'test@matomo.org'], 'guest@example.org', 2, false, ['test@matomo.org']],CODE
LOWplugins/ScheduledReports/tests/Integration/ApiTest.php378 'additionalEmails' => array('test@test.com', 't2@test.com'),CODE
LOWplugins/ScheduledReports/tests/Integration/ApiTest.php1306 'additionalEmails' => array('test@test.com', 'test@test.com', 't2@test.com', 'test@test.com'),CODE
LOWplugins/ScheduledReports/tests/Integration/ApiTest.php1317 $expectedEmails = array('test@test.com', 't2@test.com');CODE
LOWplugins/ScheduledReports/tests/Integration/ApiTest.php1363 'additionalEmails' => array('test@test.com', 't2@test.com'),CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php445 $this->api->addUser("geggeqgeqag", "geqgeagae", "test@test.com");CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php455 $this->api->addUser("geggeqgeqag", "geqgeagae", "test@test.com");CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php1125 'email' => "test@test.com",CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php1143 'email' => "test@test.com",CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php1161 'email' => "test@test.com",CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php184 'email' => "test@test.com",CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php389 $this->api->addUser("geggeqgeqag", "geqgeagae", "test@test.com");CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php426 $this->api->addUser("geggeqgeqag", "geqgeagae", "test@test.com");CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php1178 'email' => "test@test.com",CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php1222 'email' => "test@test.com",CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php1245 'email' => "test@test.com",CODE
LOW…ns/UsersManager/tests/Integration/UsersManagerTest.php1329 'email' => "test@test.com",CODE
LOW…/UsersManager/tests/Integration/SystemSettingsTest.php77 $this->settings->allowedEmailDomains->setValue(['@maToMo.org', 'foo@matomo.com', ' foo @ example.com ', ' @exampCODE
LOW…gins/UsersManager/tests/Integration/ControllerTest.php128 $userEmail = 'test@test.com';CODE
LOW…UsersManager/tests/Integration/UserLoginHelperTest.php59 $this->assertNull(UserLoginHelper::findCanonicalLoginByLoginOrEmail('does-not-exist@example.org'));CODE
LOW…UsersManager/tests/Integration/UserLoginHelperTest.php66 $this->assertSame('does-not-exist@example.org', UserLoginHelper::normalizeLoginOrEmailToLogin('does-not-exist@exCODE
LOW…ests/Integration/Validators/AllowedEmailDomainTest.php106 $userApi->addUser('foo6', 'foo' . time(), 'foobar2@example.org');CODE
LOWplugins/CoreHome/vue/src/SiteSelector/SiteSelector.vue38 class="placeholder"CODE
LOW…ugins/CoreHome/vue/src/SearchInput/SearchInput.spec.ts20 expect(wrapper.find('input').attributes('placeholder')).toBe('General_Search');CODE
LOW…ns/GeoIp2/tests/System/ConvertRegionCodesToIsoTest.php53 $t->setUserId('userid.email@example.org');CODE
LOW…ns/GeoIp2/tests/System/ConvertRegionCodesToIsoTest.php73 $t->setUserId('userid.email@example.org');CODE
LOWplugins/SegmentEditor/tests/Integration/ApiTest.php771 \Piwik\Plugins\UsersManager\API::getInstance()->addUser('myUserLogin', 'password', 'test@test.com');CODE
LOWplugins/Login/tests/UI/Login_spec.js132 await page.type("#login_form_login", "hello@example.org");CODE
LOWplugins/Login/tests/Integration/ControllerTest.php87 $userEmail = 'test@test.com';CODE
LOWplugins/Login/tests/Integration/LoginTest.php348 'email' => 'test@test.com',CODE
LOWtests/resources/install-matomo.php98 $model->addUser($login, $password, 'hello@example.org', Date::now()->getDatetime());CODE
LOWtests/resources/install-matomo.php100 $model->updateUser($login, $password, 'hello@example.org');CODE
LOWtests/resources/lipsum.txt1Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ultricies tempor vulputate. Donec justo enim, cursus sitCODE
LOWtests/resources/lipsum.txt1Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ultricies tempor vulputate. Donec justo enim, cursus sitCODE
LOWtests/resources/lipsum.txt25Suspendisse vitae tempus tortor. Morbi ac leo eros, eget rhoncus libero. Vestibulum ante ipsum primis in faucibus orci lCODE
LOWtests/resources/lipsum.txt25Suspendisse vitae tempus tortor. Morbi ac leo eros, eget rhoncus libero. Vestibulum ante ipsum primis in faucibus orci lCODE
LOWtests/PHPUnit/Framework/Fixture.php785 $model->addUser($login, $password, 'hello@example.org', Date::now()->getDatetime());CODE
LOWtests/PHPUnit/Framework/Fixture.php787 $model->updateUser($login, $password, 'hello@example.org');CODE
37 more matches not shown…
Slop Phrases20 hits · 36 pts
SeverityFileLineSnippetContext
LOWcore/ViewDataTable/Config.php429 * Attention: Message will be printed raw. Don't forget to escape where needed!COMMENT
LOWcore/ViewDataTable/Config.php436 * Attention: Message will be printed raw. Don't forget to escape where needed!COMMENT
LOWcore/ViewDataTable/Config.php544 * Attention: Message will be printed raw. Don't forget to escape where needed!COMMENT
LOWplugins/Marketplace/tests/resources/v2.0_plugins.json1501 "faq": "<p><strong>I have a large database, can I install the plugin on the command line?</stronCODE
LOWplugins/Marketplace/tests/resources/v2.0_plugins.json1501 "faq": "<p><strong>I have a large database, can I install the plugin on the command line?</stronCODE
MEDIUMplugins/Marketplace/tests/resources/v2.0_plugins.json3564 "faq": "<p><strong>Why is PIWIK 2.5 required?</strong></p>\n\n<p>Because the configuration (to bCODE
MEDIUMplugins/Marketplace/tests/resources/v2.0_plugins.json4957 "faq": "<p><strong>What are the requirements for this plugin?</strong></p>\n\n<ul><li><a href=\"CODE
LOWplugins/Marketplace/tests/resources/v2.0_plugins.json4957 "faq": "<p><strong>What are the requirements for this plugin?</strong></p>\n\n<ul><li><a href=\"CODE
MEDIUM…gins/ExampleTracker/Columns/ExampleActionDimension.php50 * detected correctly, you may want to adjust the type manually. The configured type will affect how the dimensionCOMMENT
MEDIUM…/ExampleTracker/Columns/ExampleConversionDimension.php46 * detected correctly, you may want to adjust the type manually. The configured type will affect how the dimensionCOMMENT
MEDIUM…ugins/ExampleTracker/Columns/ExampleVisitDimension.php45 * detected correctly, you may want to adjust the type manually. The configured type will affect how the dimensionCOMMENT
LOWplugins/ExamplePlugin/Widgets/MyExampleWidget.php67 * twig template. In such a case don't forget to create a twig template (eg. myViewTemplate.twig) in theCOMMENT
LOWplugins/Feedback/lang/en.json72 "FormNotEnoughFeedbackText": "Please don't forget to share your feedback below.",CODE
MEDIUMplugins/GeoIp2/lang/en.json31 "HowToSetupGeoIPIntro": "You do not appear to have accurate Geolocation setup. This is a useful feature and withCODE
MEDIUMplugins/SEO/tests/resources/bing_response.html36//]]></script><div id="b_content"><main aria-label="Search Results"><div id="b_tween"><span class="sb_count">54.700 resuCOMMENT
LOWplugins/ExampleReport/Reports/GetExampleReport.php82 * report. Don't forget to create the defined twig template within the templates folder of your plugin in order toCOMMENT
LOWtests/PHPUnit/Integration/Columns/DimensionTest.php425 $this->fail("Dimension does no longer exist: $dimension\nPlease update list of available column dimensioCODE
LOWtests/javascript/frameworks/ext/ext-all-3.3.1.js7(function(){var h=Ext.util,k=Ext.each,g=true,i=false;h.Observable=function(){var l=this,m=l.events;if(l.listeners){l.on(CODE
LOWlibs/Zend/Db/Select.php461 * bindings, don't forget to pass the values when actuallyCOMMENT
MEDIUM.ddev/config.yaml208# If you prefer you can change this to "ddev.local" to preserveCOMMENT
AI Slop Vocabulary9 hits · 26 pts
SeverityFileLineSnippetContext
MEDIUMplugins/SEO/tests/resources/bing_response.html140;_w.si_sbwu=function(n){var r="/fd/ls/GLinkPingPost.aspx?IG="+_G.IG+n,t="sendBeacon",i=!1;if(navigator&&navigator[t])trCODE
MEDIUMplugins/Overlay/client/followingpages.js399 // derive the offset and dimensions is more robust.COMMENT
MEDIUMtests/javascript/frameworks/dojo/dojo-1.6.0.js9383 // "$" function, dojo.query provides robust, high-performanceCOMMENT
MEDIUMtests/javascript/frameworks/dojo/dojo-1.4.3.js9364 // "$" function, dojo.query provides robust, high-performanceCOMMENT
MEDIUMtests/javascript/frameworks/dojo/dojo-1.3.3.js7803 // "$" function, dojo.query provides robust, high-performanceCOMMENT
MEDIUMtests/javascript/frameworks/dojo/dojo-1.0.3.js5915 // "$" function, dojo.query provides robust, high-performanceCOMMENT
MEDIUMtests/javascript/frameworks/dojo/dojo-1.1.2.js6609 // "$" function, dojo.query provides robust, high-performanceCOMMENT
MEDIUMtests/javascript/frameworks/dojo/dojo-1.5.0.js9379 // "$" function, dojo.query provides robust, high-performanceCOMMENT
MEDIUM.ddev/config.yaml101# can specify any version, and is more robust than using 'nvm'.COMMENT
Decorative Section Separators4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMmisc/cron/archive.sh2# =======================================================================COMMENT
MEDIUMmisc/cron/archive.sh8# =======================================================================COMMENT
MEDIUM.github/scripts/clean-build.sh5# ------------COMMENT
MEDIUM.github/scripts/clean-build.sh9# ------------COMMENT
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHtests/resources/staticFileServer.php53// Setting zlib output compression as requestedCOMMENT
Excessive Try-Catch Wrapping3 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMtests/javascript/jash/Jash.js1269 jash.print("Error: the loop type '" + type + "' does not exist");CODE
LOW.ddev/commands/host/matomo_plugins_lib.sh126except Exception:CODE
LOW.ddev/commands/host/matomo_plugins_lib.sh147except Exception:CODE
Self-Referential Comments1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMplugins/Installation/ServerFilesGenerator.php124 $content = "# This file is auto generated by Matomo, do not edit directly\n# Please report any issue or improvemCODE
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWcore/Db/TransactionLevel.php66 // the first time we need to check if the transaction level actually works byCOMMENT