AI Slop Code Risk Monitor

scinfu/SwiftSoup

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

SwiftSoup: Pure Swift HTML Parser, with best of DOM, CSS, and jquery (Supports Linux, iOS, Mac, tvOS, watchOS)

1.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for scinfu/SwiftSoup, a Swift project with 5,133 GitHub stars. SynthScan examined 77,710 lines of code across 288 source files, recording 100 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 1.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.

1.7
Adjusted Signal
1.7
Raw Pattern Score
100%
Time Factor
2026-10-16
Last Push
5.1K
Stars
Swift
Language
77.7K
Lines of Code
288
Files
100
Pattern Hits
2026-10-31
Scan Date
0.03
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.8/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.9/100 · LOW

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

Agent Over-Engineering Ratio 3.9/100 · LOW

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

PR Review Velocity Impact 9.0/100 · LOW

Which changes need focused human review? 100 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 0HIGH 8MEDIUM 3LOW 89

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 100 distinct pattern matches across 8 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.

Over-Commented Block43 hits · 43 pts
SeverityFileLineSnippetContext
LOWTests/SwiftSoupTests/XmlTreeBuilderTest.swift161 // Document htmlDoc = Jsoup.connect(xmlUrl).parser(Parser.htmlParser()).get();COMMENT
LOWTests/SwiftSoupTests/TextUtil.swift21 range: NSRange(0..<text.count),COMMENT
LOWTests/SwiftSoupTests/TextUtil.swift41// }COMMENT
LOWTests/SwiftSoupTests/CleanerTest.swift221 XCTAssertEqual("<p class=\"foo\">One</p>", clean)COMMENT
LOWTests/SwiftSoupTests/AttributesTest.swift41// do{COMMENT
LOWTests/SwiftSoupTests/ElementTest.swift601 //todo:datase is a simple dictionary but in java it's differentCOMMENT
LOWTests/SwiftSoupTests/ElementTest.swift621// XCTAssertEqual("java", try attributes.get(key: "data-language"));COMMENT
LOWTests/SwiftSoupTests/FormElementTest.swift21 }COMMENT
LOWTests/SwiftSoupTests/FormElementTest.swift41// XCTAssertEqual("eight=on", data.get(5).toString()); // defaultCOMMENT
LOWTests/SwiftSoupTests/FormElementTest.swift61// Connection con2 = form.submit();COMMENT
LOWTests/SwiftSoupTests/FormElementTest.swift81// COMMENT
LOWTests/SwiftSoupTests/FormElementTest.swift121// let doc = try Jsoup.parse("<form><input type=checkbox checked name=foo></form>");COMMENT
LOWTests/SwiftSoupTests/DocumentTest.swift1//COMMENT
LOWTests/SwiftSoupTests/DocumentTest.swift21// "<head>" +COMMENT
LOWTests/SwiftSoupTests/DocumentTest.swift41// for el in els{COMMENT
LOWTests/SwiftSoupTests/DocumentTest.swift141 // String location = doc.location();COMMENT
LOWTests/SwiftSoupTests/DocumentTest.swift441 }COMMENT
LOWTests/SwiftSoupTests/StringUtilTest.swift1//COMMENT
LOWTests/SwiftSoupTests/StringUtilTest.swift21// COMMENT
LOWSources/FormElement.swift81// Connection.Method method = attr("method").toUpperCase().equals("POST") ?COMMENT
LOWSources/FormElement.swift101// if (el.hasAttr("disabled")) continue; // skip disabled form inputsCOMMENT
LOWSources/SwiftSoup.h1//COMMENT
LOWSources/ElementQuery.swift1//COMMENT
LOWSources/ElementQuery.swift21/// ```COMMENT
LOWSources/ElementQuery.swift41 /// - parameter className: The class name to check for.COMMENT
LOWSources/ElementQuery.swift61 /// Get the inner HTML of the matched elements.COMMENT
LOWSources/LRUCache.swift1//COMMENT
LOWSources/LRUCache.swift21// all copies or substantial portions of the Software.COMMENT
LOWSources/SwiftSoup.swift261 guard let next = iterator.next() else { return true }COMMENT
LOWSources/SwiftSoup.swift281 //todo:COMMENT
LOWSources/SwiftSoup.swift301// @param in file to load HTML fromCOMMENT
LOWSources/SwiftSoup.swift321// COMMENT
LOWSources/SwiftSoup.swift361 - returns: sane HTML documentCOMMENT
LOWSources/Elements.swift1//COMMENT
LOWSources/BinarySearch.swift1//COMMENT
LOWSources/BinarySearch.swift21 ///COMMENT
LOWSources/BinarySearch.swift41 low = index(after: mid)COMMENT
LOWSources/StringUtil.swift321// COMMENT
LOWSources/StringUtil.swift1181 accum.write(contentsOf: basePtr.advanced(by: idx), count: runEnd - idx)COMMENT
LOWSources/StringUtil.swift1201// } else if (lowerIndex > upperIndex) {COMMENT
LOWSources/Node.swift161 self.attributes = nilCOMMENT
LOWSources/QueryParserCache.swift1//COMMENT
LOWSources/QueryParserCache.swift21COMMENT
Cross-File Repetition8 hits · 40 pts
SeverityFileLineSnippetContext
HIGHTools/compare_tokenqueue_search.py0fresh-process release comparisons with full output verification and balanced order. requires python 3, numpy and scipy. STRING
HIGHTools/compare_exclusion.py0fresh-process release comparisons with full output verification and balanced order. requires python 3, numpy and scipy. STRING
HIGHTools/compare_ordered_insertion.py0fresh-process release comparisons with full output verification and balanced order. requires python 3, numpy and scipy. STRING
HIGHTools/compare_independent_hotspots.py0fresh-process release comparisons with full output verification and balanced order. requires python 3, numpy and scipy. STRING
HIGHTools/compare_child_reads.py0fresh-process release comparisons with full output verification and balanced order. requires python 3, numpy and scipy. STRING
HIGHTools/compare_character_classification.py0fresh-process release comparisons with full output verification and balanced order. requires python 3, numpy and scipy. STRING
HIGHTools/compare_cursor_moves.py0fresh-process release comparisons with full output verification and balanced order. requires python 3, numpy and scipy. STRING
HIGHTools/compare_blank_text.py0fresh-process release comparisons with full output verification and balanced order. requires python 3, numpy and scipy. STRING
Hyper-Verbose Identifiers12 hits · 18 pts
SeverityFileLineSnippetContext
LOW⚡Tools/tests/test_character_classification_runner.py19 def test_valid_record_is_not_rewritten(self):CODE
LOW⚡Tools/tests/test_character_classification_runner.py23 def test_wrong_iteration_count_is_rejected_even_with_plausible_checksum(self):CODE
LOW⚡Tools/tests/test_character_classification_runner.py27 def test_zero_checksum_cannot_hide_wrong_iteration_count(self):CODE
LOW⚡Tools/tests/test_character_classification_runner.py32 def test_workload_must_match_the_requested_operation(self):CODE
LOW⚡Tools/tests/test_character_classification_runner.py36 def test_calibration_checks_the_checksum_too(self):CODE
LOW⚡Tools/tests/test_character_classification_runner.py40 def test_expected_value_cannot_drift(self):CODE
LOW⚡Tools/tests/test_character_classification_runner.py44 def test_duration_must_be_positive(self):CODE
LOW⚡Tools/tests/test_character_classification_runner.py49 def test_counts_must_be_integers_not_coercible_values(self):CODE
LOW⚡Tools/tests/test_character_classification_runner.py55 def test_schema_rejects_missing_extra_and_nonobject_values(self):CODE
LOW⚡Tools/tests/test_character_classification_runner.py62 def test_verifier_requires_complete_nonempty_record_array(self):CODE
LOW⚡Tools/tests/test_character_classification_runner.py70 def test_verifier_uses_exact_bytes_not_just_json_equality(self):CODE
LOW⚡Tools/tests/test_character_classification_runner.py74 def test_workloads_are_known_nonempty_and_unique(self):CODE
Fake / Example Data21 hits · 12 pts
SeverityFileLineSnippetContext
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift192 let textBlock = String(repeating: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: 20)STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift192 let textBlock = String(repeating: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: 20)STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift402 let paragraph = String(repeating: "Hyperion lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: 6STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift402 let paragraph = String(repeating: "Hyperion lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: 6STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift455 let paragraph = String(repeating: "Leviathan lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift455 let paragraph = String(repeating: "Leviathan lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift497 let paragraph = String(repeating: "Gargantua lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift497 let paragraph = String(repeating: "Gargantua lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift539 let paragraph = String(repeating: "Behemoth lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: 1STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift539 let paragraph = String(repeating: "Behemoth lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: 1STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift600 let paragraph = String(repeating: "Colossus lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: 1STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift600 let paragraph = String(repeating: "Colossus lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: 1STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift633 let paragraph = String(repeating: "Nebula lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: 220STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift633 let paragraph = String(repeating: "Nebula lorem ipsum dolor sit amet, consectetur adipiscing elit. ", count: 220STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift976 let sentence = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "STRING
LOWTests/SwiftSoupTests/BenchmarkProfileTest.swift976 let sentence = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "STRING
LOWTests/SwiftSoupTests/CssTest.swift127 XCTAssertEqual(value, "John Doe")STRING
LOWTests-macOS/corpus/GitHub.html1282 <span class="pl-k">let</span> html<span class="pl-k">:</span> <span class="pl-c1">String</span> <span class="pl-k">=CODE
LOWTests-macOS/corpus/GitHub.html1354<span class="pl-c"></span> <span class="pl-k">try</span> div.<span class="pl-c1">html</span>(<span class="pl-s"><spanCODE
LOWTests-macOS/corpus/GitHub.html1358 <span class="pl-c"><span class="pl-c">//</span> now div is: &lt;div&gt;&lt;p&gt;First&lt;/p&gt;&lt;p&gt;lorem ipsum&CODE
LOWTests-macOS/corpus/Amazon.html87autofocus:function(){return"autofocus"in h.createElement("input")},inputPlaceholder:function(){return"placeholder"in h.cCODE
Deep Nesting12 hits · 12 pts
SeverityFileLineSnippetContext
LOWTools/compare_tokenqueue_search.py14CODE
LOWTools/compare_exclusion.py17CODE
LOWTools/compare_child_reads.py21CODE
LOWTools/compare_ordered_insertion.py17CODE
LOWTools/compare_sibling_endpoints.py8CODE
LOWTools/compare_entity_benchmarks.py24CODE
LOWTools/compare_character_classification.py51CODE
LOWTools/compare_whitespace_runs.py21CODE
LOWTools/compare_cursor_moves.py20CODE
LOWTools/compare_pattern_reuse.py20CODE
LOWTools/compare_independent_hotspots.py17CODE
LOWTools/compare_blank_text.py16CODE
AI Slop Vocabulary2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMTests-macOS/corpus/GitHub.html1466<p>SwiftSoup elements support a <a href="https://www.w3.org/TR/2009/PR-css3-selectors-20091215/" rel="nofollow">CSS</a> CODE
MEDIUMTests-macOS/corpus/Wikipedia.html341<p><a href="/wiki/Mars_Base_Camp" title="Mars Base Camp">Mars Base Camp</a> (MBC), an American spacecraft concept that pCODE
Excessive Try-Catch Wrapping1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMTests/SwiftSoupTests/StringUtilTest.swift17// print("Error: \(myURLString) doesn't seem to be a valid URL")COMMENT
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWTools/compare_entity_benchmarks.py8CODE