AI Slop Code Risk Monitor

karatelabs/karate

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

Test Automation Made Simple

2.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for karatelabs/karate, a Java project with 9,003 GitHub stars. SynthScan examined 272,564 lines of code across 1118 source files, recording 248 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 2.7 (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.

2.7
Adjusted Signal
2.7
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
9.0K
Stars
Java
Language
272.6K
Lines of Code
1.1K
Files
248
Pattern Hits
2026-10-31
Scan Date
0.05
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.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 7.6/100 · LOW

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

Agent Over-Engineering Ratio 0.9/100 · LOW

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

PR Review Velocity Impact 13.1/100 · LOW

Which changes need focused human review? 248 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 47HIGH 10MEDIUM 21LOW 170

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 248 distinct pattern matches across 12 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.

Hallucination Indicators47 hits · 412 pts
SeverityFileLineSnippetContext
CRITICAL…iling/src/main/java/io/karatelabs/profiling/Child.java435 liveSetProbe.join(java.util.concurrent.TimeUnit.SECONDS.toMillis(30));CODE
CRITICAL…/io/karatelabs/profiling/gatling/GatlingWorkloads.java50 io.gatling.javaapi.core.Simulation.class.getName();CODE
CRITICAL…s/src/test/java/io/karatelabs/common/ResourceTest.java1071 com.sun.net.httpserver.HttpServer server = com.sun.net.httpserver.HttpServer.create(CODE
CRITICAL…s/src/test/java/io/karatelabs/common/ResourceTest.java1122 com.sun.net.httpserver.HttpServer server = com.sun.net.httpserver.HttpServer.create(CODE
CRITICAL…s/src/test/java/io/karatelabs/common/ResourceTest.java1158 com.sun.net.httpserver.HttpServer server = com.sun.net.httpserver.HttpServer.create(CODE
CRITICAL…s/src/test/java/io/karatelabs/common/ResourceTest.java1185 com.sun.net.httpserver.HttpServer server = com.sun.net.httpserver.HttpServer.create(CODE
CRITICAL…main/java/io/karatelabs/ext/image/ImageComparison.java334 io.github.t12y.pixelmatch.Options opts = io.github.t12y.pixelmatch.Options.defaults();CODE
CRITICAL⚡…main/java/io/karatelabs/ext/image/ImageComparison.java370 opts = io.github.t12y.resemble.Options.ignoreNothing();CODE
CRITICAL⚡…main/java/io/karatelabs/ext/image/ImageComparison.java373 opts = io.github.t12y.resemble.Options.ignoreLess();CODE
CRITICAL⚡…main/java/io/karatelabs/ext/image/ImageComparison.java376 opts = io.github.t12y.resemble.Options.ignoreAntialiasing();CODE
CRITICAL⚡…main/java/io/karatelabs/ext/image/ImageComparison.java379 opts = io.github.t12y.resemble.Options.ignoreColors();CODE
CRITICAL⚡…main/java/io/karatelabs/ext/image/ImageComparison.java382 opts = io.github.t12y.resemble.Options.ignoreAlpha();CODE
CRITICAL⚡…main/java/io/karatelabs/ext/image/ImageComparison.java386 opts = io.github.t12y.resemble.Options.ignoreNothing();CODE
CRITICAL…main/java/io/karatelabs/ext/image/ImageComparison.java422 io.github.t12y.ssim.models.Options opts = io.github.t12y.ssim.models.Options.Defaults();CODE
CRITICALdocs/GATLING.md1426 return new io.gatling.core.action.builder.SessionHookBuilder(scalaFunc, true);CODE
CRITICAL…/java/io/karatelabs/gatling/PooledConnectionsTest.java110 org.junit.jupiter.api.Assertions.assertNotSame(first, second,CODE
CRITICAL…/main/java/io/karatelabs/gatling/KarateSetBuilder.java84 return new io.gatling.core.action.builder.SessionHookBuilder(scalaFunc, true);CODE
CRITICAL…rc/test/java/io/karatelabs/core/BootClasspathTest.java109 assertEquals(io.karatelabs.common.FileUtils.WORKING_DIR.toPath(), suite.getWorkingDir(),CODE
CRITICAL…re/src/test/java/io/karatelabs/core/SuiteRootTest.java113 io.karatelabs.ext.rootcapture.RootcaptureExt.SEEN.remove();STRING
CRITICAL…re/src/test/java/io/karatelabs/core/SuiteRootTest.java116 assertEquals(project, io.karatelabs.ext.rootcapture.RootcaptureExt.SEEN.get(),STRING
CRITICAL…c/test/java/io/karatelabs/core/ScenarioConfigTest.java1011 io.karatelabs.core.parallel.CallOnceCounter.reset();STRING
CRITICAL…c/test/java/io/karatelabs/core/ScenarioConfigTest.java1053 io.karatelabs.core.parallel.CallOnceCounter.reset();STRING
CRITICAL…c/test/java/io/karatelabs/core/ScenarioConfigTest.java1079 assertEquals(3, io.karatelabs.core.parallel.CallOnceCounter.get(),STRING
CRITICAL…c/test/java/io/karatelabs/core/ScenarioConfigTest.java1196 io.karatelabs.core.parallel.CallOnceCounter.reset();STRING
CRITICAL…c/test/java/io/karatelabs/core/ScenarioConfigTest.java1203 assertEquals(scenarios, io.karatelabs.core.parallel.CallOnceCounter.get(),STRING
CRITICAL…java/io/karatelabs/core/callsingle/CallSingleTest.java470 io.karatelabs.core.parallel.CallOnceCounter.reset();STRING
CRITICAL…java/io/karatelabs/core/callsingle/CallSingleTest.java525 int count = io.karatelabs.core.parallel.CallOnceCounter.get();STRING
CRITICAL…java/io/karatelabs/core/callsingle/CallSingleTest.java1138 io.karatelabs.core.parallel.CallOnceCounter.reset();STRING
CRITICAL…java/io/karatelabs/core/callsingle/CallSingleTest.java1178 assertEquals(1, io.karatelabs.core.parallel.CallOnceCounter.get(),STRING
CRITICAL…ava/io/karatelabs/driver/e2e/W3cDriverFeatureTest.java86 io.karatelabs.driver.e2e.support.UploadFixtures.copyInto(chrome);CODE
CRITICAL…t/java/io/karatelabs/driver/e2e/DriverFeatureTest.java103 io.karatelabs.driver.e2e.support.UploadFixtures.copyInto(chrome);CODE
CRITICAL…test/java/io/karatelabs/http/ApacheHttpClientTest.java193 = new org.apache.hc.core5.http.message.BasicClassicHttpResponse(200);STRING
CRITICAL…test/java/io/karatelabs/http/ApacheHttpClientTest.java197 wire.setEntity(new org.apache.hc.core5.http.io.entity.ByteArrayEntity(STRING
CRITICAL…test/java/io/karatelabs/http/ApacheHttpClientTest.java208 = new org.apache.hc.core5.http.message.BasicClassicHttpResponse(200);STRING
CRITICAL⚡…test/java/io/karatelabs/http/ApacheHttpClientTest.java226 wire.setEntity(new org.apache.hc.core5.http.io.entity.InputStreamEntity(slowBody, -1,STRING
CRITICAL⚡…test/java/io/karatelabs/http/ApacheHttpClientTest.java236 = new org.apache.hc.core5.http.message.BasicClassicHttpResponse(200);STRING
CRITICAL⚡…test/java/io/karatelabs/http/ApacheHttpClientTest.java239 wire.setEntity(new org.apache.hc.core5.http.io.entity.ByteArrayEntity(STRING
CRITICAL…io/karatelabs/http/HttpServerReentrantHandlerTest.java56 return CLIENT.send(req, java.net.http.HttpResponse.BodyHandlers.ofString()).body();CODE
CRITICAL…io/karatelabs/http/HttpServerReentrantHandlerTest.java167 CLIENT.sendAsync(req, java.net.http.HttpResponse.BodyHandlers.ofString());CODE
CRITICAL…/karatelabs/http/AuthorizationCodeAuthHandlerTest.java639 java.net.http.HttpResponse.BodyHandlers.discarding()).statusCode());STRING
CRITICAL…/karatelabs/http/AuthorizationCodeAuthHandlerTest.java641 java.net.http.HttpResponse.BodyHandlers.discarding());STRING
CRITICAL…re/src/main/java/io/karatelabs/core/KarateJsUtils.java1084 var response = httpClient.send(request, java.net.http.HttpResponse.BodyHandlers.discarding());CODE
CRITICAL…/src/main/java/io/karatelabs/core/ScenarioRuntime.java2454 boolean isW3c = io.karatelabs.driver.w3c.W3cBrowserType.isW3cType(driverType);CODE
CRITICAL…/src/main/java/io/karatelabs/core/ScenarioRuntime.java2463 io.karatelabs.driver.w3c.W3cDriverOptions w3cOptions = io.karatelabs.driver.w3c.W3cDriverOptions.fromMap(conCODE
CRITICAL…/src/main/java/io/karatelabs/core/ScenarioRuntime.java2480 driver = io.karatelabs.driver.w3c.W3cDriver.start(configMap);CODE
CRITICAL…/src/main/java/io/karatelabs/core/ScenarioRuntime.java2508 for (io.karatelabs.driver.w3c.W3cBrowserType bt : io.karatelabs.driver.w3c.W3cBrowserType.values()) {CODE
CRITICAL…ore/src/main/java/io/karatelabs/http/HttpResponse.java345 io.netty.handler.codec.http.cookie.ClientCookieDecoder.LAX.decode(header);CODE
Over-Commented Block129 hits · 129 pts
SeverityFileLineSnippetContext
LOWkarate-profiling/etc/js-arm.sh1#!/usr/bin/env bashCOMMENT
LOWkarate-profiling/etc/run.sh1#!/usr/bin/env bashCOMMENT
LOWkarate-profiling/etc/ec2/provision.sh1#!/usr/bin/env bashCOMMENT
LOWkarate-profiling/etc/ec2/selftest.sh1#!/usr/bin/env bashCOMMENT
LOWkarate-profiling/etc/ec2/calibrate.sh41mock_url="$($tls && printf 'https' || printf 'http')://${mock_private}:${mock_port}"COMMENT
LOWkarate-profiling/etc/ec2/mock.sh1#!/usr/bin/env bashCOMMENT
LOWkarate-profiling/etc/ec2/js-matrix.sh1#!/usr/bin/env bashCOMMENT
LOWkarate-profiling/etc/ec2/js-matrix.sh21# loudly rather than measuring the wrong thing.COMMENT
LOWkarate-profiling/etc/ec2/js-matrix.sh61 # Comma-separated subset of the six rows, for a rehearsal or a targeted probe.COMMENT
LOWkarate-profiling/etc/ec2/collect.sh41# The total printed above cannot catch it either — hundreds of older digestsCOMMENT
LOWkarate-profiling/etc/ec2/collect.sh81 die "refusing to report success - do NOT tear down until this is understood"COMMENT
LOWkarate-profiling/etc/ec2/teardown.sh1#!/usr/bin/env bashCOMMENT
LOWkarate-profiling/etc/ec2/bootstrap.sh1#!/usr/bin/env bashCOMMENT
LOWkarate-profiling/etc/ec2/bootstrap.sh101cd ~/karateCOMMENT
LOWkarate-profiling/etc/ec2/bootstrap.sh141 # times. Combined with excluding target/, that hands Maven a source file older thanCOMMENT
LOWkarate-profiling/etc/ec2/matrix.sh1#!/usr/bin/env bashCOMMENT
LOWkarate-profiling/etc/ec2/matrix.sh41 --port) mock_port="$2"; shift 2 ;;COMMENT
LOWkarate-profiling/etc/ec2/matrix.sh61 # same tier — which is the actual A/B, since `compare` pairs plain againstCOMMENT
LOWkarate-profiling/etc/ec2/lib.sh61# Pure: reads the inventory on stdin and sets three variables, so it can be testedCOMMENT
LOW…iling/src/main/java/io/karatelabs/profiling/Child.java101 // live-set panel above", which was not in the file. Hours of soak, no instrument.COMMENT
LOW…iling/src/main/java/io/karatelabs/profiling/Child.java141 // Truncation exits non-zero for the same reason the iteration-bounded path does: anCOMMENT
LOW…/main/java/io/karatelabs/profiling/MockCalibrator.java201 Thread.ofVirtual().start(() -> {COMMENT
LOW…g/src/main/java/io/karatelabs/profiling/MockStats.java321 + ",\"serviceMicrosP99\":" + percentileMicros(histogram, 0.99)COMMENT
LOW…ng/src/main/java/io/karatelabs/profiling/Profiler.java421 + shape.iterations() + " iterations might take longer than that, pass"COMMENT
LOW…ng/src/main/java/io/karatelabs/profiling/Profiler.java441 // 2. The disable list has to be near-complete to matter. Disabling the two samplersCOMMENT
LOW…ng/src/main/java/io/karatelabs/profiling/Profiler.java461 for (String event : SOAK_DISABLED_EVENTS) {COMMENT
LOW…c/main/java/io/karatelabs/profiling/jfr/JfrDigest.java561 static void appendPortPressure(StringBuilder md, String mockStats,COMMENT
LOW…c/main/java/io/karatelabs/profiling/jfr/JfrDigest.java1461 // Whether anything collected the old generation decides whether theCOMMENT
LOW…/io/karatelabs/profiling/gatling/GatlingWorkloads.java41COMMENT
LOW…-js/src/test/java/io/karatelabs/js/JsFunctionTest.java481 assertEquals(jsonPayload, extractedPayload);COMMENT
LOW…ate-js/src/test/java/io/karatelabs/js/SpecPinTest.java661 + " Object.defineProperty(Array.prototype, '0',"COMMENT
LOW…ate-js/src/test/java/io/karatelabs/js/SpecPinTest.java841COMMENT
LOW…ate-js/src/test/java/io/karatelabs/js/SpecPinTest.java1201 // bypass; the JsArray branch did not). Test262COMMENT
LOW…ate-js/src/test/java/io/karatelabs/js/SpecPinTest.java2021 void push_degradesToSpecPathOnEveryDirtyCondition() {COMMENT
LOW…/src/main/java/io/karatelabs/js/JsStructuredClone.java121 // `instanceof AppError`, but `instanceof Error` must holdCOMMENT
LOW…-js/src/main/java/io/karatelabs/js/JsFunctionNode.java61 // "use strict" prologue OR it was defined inside already-strict codeCOMMENT
LOW…-js/src/main/java/io/karatelabs/js/JsFunctionNode.java81 // (Array/Map/Set/Date), when there is one — `new` then allocates theCOMMENT
LOW…s/src/main/java/io/karatelabs/js/JsArrayPrototype.java141 // Spec: Array.prototype.* are intentionally generic — they treat `this` as anCOMMENT
LOW…s/src/main/java/io/karatelabs/js/JsArrayPrototype.java521 }COMMENT
LOW…s/src/main/java/io/karatelabs/js/JsArrayPrototype.java641 // set-length-array-length-is-non-writable.js push variant). On aCOMMENT
LOW…s/src/main/java/io/karatelabs/js/JsArrayPrototype.java681 // 1. O = ToObject(this). 2. len = ToLength(Get(O, "length")).COMMENT
LOW…s/src/main/java/io/karatelabs/js/JsArrayPrototype.java861 private Object reduce(Context context, Object[] args) {COMMENT
LOW…s/src/main/java/io/karatelabs/js/JsArrayPrototype.java1041 private Object splice(Context context, Object[] args) {COMMENT
LOW…s/src/main/java/io/karatelabs/js/JsArrayPrototype.java1241 // if HasProperty(O, fromKey): Set(O, toKey, Get(O, fromKey), true)COMMENT
LOW…s/src/main/java/io/karatelabs/js/JsArrayPrototype.java1281 // from = ToString(k-1); to = ToString(k+argCount-1)COMMENT
LOW…s/src/main/java/io/karatelabs/js/JsArrayPrototype.java1401 return thisArray.get(index);COMMENT
LOW…ate-js/src/main/java/io/karatelabs/js/CoreContext.java61 PrivateEnv privateEnv;COMMENT
LOW…ate-js/src/main/java/io/karatelabs/js/CoreContext.java81 boolean arrowFrame;COMMENT
LOWkarate-js/src/main/java/io/karatelabs/js/JsObject.java781 if (!inMap && !intrinsic) {COMMENT
LOW…/src/main/java/io/karatelabs/js/JsObjectPrototype.java81 // ObjectLike, so the spec's [[Call]] check applies. After R2 this alsoCOMMENT
LOW…js/src/main/java/io/karatelabs/js/JsDatePrototype.java361 private Object getUTCMilliseconds(Context context, Object[] args) {COMMENT
LOW…ate-js/src/main/java/io/karatelabs/js/Interpreter.java1061 // ES6 class — desugared at eval time onto the existing constructor-functionCOMMENT
LOW…ate-js/src/main/java/io/karatelabs/js/Interpreter.java1761 // Every loop var is a scope-confined frame slot: theCOMMENT
LOW…ate-js/src/main/java/io/karatelabs/js/Interpreter.java1801 int semi2 = forTest == null ? semi1 + 1 : semi1 + 2;COMMENT
LOW…ate-js/src/main/java/io/karatelabs/js/Interpreter.java2601 // User-defined error classes (e.g. test262's Test262Error) often omitCOMMENT
LOWkarate-js/src/main/java/io/karatelabs/js/Engine.java81 // Single global store. Holds user-visible bindings (Engine.put / top-levelCOMMENT
LOW…-js/src/main/java/io/karatelabs/js/PropertyAccess.java1041 // getMember pair, which probed namedProps twice and ranCOMMENT
LOW…-js/src/main/java/io/karatelabs/js/PropertyAccess.java1141 int i = denseIndex(n);COMMENT
LOW…rc/main/java/io/karatelabs/js/JsObjectConstructor.java761 // re-coercion that handleLengthAssign would run, since coercedLengthCOMMENT
LOW…rc/main/java/io/karatelabs/js/JsObjectConstructor.java881 throw JsErrorException.typeError("Object.defineProperties called on non-object");COMMENT
69 more matches not shown…
AI Slop Vocabulary17 hits · 56 pts
SeverityFileLineSnippetContext
MEDIUMkarate-profiling/etc/js-arm.sh72# -o (offline) deliberately, like the rest of the harness: a surprise dependency download isCOMMENT
MEDIUMkarate-profiling/etc/run.sh6# etc/run.sh harness-smoke # is the harness alive?COMMENT
MEDIUMkarate-profiling/etc/ec2/js-matrix.sh6# identity is engine + Rhino version + resolved-jar sha256, recorded by the harness in eachCOMMENT
MEDIUMkarate-profiling/etc/ec2/js-matrix.sh55 # name the harness accepts, so nothing unvetted crosses the remote shell.COMMENT
MEDIUMkarate-profiling/etc/ec2/js-matrix.sh70 # the harness against THIS (or fully locally, see docs/PROFILING.md), never againstCOMMENT
MEDIUMkarate-profiling/etc/ec2/js-matrix.sh75 # without any feature-specific code in this harness.COMMENT
MEDIUMkarate-profiling/etc/ec2/js-matrix.sh95# ships. The only engine name accepted is the one the harness knows — it travels into aCOMMENT
MEDIUMkarate-profiling/etc/ec2/bootstrap.sh35# Every one of these is a limit the harness would otherwise measure instead ofCOMMENT
MEDIUMkarate-profiling/etc/ec2/matrix.sh120 # The harness forks its own mock per run, exactly as a single-host run does.COMMENT
MEDIUMkarate-js-test262/etc/expectations.yaml63 # harness/doneprintHandle.js for them, captures the engine's console sink,COMMENT
MEDIUMkarate-js-test262/etc/expectations.yaml118 # carry `flags: [async]` still skip on the flag rule above (harness gap, notCOMMENT
MEDIUM⚡karate-js-test262/etc/expectations.yaml183 # Tests whose YAML frontmatter `includes:` references any of these harness helpersCOMMENT
MEDIUM⚡karate-js-test262/etc/expectations.yaml184 # (the harness file itself may exist, but it depends on engine internals we do not expose).COMMENT
MEDIUM⚡karate-js-test262/etc/expectations.yaml189 # its users no longer need a special harness.COMMENT
MEDIUMkarate-js-test262/etc/run.sh44# to Test262Runner / the harness silently never take effect (this masked theCOMMENT
MEDIUM…src/test/java/io/karatelabs/http/SessionStoreTest.java198 // above if it's ms. This bound is robust through ~year 5000.COMMENT
MEDIUM…src/main/java/io/karatelabs/gherkin/GherkinParser.java729 // Create synthetic step to leverage existing lexer statesCOMMENT
Cross-File Repetition10 hits · 50 pts
SeverityFileLineSnippetContext
HIGH…a/io/karatelabs/profiling/workload/JsEvalWorkload.java0function processdata(items) { let result = { sum: 0, count: 0, values: [] }; for (let i = 0; i < items.length; i++) { leSTRING
HIGH…src/test/java/io/karatelabs/parser/LexerBenchmark.java0function processdata(items) { let result = { sum: 0, count: 0, values: [] }; for (let i = 0; i < items.length; i++) { leSTRING
HIGH…e-js/src/test/java/io/karatelabs/js/SlotFrameTest.java0function processdata(items) { let result = { sum: 0, count: 0, values: [] }; for (let i = 0; i < items.length; i++) { leSTRING
HIGH…test/java/io/karatelabs/output/ResultListenerTest.java0feature: failing test scenario: passing * def a = 1 scenario: failing * def b = 2 * match b == 999STRING
HIGH…/java/io/karatelabs/output/CucumberJsonWriterTest.java0feature: failing test scenario: passing * def a = 1 scenario: failing * def b = 2 * match b == 999STRING
HIGH…test/java/io/karatelabs/output/JunitXmlWriterTest.java0feature: failing test scenario: passing * def a = 1 scenario: failing * def b = 2 * match b == 999STRING
HIGH…ava/io/karatelabs/output/JsonLinesEventWriterTest.java0feature: failing test scenario: passing * def a = 1 scenario: failing * def b = 2 * match b == 999STRING
HIGH…test/java/io/karatelabs/http/ApacheHttpClientTest.java0feature: echo scenario: pathmatches('/ping') * def response = { ok: true }STRING
HIGH…karatelabs/http/ApacheHttpClientConfigRebuildTest.java0feature: echo scenario: pathmatches('/ping') * def response = { ok: true }STRING
HIGH…t/java/io/karatelabs/http/HttpClientLifecycleTest.java0feature: echo scenario: pathmatches('/ping') * def response = { ok: true }STRING
Structural Annotation Overuse11 hits · 23 pts
SeverityFileLineSnippetContext
LOW⚡…src/test/java/io/karatelabs/js/ExternalBridgeTest.java62 // Step 1: def foo = { bar: function(){ return 'baz' } }COMMENT
LOW⚡…src/test/java/io/karatelabs/js/ExternalBridgeTest.java64 // Step 2: def result = foo.bar()COMMENT
LOW⚡…-js/src/main/java/io/karatelabs/js/JsSetPrototype.java277 // Step 4: copy this into result.COMMENT
LOW⚡…-js/src/main/java/io/karatelabs/js/JsSetPrototype.java282 // Step 5: iterate this; remove entries that other.has() reports.COMMENT
LOW⚡…-js/src/main/java/io/karatelabs/js/JsSetPrototype.java292 // Step 6: iterate other.keys(); remove matches from result.COMMENT
LOW⚡…-js/src/main/java/io/karatelabs/js/JsSetPrototype.java319 // Step 5: copy this into result.COMMENT
LOW⚡…-js/src/main/java/io/karatelabs/js/JsSetPrototype.java323 // Step 7: for each value from other.keys(), remove from result if presentCOMMENT
LOWdocs/MIGRATION_GUIDE.md9### Step 1: Update Maven DependenciesCOMMENT
LOWdocs/MIGRATION_GUIDE.md39### Step 2: Update Java VersionCOMMENT
LOW⚡…main/java/io/karatelabs/core/KarateOptionsHandler.java83 // Step 1: individual sysprops (lower precedence than karate.options)COMMENT
LOW⚡…main/java/io/karatelabs/core/KarateOptionsHandler.java86 // Step 2: karate.options sysprop / env var (higher precedence — applied last)COMMENT
Verbosity Indicators10 hits · 22 pts
SeverityFileLineSnippetContext
LOW⚡…src/test/java/io/karatelabs/js/ExternalBridgeTest.java62 // Step 1: def foo = { bar: function(){ return 'baz' } }COMMENT
LOW⚡…src/test/java/io/karatelabs/js/ExternalBridgeTest.java64 // Step 2: def result = foo.bar()COMMENT
LOW⚡…-js/src/main/java/io/karatelabs/js/JsSetPrototype.java277 // Step 4: copy this into result.COMMENT
LOW⚡…-js/src/main/java/io/karatelabs/js/JsSetPrototype.java282 // Step 5: iterate this; remove entries that other.has() reports.COMMENT
LOW⚡…-js/src/main/java/io/karatelabs/js/JsSetPrototype.java292 // Step 6: iterate other.keys(); remove matches from result.COMMENT
LOW⚡…-js/src/main/java/io/karatelabs/js/JsSetPrototype.java319 // Step 5: copy this into result.COMMENT
LOW⚡…-js/src/main/java/io/karatelabs/js/JsSetPrototype.java323 // Step 7: for each value from other.keys(), remove from result if presentCOMMENT
LOW⚡…main/java/io/karatelabs/core/KarateOptionsHandler.java83 // Step 1: individual sysprops (lower precedence than karate.options)COMMENT
LOW⚡…main/java/io/karatelabs/core/KarateOptionsHandler.java86 // Step 2: karate.options sysprop / env var (higher precedence — applied last)COMMENT
LOW…-core/src/main/java/io/karatelabs/match/Operation.java313 // we need to check if any element in the list matches the expected valueCOMMENT
Fake / Example Data16 hits · 18 pts
SeverityFileLineSnippetContext
LOW…src/test/java/io/karatelabs/parser/LexerBenchmark.java65 const name = 'John Doe';CODE
LOWdocs/DESIGN.md160 * def rows = karate.suite.dryRun ? [{ name: 'placeholder' }] : fetchFromDb()COMMENT
LOW…core/src/test/java/io/karatelabs/core/StepDocTest.java89 Files.writeString(template, "<html><body><span th:text=\"'placeholder'\">placeholder</span></body></html>");STRING
LOW…core/src/test/java/io/karatelabs/core/StepDocTest.java229 * def name = 'John Doe'COMMENT
LOW…core/src/test/java/io/karatelabs/core/StepDocTest.java231 * match result contains 'John Doe'COMMENT
LOW…src/test/java/io/karatelabs/core/mock/MockE2eTest.java1793 * configure auth = { type: 'jwt', algorithm: 'HS256', secret: 'your-256-bit-secret', header: { typ: 'JWT' },COMMENT
LOW…e/src/test/java/io/karatelabs/driver/LocatorsTest.java581 String result = Locators.inputJs("#name", "John Doe");STRING
LOW…rc/test/java/io/karatelabs/driver/e2e/KeysE2eTest.java81 driver.keys().type("test@test.com");CODE
LOW…rc/test/java/io/karatelabs/driver/e2e/KeysE2eTest.java85 assertEquals("test@test.com", emailValue);CODE
LOW…test/java/io/karatelabs/driver/e2e/ElementE2eTest.java77 String placeholder = driver.attribute("#username", "placeholder");CODE
LOW…/test/java/io/karatelabs/driver/e2e/DialogE2eTest.java136 dialog.accept("John Doe");CODE
LOW…st/java/io/karatelabs/output/HtmlReportWriterTest.java1813 * def token = 'fake-token'COMMENT
LOW…ava/io/karatelabs/http/HttpRequestBuilderCurlTest.java55 body.put("name", "John Doe");CODE
LOW…ava/io/karatelabs/http/HttpRequestBuilderCurlTest.java517 body.put("name", "John Doe");CODE
LOW…core/src/test/java/io/karatelabs/http/DemoAppTest.java146 assertTrue(body.contains("test@test.com"));CODE
LOW…core/src/test/java/io/karatelabs/http/DemoAppTest.java652 assertTrue(body.contains("John Doe"));CODE
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMkarate-profiling/etc/ec2/provision.sh2# Create the two-host bench: security group, cluster placement group, twoCOMMENT
MEDIUM…src/test/java/io/karatelabs/core/mock/MockE2eTest.java1296 # Define a function to check conditionCOMMENT
Modern AI Meta-Vocabulary2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMdocs/DRIVER.md204# orchestration.feature - receives inherited driverConfigCOMMENT
MEDIUM…c/main/java/io/karatelabs/output/HtmlReportWriter.java813 // it actually has, including a feature-level marker like @scaffold.STRING
Hyper-Verbose Identifiers2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…rc/main/java/io/karatelabs/markup/KaDataProcessor.java65class KaDataProcessor extends AbstractElementModelProcessor {CODE
LOW…main/java/io/karatelabs/http/ServerRequestHandler.java62public class ServerRequestHandler implements Function<HttpRequest, HttpResponse> {CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWetc/test-cli.sh14# Check if rebuild is neededCOMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOW…ore/src/main/java/io/karatelabs/core/KarateJsBase.java96 // TODO: implement whitelisting for safety - the default bridge allows access to all Java classesCOMMENT