AI Slop Code Risk Monitor

apache/echarts

SlopCodeMonitor badge for apache/echarts Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Apache ECharts is a powerful, interactive charting and data visualization library for browser

1.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for apache/echarts, a TypeScript project with 67,641 GitHub stars. SynthScan examined 496,916 lines of code across 2062 source files, recording 460 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 1.0 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

1.0
Adjusted Signal
1.0
Raw Pattern Score
100%
Time Factor
2026-10-13
Last Push
67.6K
Stars
TypeScript
Language
496.9K
Lines of Code
2.1K
Files
460
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 4.7/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 458 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.1/100 · LOW

Are imports declared and package/API names verified? 2 finding(s).

Agent Over-Engineering Ratio 2.8/100 · LOW

Are wrappers, guards, and repeated structures necessary? 274 finding(s).

PR Review Velocity Impact 4.7/100 · LOW

Which changes need focused human review? 460 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 1HIGH 0MEDIUM 3LOW 456

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 460 distinct pattern matches across 6 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers274 hits · 284 pts
SeverityFileLineSnippetContext
LOWtest/dataset-case.html53 function createBasicTestOptionForArrayRows(opt) {CODE
LOWtest/dataset-case.html181 function createBasicTestOptionForObjectRows() {CODE
LOW⚡test/axis-layout-0.html135 function resetGridBoxIndicatorShapeOptions() {CODE
LOW⚡test/axis-layout-0.html141 function resetGridOuterBoundsIndicatorShapeOptions() {CODE
LOW⚡test/axis-layout-0.html148 function updateIndicatorShapeOptions() {CODE
LOWtest/axis-layout-0.html174 function makeGridBoxIndicatorOption() {CODE
LOWtest/axis-layout-0.html205 function makeGridOuterBoundsIndicatorOption() {CODE
LOWtest/bar-race2.html50 function monitorChangeAxisOrderTriggering(chart) {CODE
LOWtest/rich-inherit-plain-label.html110 function toggleRichInheritPlainLabel(prop) {CODE
LOWtest/rich-inherit-plain-label.html193 function toggleRichInheritPlainLabel(prop) {CODE
LOWtest/rich-inherit-plain-label.html269 function toggleRichInheritPlainLabel(prop) {CODE
LOWtest/hoverFocus.html131 (function addDispatchActionHighlightChart(){CODE
LOWtest/axis-break-2.html923 function updateContainLabelCriterion(chart) {CODE
LOWtest/axis-break.html929 function getAndCheckDimentionIdx(brk) {CODE
LOWtest/axis-break.html946 function getAndCheckBrkInAxisBrkIdentifier(brk, actualDimIdx, testInfoBrkList) {CODE
LOWtest/axis-break.html946 function getAndCheckBrkInAxisBrkIdentifier(brk, actualDimIdx, testInfoBrkList) {CODE
LOWtest/hover-layer.html575 function checkHoverLayerNotCreated() {CODE
LOWtest/matrix_application2.html667 function prepareCoordForBodySelectionRect() {CODE
LOWtest/matrix2.html601 function updateConvertToPixelResult(result) {CODE
LOWtest/option-replaceMerge2.html112 function makeSingleCartesianOption() {CODE
LOWtest/option-replaceMerge2.html147 function makeDoubleCartesianOption() {CODE
LOWtest/option-replaceMerge2.html372 function createUpdatableSeriesAndDataset(seriesCount) {CODE
LOWtest/geo-update.html886 function mountBrushSelectedListener() {CODE
LOWtest/ut/spec/data/dataValueHelper.test.ts206function eachRelationalComparisonCase(evalFn: EvaluateFunction) {CODE
LOWtest/ut/spec/data/dataTransform.test.ts41 function makeDatasetSourceDetection() {CODE
LOWtest/ut/spec/data/dataTransform.test.ts50 function makeDatasetSourceNonDetectionByRow() {CODE
LOW⚡test/lib/testHelper.js1349 function resetSelectInputOptionIndex(optionIdx) {CODE
LOW⚡test/lib/testHelper.js1354 function getSelectInputOptionIndex() {CODE
LOW⚡test/lib/testHelper.js1358 function getSelectInputValueByOptionIndex(optionIdx) {CODE
LOW⚡test/lib/testHelper.js1364 function triggerUserSelectChangedEvent() {CODE
LOW⚡test/lib/testHelper.js1372 function resetSelectInputSubInputsDisabled() {CODE
LOWtest/lib/testHelper.js709 function restoreInputsToInitialState() {CODE
LOWtest/lib/testHelper.js1032 function updateRangeInputViewValue(newVal) {CODE
LOWtest/lib/testHelper.js1036 function resetRangeInputWrapperCSS(wrapperEl, disabled) {CODE
LOWtest/lib/testHelper.js1073 function dispatchRangeInputChangedEvent() {CODE
LOWtest/lib/testHelper.js1116 listener: function dispatchSelectInputChangedEvent() {CODE
LOWtest/lib/testHelper.js1146 function createSelectInputElements() {CODE
LOWtest/lib/testHelper.js1164 function resetSelectInputWrapperCSS(selectWrapperEl, disabled) {CODE
LOWtest/lib/testHelper.js1385 function makeSelectInputTextByValue(optionDef) {CODE
LOWtest/lib/testHelper.js1678 function ensureBoundingRectsFacilities() {CODE
LOWtest/lib/testHelper.js2778 function isMethodShorthandNotAccurate(fnStr, fnName, objKey) {CODE
LOWtest/lib/testHelper.js3258 function objectNoOtherNotNullUndefinedPropExcept(obj, exceptProps) {CODE
LOWsrc/scale/break.ts144export function registerScaleBreakHelperImpl(impl: BreakScaleHelper): void {CODE
LOWsrc/scale/breakImpl.ts628function serializeAxisBreakIdentifier(identifier: AxisBreakOptionIdentifierInAxis): string {CODE
LOWsrc/scale/breakImpl.ts679function getTicksBreakOutwardTransform(CODE
LOWsrc/scale/breakImpl.ts715function parseAxisBreakOptionInwardTransform(CODE
LOWsrc/scale/breakImpl.ts757function makeAxisLabelFormatterParamBreak(CODE
LOWsrc/scale/helper.ts224export function intervalScaleEnsureValidExtent(CODE
LOW⚡src/scale/scaleMapper.ts351export function getScaleExtentForTickUnsafe(mapper: ScaleMapper): number[] {CODE
LOW⚡src/scale/scaleMapper.ts355export function getScaleExtentForMappingUnsafe(CODE
LOW⚡src/scale/scaleMapper.ts364export function getScaleLinearSpanForMapping(mapper: ScaleMapper): number {CODE
LOW⚡src/scale/scaleMapper.ts369export function getScaleLinearSpanEffective(mapper: ScaleMapper): number {CODE
LOWsrc/scale/Time.ts301function isPrimaryUnitValueAndGreaterSame(CODE
LOWsrc/scale/Time.ts430function getMinutesAndSecondsInterval(approxInterval: number, isMinutes?: boolean) {CODE
LOWsrc/scale/Time.ts452function createEstimateNiceMultiple(CODE
LOWsrc/core/CoordinateSystem.ts109function canBeNonSeriesBoxCoordSys(coordSysType: string): boolean {CODE
LOWsrc/core/CoordinateSystem.ts130export function registerLayOutOnCoordSysUsage(opt: {CODE
LOWsrc/core/CoordinateSystem.ts149export function getCoordForCoordSysUsageKindBox(CODE
LOWsrc/core/echarts.ts329function createRegisterEventWithLowercaseECharts(method: EventMethodName) {CODE
LOWsrc/core/echarts.ts338function createRegisterEventWithLowercaseMessageCenter(method: EventMethodName) {CODE
214 more matches not shown…
Over-Commented Block178 hits · 177 pts
SeverityFileLineSnippetContext
LOW.asf.yaml1# Licensed to the Apache Software Foundation (ASF) under oneCOMMENT
LOW.eslintrc-common.yaml1COMMENT
LOW.eslintrc-common-production.yaml1COMMENT
LOW.lgtm.yml1COMMENT
LOWtest/visualMap-scatter-symbolSize.html41COMMENT
LOWtest/visualMap-scatter-symbolSize.html61 // Math.round(Math.random() * (symbolCount - 1))COMMENT
LOWtest/candlestick-large3.html181 }COMMENT
LOWtest/candlestick-large3.html241 // {COMMENT
LOWtest/candlestick-large3.html281 // var param = param[0];COMMENT
LOWtest/candlestick-large3.html301 // {COMMENT
LOWtest/candlestick-large3.html321 // type: 'line',COMMENT
LOWtest/candlestick-large3.html341 autoResize: false,COMMENT
LOWtest/candlestick-large3.html361 // min = Math.min(val, min);COMMENT
LOWtest/candlestick-large2.html301 '(2) Check visualMap after zoomed to normal mode'COMMENT
LOWtest/candlestick-large2.html321 // max = Math.max(val, max);COMMENT
LOWtest/graphic-animation-wave.html121 });COMMENT
LOWtest/dataset-performance.html61 // type: 'category',COMMENT
LOWtest/dataset-performance.html141 // return iCOMMENT
LOWtest/gauge.html461 setInterval(function () {COMMENT
LOWtest/gauge.html481 // normal: {COMMENT
LOWtest/scatter-random-stream-fix-axis.html121 legend: {COMMENT
LOWtest/scatter-random-stream-fix-axis.html161 type: 'scatter',COMMENT
LOWtest/scatter-random-stream-fix-axis.html181 // }COMMENT
LOWtest/mobileBench.html81COMMENT
LOWtest/scatter-random-stream.html121 left: 'left',COMMENT
LOWtest/scatter-random-stream.html161 // large: {COMMENT
LOWtest/bar-t.html121 // // feature: {COMMENT
LOWtest/bar-t.html141 // // },COMMENT
LOWtest/bar-t.html221 // }, {COMMENT
LOWtest/tree-roam.html161COMMENT
LOWtest/geo-data-stream.html81 fontSize: 12COMMENT
LOWtest/dataZoom-extreme.html161 // type: 'category',COMMENT
LOWtest/candlestick-large.html161 // data: data.categoryData,COMMENT
LOWtest/candlestick-large.html181 // min: 'dataMin',COMMENT
LOWtest/candlestick-large.html241 // return [COMMENT
LOWtest/candlestick-large.html261 // {COMMENT
LOWtest/candlestick-large.html281 // type: 'line',COMMENT
LOWtest/candlestick-large.html301 option: option,COMMENT
LOWtest/candlestick-large.html321COMMENT
LOWtest/media-finance.html101 <script src="data/timelineGDP.js"></script>COMMENT
LOWtest/map-nested.html101 echarts.registerMap('nestedMap', geoJSON);COMMENT
LOWtest/timeline-finance.html41 <script src="data/timelineGDP.js"></script>COMMENT
LOWtest/geo-svg-demo.html181 type: 'downplay',COMMENT
LOWtest/parallel-lineStyle.html101 }COMMENT
LOWtest/sankey-vertical.html41COMMENT
LOWtest/sankey-vertical.html61 // ],COMMENT
LOWtest/sankey-vertical.html81 // {source: 'Portugal', target: 'South Africa', value: 3},COMMENT
LOWtest/candlestick.html141 // tooltip: {COMMENT
LOWtest/connect.html181 // fromChart.on('legendselectchanged', function (params) {COMMENT
LOWtest/diff.html81 // xAxis: {COMMENT
LOWtest/covid-america.html4901 for (j = 0; j < data[n].length; j++) {COMMENT
LOWtest/covid-america.html4961 }COMMENT
LOWtest/covid-america.html4981 // }COMMENT
LOWtest/covid-america.html5001 // }, {COMMENT
LOWtest/line.html81 // shadowBlur: 10,COMMENT
LOWtest/line.html101 // padding: 10,COMMENT
LOWtest/ut/.eslintrc.yaml1COMMENT
LOWtest/ut/core/utHelper.ts101// next();COMMENT
LOWtest/ut/spec/api/containPixel.test.ts321 // series: [COMMENT
LOWtest/ut/spec/api/containPixel.test.ts341 // expect(chart.containPixel('series', [40, height / 2 + 10])).toEqual(true);COMMENT
118 more matches not shown…
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALtest/lib/jquery.min.js5return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,tCODE
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMsrc/animation/universalTransition.ts317 // It's more robust than groupIdCOMMENT
MEDIUMsrc/component/timeline/SliderTimelineView.ts828 // leverage performance and auto updateTransform)COMMENT
MEDIUMsrc/view/Chart.ts256 // PENDING: more robust approaches?COMMENT
Slop Phrases3 hits · 4 pts
SeverityFileLineSnippetContext
LOW.github/ISSUE_TEMPLATE/feature_request.yml17 For non-technical support or general questions, you can email [dev@echarts.apache.org](mailto:dev@echarts.apache.oCODE
LOW.github/ISSUE_TEMPLATE/bug_report.yml17 For non-technical support or general questions, you can email [dev@echarts.apache.org](mailto:dev@echarts.apache.oCODE
LOWsrc/util/states.ts186 * DON'T forget to clearStates before we update the style and shape.COMMENT
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtest/tooltip-valueFormatter.html103 valueFormatter: 'placeholder'CODE