SkiaSharp is a cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.
This report presents the forensic synthetic code analysis of mono/SkiaSharp, a C# project with 5,506 GitHub stars. SynthScan v2.0 examined 304,483 lines of code across 2572 source files, recording 499 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 2.9 places this repository in the Likely human-written 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).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
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.
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.
The scanner identified 499 distinct pattern matches across 15 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | External-Dependency-Info.txt | 1156 | # -------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | External-Dependency-Info.txt | 1179 | # -------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | External-Dependency-Info.txt | 1189 | # -------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | External-Dependency-Info.txt | 1217 | # -------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | documentation/site/ai/dashboard.js | 1 | // ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | documentation/site/ai/dashboard.js | 14 | // ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | documentation/site/ai/dashboard.js | 22 | // ── Formatting helpers ────────────────────────────────────── | COMMENT |
| MEDIUM | documentation/site/ai/dashboard.js | 85 | // ── Panel 1: Adoption at a glance ─────────────────────────── | COMMENT |
| MEDIUM | documentation/site/ai/dashboard.js | 154 | // ── Panel 2: Time to keep up with upstream (the hero) ─────── | COMMENT |
| MEDIUM | documentation/site/ai/dashboard.js | 274 | // ── Panel 3: What the automation costs (per run) ──────────── | COMMENT |
| MEDIUM | documentation/site/ai/dashboard.js | 317 | // ── Shared helpers ────────────────────────────────────────── | COMMENT |
| MEDIUM | documentation/site/ai/dashboard.js | 341 | // ── Load the cached data and render ───────────────────────── | COMMENT |
| MEDIUM | .agents/skills/review-skia-update/scripts/check_deps.py | 21 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .agents/skills/review-skia-update/scripts/check_deps.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .agents/skills/review-skia-update/scripts/check_deps.py | 106 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .agents/skills/review-skia-update/scripts/check_deps.py | 108 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .agents/skills/review-skia-update/scripts/run_review.py | 143 | # ========================================================================= | COMMENT |
| MEDIUM | .agents/skills/review-skia-update/scripts/run_review.py | 145 | # ========================================================================= | COMMENT |
| MEDIUM | .agents/skills/review-skia-update/scripts/run_review.py | 184 | # ========================================================================= | COMMENT |
| MEDIUM | .agents/skills/review-skia-update/scripts/run_review.py | 186 | # ========================================================================= | COMMENT |
| MEDIUM | .agents/skills/review-skia-update/scripts/run_review.py | 416 | # ========================================================================= | COMMENT |
| MEDIUM | .agents/skills/review-skia-update/scripts/run_review.py | 418 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | .agents/skills/review-skia-update/scripts/run_review.py | 485 | # ========================================================================= | COMMENT |
| MEDIUM⚡ | .agents/skills/review-skia-update/scripts/run_review.py | 487 | # ========================================================================= | COMMENT |
| MEDIUM | …ts/skills/issue-triage/scripts/render-triage-report.py | 31 | # ── Jinja2 filters (shared by template) ───────────────────────────────────── | COMMENT |
| MEDIUM | …ts/skills/issue-triage/scripts/render-triage-report.py | 66 | # ── Markdown rendering (Jinja2 template) ──────────────────────────────────── | COMMENT |
| MEDIUM | …ts/skills/issue-triage/scripts/render-triage-report.py | 104 | # ── HTML rendering (viewer.html injection) ────────────────────────────────── | COMMENT |
| MEDIUM | …ts/skills/issue-triage/scripts/render-triage-report.py | 136 | # ── Main ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ts/skills/skill-creator/eval-viewer/generate_review.py | 284 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ts/skills/skill-creator/eval-viewer/generate_review.py | 286 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-data.py | 549 | # ── GitHub author resolution ───────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-data.py | 740 | # ── Branch diffing ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-data.py | 833 | # ── Preview-milestone enumeration ─────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-data.py | 1181 | # ── main ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-data.py | 1229 | # ── servicing branch (release/X.Y.x) ──────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-data.py | 1856 | # ── page-set discovery (shared by release-notes-index.py + release-notes-render.py) ────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-data.py | 1918 | # ── orphan-sidecar warnings ───────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-data.py | 1955 | # ── Commands ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-data.py | 2244 | # ── Main ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-render.py | 33 | # ── reuse release-notes-data.py's shared low-level helpers (one source of truth) ───── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-render.py | 94 | # ── formatting helpers (structure the agent must never hand-write) ─────────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-render.py | 164 | # ── page assembly (the single source of layout truth) ──────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-render.py | 288 | # ── enforcement ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/generate-ai-dashboard.py | 48 | # ── Paths & constants ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/generate-ai-dashboard.py | 88 | # ── Small helpers ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/generate-ai-dashboard.py | 146 | # ── Panel 1: adoption (NuGet) ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/generate-ai-dashboard.py | 235 | # ── Panel 2: cadence (git history + Chromium Dashboard) ────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/generate-ai-dashboard.py | 410 | # ── Panel 3: automation cost ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/generate-ai-dashboard.py | 426 | # ── Main ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/infra/docs/release-notes-index.py | 37 | # ── reuse release-notes-data.py's shared low-level helpers (one source of truth) ───── | COMMENT |
| MEDIUM⚡ | scripts/infra/caching/repo-deps.py | 24 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/infra/caching/repo-deps.py | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/infra/caching/repo-deps.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/infra/caching/repo-deps.py | 35 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/infra/caching/repo-deps.py | 183 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/infra/caching/repo-deps.py | 185 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/infra/caching/repo-deps.py | 195 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/infra/caching/repo-deps.py | 197 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/infra/caching/repo-deps.py | 209 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/infra/caching/repo-deps.py | 211 | # --------------------------------------------------------------------------- | COMMENT |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | AGENTS.md | 163 | ### Step 1: Identify Pointer Type | COMMENT |
| LOW | AGENTS.md | 179 | ### Step 2: Choose Pattern | COMMENT |
| LOW | AGENTS.md | 212 | ### Step 3: Error Handling | COMMENT |
| LOW | AGENTS.md | 220 | ### Step 4: Same-Instance Returns | COMMENT |
| LOW | documentation/dev/building-samples.md | 27 | ### Step 1: Download — select which CI build to fetch | COMMENT |
| LOW | documentation/dev/building-samples.md | 41 | ### Step 2: Build samples — use the real NuGet version | COMMENT |
| LOW | documentation/dev/debugging-methodology.md | 169 | #### Step 1: Compare DT_NEEDED between working and broken builds | COMMENT |
| LOW | documentation/dev/debugging-methodology.md | 181 | #### Step 2: Check if the linker is silently failing | COMMENT |
| LOW | documentation/dev/debugging-methodology.md | 197 | #### Step 3: Fix location depends on root cause | COMMENT |
| LOW | documentation/dev/adding-apis.md | 104 | ### Step 1: Find C++ API | COMMENT |
| LOW | documentation/dev/adding-apis.md | 113 | ### Step 2: Add C API | COMMENT |
| LOW | documentation/dev/adding-apis.md | 129 | ### Step 3: Commit Submodule | COMMENT |
| LOW | documentation/dev/adding-apis.md | 142 | ### Step 4: Regenerate P/Invoke | COMMENT |
| LOW | documentation/dev/adding-apis.md | 157 | ### Step 5: Add C# Wrapper | COMMENT |
| LOW | documentation/dev/adding-apis.md | 167 | ### Step 6: Test | COMMENT |
| LOW⚡ | documentation/dev/adding-apis.md | 232 | # Step 1: Build native library (REQUIRED after C API changes) | COMMENT |
| LOW⚡ | documentation/dev/adding-apis.md | 236 | # Step 2: Regenerate P/Invoke (after C API changes) | COMMENT |
| LOW⚡ | documentation/dev/adding-apis.md | 239 | # Step 3: Build C# bindings | COMMENT |
| LOW⚡ | documentation/dev/adding-apis.md | 242 | # Step 4: Run tests (MANDATORY - not optional) | COMMENT |
| LOW | documentation/dev/writing-docs.md | 36 | ### Step 1: Stub generation + AI docs (auto-api-docs-writer) | COMMENT |
| LOW | documentation/dev/writing-docs.md | 53 | ### Step 2: Submodule sync (auto-docs-submodule-sync) | COMMENT |
| LOW | documentation/dev/writing-docs.md | 93 | ### Step 1: Create a branch in the docs submodule | COMMENT |
| LOW | documentation/dev/writing-docs.md | 101 | ### Step 2: Download the latest NuGet packages | COMMENT |
| LOW | documentation/dev/writing-docs.md | 113 | ### Step 3: Regenerate the docs | COMMENT |
| LOW | .agents/skills/release-status/SKILL.md | 44 | ## Step 1: Run the Status Script | COMMENT |
| LOW | .agents/skills/release-status/SKILL.md | 60 | ## Step 2: Interpret Results | COMMENT |
| LOW | .agents/skills/release-status/SKILL.md | 93 | ## Step 3: Report to User | COMMENT |
| LOW | .agents/skills/ci-status/SKILL.md | 84 | ## Step 1: Collect Raw Data | COMMENT |
| LOW | .agents/skills/ci-status/SKILL.md | 131 | ## Step 2: AI Analysis | COMMENT |
| LOW | .agents/skills/ci-status/SKILL.md | 250 | ## Step 3: Assemble Report JSON | COMMENT |
| LOW | .agents/skills/ci-status/SKILL.md | 282 | ## Step 4: Validate Report | COMMENT |
| LOW | .agents/skills/ci-status/SKILL.md | 298 | ## Step 5: Render Reports | COMMENT |
| LOW | .agents/skills/ci-status/SKILL.md | 316 | ## Step 6: Present to User | COMMENT |
| LOW | .agents/skills/ci-status/SKILL.md | 360 | ## Step 7: Follow-Up Investigations | COMMENT |
| LOW | .agents/skills/native-dependency-update/SKILL.md | 236 | #### Step 1: Create mono/skia PR | COMMENT |
| LOW | .agents/skills/native-dependency-update/SKILL.md | 254 | #### Step 2: Create SkiaSharp PR | COMMENT |
| LOW | .agents/skills/native-dependency-update/SKILL.md | 268 | #### Step 3: Cross-link the PRs | COMMENT |
| LOW | …s/update-skia/references/breaking-changes-checklist.md | 9 | ## Step 1: Gather Release Notes | COMMENT |
| LOW | …s/update-skia/references/breaking-changes-checklist.md | 19 | ## Step 2: Filter by Relevance | COMMENT |
| LOW | …s/update-skia/references/breaking-changes-checklist.md | 45 | ## Step 3: Categorize Each Change | COMMENT |
| LOW | …s/update-skia/references/breaking-changes-checklist.md | 57 | ## Step 4: Verify the Analysis | COMMENT |
| LOW | …s/update-skia/references/breaking-changes-checklist.md | 81 | ## Step 5: C API Impact Analysis | COMMENT |
| LOW | …s/update-skia/references/breaking-changes-checklist.md | 102 | ## Step 6: C# Impact Analysis | COMMENT |
| LOW | …s/update-skia/references/breaking-changes-checklist.md | 109 | ## Step 7: Build & Verify | COMMENT |
| LOW | .agents/skills/release-branch/SKILL.md | 61 | ## Step 1: Determine Version | COMMENT |
| LOW | .agents/skills/release-branch/SKILL.md | 77 | ## Step 2: Determine Release Type | COMMENT |
| LOW | .agents/skills/release-branch/SKILL.md | 106 | ## Step 3: Create Branch and Update PREVIEW_LABEL | COMMENT |
| LOW | .agents/skills/release-branch/SKILL.md | 122 | ## Step 4: Push Branch | COMMENT |
| LOW | .agents/skills/release-branch/SKILL.md | 141 | ## Step 5: Create the mono/skia Counterpart Branch | COMMENT |
| LOW | .agents/skills/release-branch/SKILL.md | 173 | ## Step 6: Bump the Integration Branch (Stable Only) | COMMENT |
| LOW | …ts/skills/api-add-review/references/review-workflow.md | 17 | ## Step 1: Gather the API Surface | COMMENT |
| LOW | …ts/skills/api-add-review/references/review-workflow.md | 27 | ## Step 2: Check Against Design Rules | COMMENT |
| LOW | …ts/skills/api-add-review/references/review-workflow.md | 84 | ## Step 3: Check Test Coverage | COMMENT |
| LOW | …ts/skills/api-add-review/references/review-workflow.md | 105 | ## Step 4: Build and Run Tests | COMMENT |
| LOW | …ts/skills/api-add-review/references/review-workflow.md | 123 | ## Step 5: Check Sample Code | COMMENT |
| LOW | …ts/skills/api-add-review/references/review-workflow.md | 160 | ## Step 6: Produce Report | COMMENT |
| LOW | .agents/skills/skill-creator/SKILL.md | 169 | ### Step 1: Spawn all runs (with-skill AND baseline) in the same turn | COMMENT |
| LOW | .agents/skills/skill-creator/SKILL.md | 199 | ### Step 2: While runs are in progress, draft assertions | COMMENT |
| LOW | .agents/skills/skill-creator/SKILL.md | 207 | ### Step 3: As runs complete, capture timing data | COMMENT |
| LOW | .agents/skills/skill-creator/SKILL.md | 221 | ### Step 4: Grade, aggregate, and launch the viewer | COMMENT |
| 70 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | External-Dependency-Info.txt | 21 | // | COMMENT |
| LOW | External-Dependency-Info.txt | 41 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | COMMENT |
| LOW | External-Dependency-Info.txt | 101 | COMMENT | |
| LOW | External-Dependency-Info.txt | 121 | // this software without specific prior written permission. | COMMENT |
| LOW | External-Dependency-Info.txt | 941 | # The Google Chrome software developed by Google is licensed under | COMMENT |
| LOW | External-Dependency-Info.txt | 961 | # Neither the name of Google Inc. nor the names of its | COMMENT |
| LOW | External-Dependency-Info.txt | 981 | # | COMMENT |
| LOW | External-Dependency-Info.txt | 1001 | # * | COMMENT |
| LOW | External-Dependency-Info.txt | 1021 | # * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | COMMENT |
| LOW | External-Dependency-Info.txt | 1041 | # * . Redistributions in binary form must reproduce the above copyright | COMMENT |
| LOW | External-Dependency-Info.txt | 1061 | # * OF THE POSSIBILITY OF SUCH DAMAGE. | COMMENT |
| LOW | External-Dependency-Info.txt | 1081 | # the copyright holders, disclaims all warranties with regard to this | COMMENT |
| LOW | External-Dependency-Info.txt | 1101 | # | COMMENT |
| LOW | External-Dependency-Info.txt | 1121 | # development of the program and their respective officials, directors, | COMMENT |
| LOW | External-Dependency-Info.txt | 1141 | # above as far as the program is concerned. | COMMENT |
| LOW | External-Dependency-Info.txt | 1161 | # are permitted provided that the following conditions are met: | COMMENT |
| LOW | External-Dependency-Info.txt | 1181 | 4. Burmese Word Break Dictionary Data (burmesedict.txt) | COMMENT |
| LOW | External-Dependency-Info.txt | 1201 | # other materials provided with the distribution. | COMMENT |
| LOW | …umentation/docfx/releases/3.0.0/SkiaSharp/SkiaSharp.md | 2421 | COMMENT | |
| LOW | …n/docfx/releases/3.0.0/SkiaSharp/SkiaSharp.breaking.md | 1081 | COMMENT | |
| LOW | …ases/1.68.1/SkiaSharp.Views/SkiaSharp.Views.Desktop.md | 1 | # API diff: SkiaSharp.Views.Desktop.dll | COMMENT |
| LOW | ….1/SkiaSharp.Views/SkiaSharp.Views.Desktop.breaking.md | 1 | # API diff: SkiaSharp.Views.Desktop.dll | COMMENT |
| LOW | …docfx/releases/3.116.0/SkiaSharp/SkiaSharp.breaking.md | 1081 | COMMENT | |
| LOW | documentation/site/ai/dashboard.js | 1 | // ───────────────────────────────────────────────────────────── | COMMENT |
| LOW | ….Views.WinUI.Native/SkiaSharp.Views.WinUI.Native/pch.h | 1 | #pragma once | COMMENT |
| LOW | ….Views.WinUI.Native/SkiaSharp.Views.WinUI.Native/pch.h | 21 | #include <winrt/Microsoft.UI.Xaml.Interop.h> | COMMENT |
| LOW | …SkiaSharp.Views/SkiaSharp.Views.WinUI/UWPExtensions.cs | 81 | { | COMMENT |
| LOW | tests/Tests/SkiaSharp/SKSingletonInitTest.cs | 161 | // --- SKPaint construction touches the DefaultFont lazy initializer --- | COMMENT |
| LOW | tests/Tests/SkiaSharp/SKSingletonInitTest.cs | 181 | // SKFontManager.Default while its cctor was still running, leaving | COMMENT |
| LOW | tests/Tests/SkiaSharp/Pr3997ResourceLeakTest.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/SKHandleDictionaryTestHelpers.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/SKHandleDictionaryTestHelpers.cs | 81 | // Synthetic-handle seed kept well away from any real native pointer range. On 64-bit targets | COMMENT |
| LOW | tests/Tests/SkiaSharp/SKHandleDictionaryTestHelpers.cs | 161 | if (captured != null) | COMMENT |
| LOW | tests/Tests/SkiaSharp/SKHandleDictionaryTestHelpers.cs | 181 | // benign reference-mismatch instead of an InvalidOperationException. The reference-identity | COMMENT |
| LOW | …s/Tests/SkiaSharp/SKHandleDictionaryReservationTest.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/SKSingletonConcurrencyTest.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/SKSingletonConcurrencyTest.cs | 21 | // cannot create an inversion the product does not have, so a clean run is necessary | COMMENT |
| LOW | tests/Tests/SkiaSharp/SKSingletonConcurrencyTest.cs | 81 | // when Handle is set to zero). Crucially, the new Dispose() design releases | COMMENT |
| LOW | …ts/Tests/SkiaSharp/SKHandleDictionaryReentrancyTest.cs | 1 | using System.Threading; | COMMENT |
| LOW | tests/Tests/SkiaSharp/SKManagedStreamConcurrencyTest.cs | 61 | // After SKCodec.Create reparents the managed stream (OwnsHandle=false, IgnorePublicDispose | COMMENT |
| LOW | tests/Tests/SkiaSharp/Pr4080UseAfterFreeTest.cs | 1 | #nullable disable | COMMENT |
| LOW | …Tests/SkiaSharp/HandleDictionaryThreadingCollection.cs | 1 | using Xunit; | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/RendererCatalog.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/RendererCatalog.cs | 21 | /// else. | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/IRenderer.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/IRenderer.cs | 21 | /// </summary> | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/IRenderer.cs | 41 | /// </summary> | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/GoldenStore.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/GoldenStore.cs | 21 | /// software GL).</item> | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/GoldenStore.cs | 61 | } | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/ISkiaScene.cs | 1 | using System; | COMMENT |
| LOW | …Tests/SkiaSharp/Visual/RendererUnavailableException.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/CatalogReflection.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/GoldenTolerance.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/SceneCatalog.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/GpuRenderGate.cs | 1 | namespace SkiaSharp.Tests.Visual | COMMENT |
| LOW | …ests/SkiaSharp/Visual/Renderers/GaneshMetalRenderer.cs | 1 | using System; | COMMENT |
| LOW | …SkiaSharp/Visual/Renderers/Desktop/GaneshGlRenderer.cs | 1 | using System; | COMMENT |
| LOW | tests/Tests/SkiaSharp/Visual/Scenes/TextScene.cs | 1 | using System; | COMMENT |
| LOW | …/Tests/SkiaSharp/Visual/Tests/VisualMatrixTestsBase.cs | 1 | using System; | COMMENT |
| 99 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …p.Views.Maui.Controls/SkiaSharp.Views.Maui.Controls.md | 15 | [Obsolete ("Use SkiaSharp.Views.Maui.Controls.Hosting.UseSkiaSharp() instead.")] | CODE |
| CRITICAL | …ibility/SkiaSharp.Views.Maui.Controls.Compatibility.md | 15 | [Obsolete ("Use SkiaSharp.Views.Maui.Controls.Hosting.UseSkiaSharp(bool, bool) instead.")] | CODE |
| CRITICAL | …Uno.WinUI.Wasm/WasmScripts/SkiaSharp.Views.Uno.Wasm.js | 75 | this.requestRender = () => skiaSharpExports.SkiaSharp.Views.Windows.SKSwapChainPanel.RenderFrame | CODE |
| CRITICAL | samples/SkiaFiddle/App.xaml.cs | 64 | global::Uno.UI.Adapter.Microsoft.Extensions.Logging.LoggingAdapter.Initialize(); | CODE |
| CRITICAL | samples/Gallery/Uno/App.xaml.cs | 26 | await Uno.UI.Xaml.Media.FontFamilyHelper.PreloadAsync( | CODE |
| CRITICAL | samples/Gallery/Uno/App.xaml.cs | 140 | global::Uno.UI.Adapter.Microsoft.Extensions.Logging.LoggingAdapter.Initialize(); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | documentation/dev/release-notes-and-api-diffs.md | 313 | ## 2. Skill layout & orchestration | COMMENT |
| MEDIUM | documentation/dev/writing-docs.md | 40 | - **Workflow**: [`auto-api-docs-writer.md`](https://github.com/mono/SkiaSharp-API-docs/blob/main/.github/workflows/auto- | CODE |
| MEDIUM | .agents/agents/agentic-workflows.agent.md | 33 | - Configuration: https://github.com/github/gh-aw/blob/v0.71.1/.github/aw/github-agentic-workflows.md | CODE |
| MEDIUM⚡ | .agents/agents/agentic-workflows.agent.md | 55 | **Prompt file**: https://github.com/github/gh-aw/blob/v0.71.1/.github/aw/create-agentic-workflow.md | CODE |
| MEDIUM⚡ | .agents/agents/agentic-workflows.agent.md | 65 | **Prompt file**: https://github.com/github/gh-aw/blob/v0.71.1/.github/aw/update-agentic-workflow.md | CODE |
| MEDIUM⚡ | .agents/agents/agentic-workflows.agent.md | 75 | **Prompt file**: https://github.com/github/gh-aw/blob/v0.71.1/.github/aw/debug-agentic-workflow.md | CODE |
| MEDIUM⚡ | .agents/agents/agentic-workflows.agent.md | 85 | **Prompt file**: https://github.com/github/gh-aw/blob/v0.71.1/.github/aw/upgrade-agentic-workflows.md | CODE |
| MEDIUM | .agents/agents/agentic-workflows.agent.md | 105 | **Prompt file**: https://github.com/github/gh-aw/blob/v0.71.1/.github/aw/create-shared-agentic-workflow.md | CODE |
| MEDIUM | .agents/agents/agentic-workflows.agent.md | 144 | # Initialize repository for agentic workflows | COMMENT |
| MEDIUM | .agents/agents/agentic-workflows.agent.md | 172 | - Always reference the instructions file at https://github.com/github/gh-aw/blob/v0.71.1/.github/aw/github-agentic-workf | CODE |
| MEDIUM | .agents/skills/ci-status/scripts/ci-status.py | 317 | # Query globally (scheduled/dispatch/event-driven workflows) | COMMENT |
| MEDIUM | .github/workflows/memory-leak-fixer.md | 15 | # guardrails (one finding per run, de-dup, validate-before-PR). | COMMENT |
| MEDIUM | .github/workflows/persist-aw-data.yml | 3 | # Downloads the agent artifact from a completed agentic workflow run and commits | COMMENT |
| MEDIUM | .github/workflows/performance-fixer.md | 16 | # guardrails (one finding per run, de-dup, two-proof-before-PR). | COMMENT |
| MEDIUM | .github/scripts/skia-sync-push-prs.sh | 95 | # Every skia-sync PR carries type/milestone-sync and partner/agentic-workflows (it is | COMMENT |
| MEDIUM | .github/scripts/skia-sync-push-prs.sh | 96 | # created by the auto-skia-sync agentic workflow); milestone bumps (those that change | COMMENT |
| MEDIUM | .github/scripts/skia-sync-push-prs.sh | 151 | # Every skia-sync PR carries type/milestone-sync and partner/agentic-workflows (it is | COMMENT |
| MEDIUM | .github/scripts/skia-sync-push-prs.sh | 152 | # created by the auto-skia-sync agentic workflow); milestone bumps (those that change | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .agents/skills/ci-status/scripts/ci-status.py | 128 | except Exception: | CODE |
| LOW | .agents/skills/ci-status/scripts/ci-status.py | 156 | except Exception: | CODE |
| LOW | .agents/skills/ci-status/scripts/ci-status.py | 178 | except Exception: | CODE |
| LOW | …ls/review-skia-update/scripts/check_generated_files.py | 63 | except Exception: | CODE |
| LOW | …ls/review-skia-update/scripts/check_generated_files.py | 77 | except Exception as e: | CODE |
| LOW | .agents/skills/review-skia-update/scripts/check_deps.py | 60 | except Exception as exc: | CODE |
| MEDIUM | .agents/skills/review-skia-update/scripts/check_deps.py | 74 | eprint(f"Error: DEPS parse failed: {e}") | CODE |
| LOW | .agents/skills/review-skia-update/scripts/run_review.py | 432 | except Exception as exc: | CODE |
| LOW | .agents/skills/review-skia-update/scripts/run_review.py | 448 | except Exception as exc: | CODE |
| LOW | .agents/skills/review-skia-update/scripts/run_review.py | 463 | except Exception as exc: | CODE |
| LOW⚡ | .agents/skills/review-skia-update/scripts/run_review.py | 478 | except Exception as exc: | CODE |
| MEDIUM | …ts/skills/skill-creator/eval-viewer/generate_review.py | 408 | print(f"Error: {workspace} is not a directory", file=sys.stderr) | CODE |
| LOW | .agents/skills/skill-creator/scripts/run_eval.py | 223 | except Exception as e: | CODE |
| MEDIUM | .agents/skills/skill-creator/scripts/run_eval.py | 276 | print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr) | CODE |
| LOW | .agents/skills/skill-creator/scripts/package_skill.py | 106 | except Exception as e: | CODE |
| MEDIUM | …ts/skills/skill-creator/scripts/improve_description.py | 205 | print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr) | CODE |
| MEDIUM | .agents/skills/skill-creator/scripts/run_loop.py | 265 | print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr) | CODE |
| LOW | …gents/skills/security-audit/scripts/query-cg-alerts.py | 86 | except Exception as e: | CODE |
| LOW | …gents/skills/security-audit/scripts/query-cg-alerts.py | 177 | except Exception as e: | CODE |
| LOW | …skills/security-audit/scripts/query-chrome-releases.py | 125 | except Exception: | CODE |
| LOW | scripts/infra/tests/extract-visual-goldens.py | 105 | except Exception as ex: # noqa: BLE001 | CODE |
| LOW | scripts/infra/tests/extract-visual-goldens.py | 128 | except Exception as ex: # noqa: BLE001 | CODE |
| LOW | scripts/infra/docs/release-notes-data.py | 1557 | except Exception: | CODE |
| LOW | scripts/infra/docs/release-notes-data.py | 1562 | except Exception: | CODE |
| LOW | scripts/infra/docs/generate-ai-dashboard.py | 156 | except Exception as e: # noqa: BLE001 - any failure -> try the mirror | CODE |
| LOW | scripts/infra/docs/generate-ai-dashboard.py | 195 | except Exception as e: # noqa: BLE001 - keep last-known adoption block | CODE |
| LOW | scripts/infra/docs/generate-ai-dashboard.py | 353 | except Exception as e: # noqa: BLE001 - can't read git -> keep snapshot | CODE |
| LOW | scripts/infra/docs/generate-ai-dashboard.py | 364 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | scripts/infra/docs/generate-ai-dashboard.py | 389 | except Exception as e: # noqa: BLE001 - keep snapshot dates for this one | CODE |
| LOW | scripts/infra/docs/generate-ai-dashboard.py | 433 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | scripts/infra/docs/release-notes-index.py | 108 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …gents/skills/release-status/scripts/pipeline-status.py | 160 | CODE | |
| LOW | .agents/skills/ci-status/scripts/ci-status.py | 243 | CODE | |
| LOW | .agents/skills/ci-status/scripts/ci-status.py | 417 | CODE | |
| LOW | .agents/skills/ci-status/scripts/ci-status.py | 483 | CODE | |
| LOW | .agents/skills/ci-status/scripts/ci-status.py | 611 | CODE | |
| LOW | .agents/skills/ci-status/scripts/render-ci-status-md.py | 83 | CODE | |
| LOW | …s/skills/review-skia-update/scripts/check_companion.py | 51 | CODE | |
| LOW | …ls/review-skia-update/scripts/check_generated_files.py | 31 | CODE | |
| LOW | .agents/skills/review-skia-update/scripts/check_deps.py | 48 | CODE | |
| LOW | …lls/review-skia-update/scripts/validate-skia-review.py | 14 | CODE | |
| LOW | …ents/skills/review-skia-update/scripts/check_source.py | 52 | CODE | |
| LOW | …ts/skills/skill-creator/eval-viewer/generate_review.py | 85 | CODE | |
| LOW | …ts/skills/skill-creator/eval-viewer/generate_review.py | 149 | CODE | |
| LOW | …ts/skills/skill-creator/eval-viewer/generate_review.py | 288 | CODE | |
| LOW | .agents/skills/skill-creator/scripts/run_eval.py | 35 | CODE | |
| LOW | .agents/skills/skill-creator/scripts/package_skill.py | 42 | CODE | |
| LOW | …ts/skills/skill-creator/scripts/improve_description.py | 50 | CODE | |
| LOW | …ts/skills/skill-creator/scripts/aggregate_benchmark.py | 67 | CODE | |
| LOW | .agents/skills/skill-creator/scripts/generate_report.py | 16 | CODE | |
| LOW | .agents/skills/skill-creator/scripts/utils.py | 7 | CODE | |
| LOW | …gents/skills/security-audit/scripts/query-cg-alerts.py | 105 | CODE | |
| LOW | …gents/skills/security-audit/scripts/query-cg-alerts.py | 162 | CODE | |
| LOW | …gents/skills/security-audit/scripts/query-cg-alerts.py | 230 | CODE | |
| LOW | …lls/security-audit/scripts/render-security-audit-md.py | 63 | CODE | |
| LOW | …skills/security-audit/scripts/query-chrome-releases.py | 151 | CODE | |
| LOW | …lls/security-audit/scripts/query-milestone-schedule.py | 269 | CODE | |
| LOW | scripts/infra/tests/extract-visual-goldens.py | 76 | CODE | |
| LOW | scripts/infra/tests/extract-visual-goldens.py | 132 | CODE | |
| LOW | scripts/infra/docs/release-notes-data.py | 252 | CODE | |
| LOW | scripts/infra/docs/release-notes-render.py | 471 | CODE | |
| LOW | scripts/infra/caching/repo-deps.py | 213 | CODE | |
| LOW | scripts/infra/caching/repo-deps.py | 356 | CODE | |
| LOW | .github/scripts/track-artifact-sizes.py | 168 | CODE | |
| LOW | .github/scripts/track-artifact-sizes.py | 398 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …sForms/SkiaSharpSample/Properties/Settings.Designer.cs | 3 | // This code was generated by a tool. | COMMENT |
| HIGH | …Forms/SkiaSharpSample/Properties/Resources.Designer.cs | 3 | // This code was generated by a tool. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .agents/skills/review-skia-update/scripts/run_review.py | 91 | def extract_skia_milestone_from_cgmanifest(cgmanifest: dict): | CODE |
| LOW | .agents/skills/review-skia-update/scripts/viewer.html | 584 | function renderRecommendationAlerts(targetId, recommendations, emptyText) { | CODE |
| LOW | binding/HarfBuzzSharp/HarfBuzzApi.generated.cs | 6643 | // typedef hb_unicode_combining_class_t (*)(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* user_data)* hb_un | COMMENT |
| LOW | binding/HarfBuzzSharp/HarfBuzzApi.generated.cs | 6665 | // typedef hb_unicode_general_category_t (*)(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* user_data)* hb_u | COMMENT |
| LOW | scripts/infra/docs/release-notes-data.py | 428 | def get_version_from_remote_branch(branch): | CODE |
| LOW | scripts/infra/docs/release-notes-data.py | 743 | def list_remote_release_branches(): | CODE |
| LOW | scripts/infra/docs/release-notes-data.py | 907 | def collect_preview_milestones(page_version, base_version): | CODE |
| LOW | scripts/infra/docs/release-notes-data.py | 1046 | def find_previous_stable_base(all_branches, major, minor_num, patch, subpatch=0): | CODE |
| LOW | scripts/infra/docs/release-notes-data.py | 1921 | def warn_orphan_notes_sidecars(): | CODE |
| LOW | scripts/infra/docs/release-notes-data.py | 2025 | def _canonical_branches_by_version(all_branches): | CODE |
| LOW | scripts/infra/docs/generate-ai-dashboard.py | 276 | def fetch_chrome_branch_and_stable(milestone): | CODE |
| LOW | scripts/infra/docs/generate-ai-dashboard.py | 294 | def fetch_nuget_first_releases(): | CODE |
| LOW | .github/scripts/render-artifact-sizes.py | 227 | def render_all_packages_table(history: dict, columns: list[Column], | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .agents/skills/ci-status/scripts/ci-status.py | 23 | CODE | |
| LOW | .agents/skills/ci-status/scripts/ci-status.py | 26 | CODE | |
| LOW | …ills/review-skia-update/scripts/persist-skia-review.py | 6 | CODE | |
| LOW | …ts/skills/issue-triage/scripts/render-triage-report.py | 14 | CODE | |
| LOW | .agents/skills/skill-creator/scripts/quick_validate.py | 7 | CODE | |
| LOW | scripts/infra/docs/release-notes-data.py | 95 | CODE | |
| LOW | scripts/infra/docs/release-notes-data.py | 104 | CODE | |
| LOW | scripts/infra/docs/release-notes-data.py | 105 | CODE | |
| LOW | scripts/infra/docs/release-notes-data.py | 106 | CODE | |
| LOW | scripts/infra/docs/release-notes-data.py | 108 | CODE | |
| LOW | scripts/infra/docs/release-notes-data.py | 108 | CODE | |
| LOW | scripts/infra/docs/release-notes-render.py | 24 | CODE | |
| LOW | scripts/infra/docs/release-notes-index.py | 28 | CODE | |
| LOW | scripts/infra/caching/repo-deps.py | 16 | CODE | |
| LOW | .github/scripts/render-artifact-sizes.py | 17 | CODE | |
| LOW | .github/scripts/track-artifact-sizes.py | 32 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ills/security-audit/scripts/validate-security-audit.py | 209 | # bugUrl can only be null if bugId is null | COMMENT |
| HIGH | …ills/security-audit/scripts/validate-security-audit.py | 222 | errors.append(f"{loc}: assessment='affected' requires inOurTree (boolean, never null)") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/azure-templates-stages-test.yml | 343 | # TODO: add tests for linux alpine | COMMENT |
| LOW⚡ | scripts/azure-templates-stages-test.yml | 344 | # TODO: add tests for linux no dependencies | COMMENT |
| LOW⚡ | scripts/azure-templates-stages-test.yml | 345 | # TODO: add tests for windows nano server | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | samples/SkiaFiddle/scripts/smoke.sh | 6 | # Usage: | COMMENT |
| LOW | samples/Gallery/Uno/scripts/smoke.sh | 6 | # Usage: | COMMENT |
| LOW | scripts/infra/docs/generate-api-docs.sh | 21 | # Usage: | COMMENT |
| LOW | scripts/infra/docs/docker/run.sh | 21 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …Sharp.Views.Blazor/wwwroot/types/emscripten/index.d.ts | 44 | print(str: string): void; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …es/Gallery/Shared/Samples/AnimatedWebpEncoderSample.cs | 107 | // Phase 8: empty pause (4 frames) <- makes loop seamless | COMMENT |
| LOW | .github/workflows/build-site.yml | 403 | # If another workflow beat us to creating the branch, just use theirs | COMMENT |