Skip to content

Fill and review API documentation#172

Merged
mattleibow merged 2 commits into
mainfrom
automation/write-api-docs
Jun 30, 2026
Merged

Fill and review API documentation#172
mattleibow merged 2 commits into
mainfrom
automation/write-api-docs

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated api-docs run: filled To be added. placeholders for the latest stub additions and cleared all deterministic lint findings reported by dotnet cake --target=docs-format-docs.

What was filled (8 members across 4 files)

File Member
SkiaSharp/SKColorFilter.xml CreateOverdraw(SKColor[])
SkiaSharp/SKColorFilter.xml CreateOverdraw(ReadOnlySpan<SKColor>)
SkiaSharp/SKImageFilter.xml CreateCrop(SKRect)
SkiaSharp/SKImageFilter.xml CreateCrop(SKRect, SKShaderTileMode)
SkiaSharp/SKImageFilter.xml CreateCrop(SKRect, SKShaderTileMode, SKImageFilter?)
SkiaSharp/SKImageFilter.xml CreateEmpty()
SkiaSharp/SKPaint.xml GetFastBounds(SKRect, out SKRect)
SkiaSharp/SKSurface.xml DisposeManaged()

Every member was cross-checked against the C# source in binding/SkiaSharp/ before writing the summary, parameter docs, return doc, and exceptions:

  • CreateOverdraw — confirmed the 6-color overdraw mapping and the ArgumentNullException / ArgumentException("Exactly 6 colors are required.") behavior; both overloads documented per their actual validation.
  • CreateCrop — confirmed the single-arg overload defaults to SKShaderTileMode.Decal and the (rect, tileMode, input) overload accepts a nullable input filter.
  • CreateEmpty — documented as producing a fully transparent result regardless of source (matches sk_imagefilter_new_empty).
  • GetFastBounds — confirmed false is returned with fastBounds = SKRect.Empty when the paint cannot compute conservative bounds; otherwise true with the expanded bounds.
  • DisposeManaged — mirrors the doc shape of the existing SKPixmap.DisposeManaged override.

What was reviewed and fixed (23 lint defects)

Accessor verbs (17) — corrected summaries to follow the read-only Gets ... vs. settable Gets or sets ... rule from references/patterns.md:

  • SKBitmap.Pixels, SKFrontBufferedStream.Position, SKImageInfo.AlphaType, SKPath.Handle, SKStream.Position — switched to Gets or sets.
  • SKJpegEncoderOptions.{AlphaOption,Downsample,Quality}, SKNativeObject.{IgnorePublicDispose,IsDisposed}, SKPath.Convexity, SKPngEncoderOptions.{FilterFlags,ZLibLevel}, SKSurfaceProperties.{Flags,PixelGeometry}, SKWebpEncoderOptions.{Compression,Quality} — switched to Gets.

Repeated words (4):

  • SKColorFilter.CreateBlendMode param mode: "The blend mode mode that is applied..." → "The blend mode that is applied...".
  • SKSize.op_Explicit(SKSize→SKPoint), SKSize.op_Implicit(SKSizeI→SKSize), SKSizeI.op_Explicit(SKSizeI→SKPointI): dropped the duplicated word in "structure structure" within <returns>.

Spelling (1): SKColorspacePrimariesCicp type remarks — "Colour primaries" → "color primaries" (US English, consistent with the rest of the docs).

Invalid cref (1): SkiaSharp.Views.Tizen.CustomRenderingView constructor — <see cref='SkiaSharp.Views.Tizen.CustomRenderingView'> now uses the required T: DocId prefix.

Findings summary

Severity Count Status
CRITICAL (broken XML/CDATA, factually wrong, obsolete-API example) 0
IMPORTANT (missing-docs, accessor-verb, repeated-word, spelling, invalid-cref) 31 all fixed (8 ADD + 23 lint)
MINOR 0

Deferred: none.

FINDING | severity=IMPORTANT | kind=missing-docs | type=SkiaSharp.SKColorFilter | count=2
FINDING | severity=IMPORTANT | kind=missing-docs | type=SkiaSharp.SKImageFilter | count=4
FINDING | severity=IMPORTANT | kind=missing-docs | type=SkiaSharp.SKPaint | count=1
FINDING | severity=IMPORTANT | kind=missing-docs | type=SkiaSharp.SKSurface | count=1
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKBitmap.Pixels
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKFrontBufferedStream.Position
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKImageInfo.AlphaType
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKJpegEncoderOptions.AlphaOption
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKJpegEncoderOptions.Downsample
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKJpegEncoderOptions.Quality
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKNativeObject.IgnorePublicDispose
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKNativeObject.IsDisposed
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKPath.Convexity
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKPath.Handle
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKPngEncoderOptions.FilterFlags
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKPngEncoderOptions.ZLibLevel
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKStream.Position
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKSurfaceProperties.Flags
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKSurfaceProperties.PixelGeometry
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKWebpEncoderOptions.Compression
FINDING | severity=IMPORTANT | kind=accessor-verb | id=P:SkiaSharp.SKWebpEncoderOptions.Quality
FINDING | severity=IMPORTANT | kind=repeated-word  | id=M:SkiaSharp.SKColorFilter.CreateBlendMode(SkiaSharp.SKColor,SkiaSharp.SKBlendMode) | word=mode
FINDING | severity=IMPORTANT | kind=repeated-word  | id=M:SkiaSharp.SKSize.op_Explicit(SkiaSharp.SKSize)~SkiaSharp.SKPoint | word=structure
FINDING | severity=IMPORTANT | kind=repeated-word  | id=M:SkiaSharp.SKSize.op_Implicit(SkiaSharp.SKSizeI)~SkiaSharp.SKSize | word=structure
FINDING | severity=IMPORTANT | kind=repeated-word  | id=M:SkiaSharp.SKSizeI.op_Explicit(SkiaSharp.SKSizeI)~SkiaSharp.SKPointI | word=structure
FINDING | severity=IMPORTANT | kind=spelling       | id=T:SkiaSharp.SKColorspacePrimariesCicp | word=colour
FINDING | severity=IMPORTANT | kind=invalid-cref   | id=M:SkiaSharp.Views.Tizen.CustomRenderingView.#ctor(ElmSharp.EvasObject)

Validation

Re-ran cd skiasharp && dotnet cake --target=docs-format-docs after the edits:

Documentation missing in 0/430 (0.0%) types and 0/5022 (0.0%) members.
Docs lint: scanned 406 type file(s), 0 finding(s), 0 error(s).

Generated files (SkiaSharpAPI/index.xml, ns-*.xml, _filter.xml, FrameworksIndex/) were intentionally excluded from this commit per the workflow instructions; they will be regenerated as part of the normal sync cycle.

Generated by Auto API Docs Writer · ● 23.9M ·

Filled "To be added." placeholders for 8 new members across SKColorFilter,
SKImageFilter, SKPaint, and SKSurface. Fixed 23 deterministic lint findings:
17 accessor-verb mismatches, 4 repeated-word defects, 1 spelling, and 1
invalid <see cref> missing the T: prefix.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@learn-build-service-prod

Copy link
Copy Markdown
Contributor

PoliCheck Scan Report

The following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans.

✅ No issues found

More information about PoliCheck

Information: PoliCheck | Severity Guidance | Term
For any questions: Try searching the learn.microsoft.com contributor guides or post your question in the Learn support channel.

@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit f1f0fca:

⚠️ Validation status: warnings

File Status Preview URL Details
SkiaSharpAPI/SkiaSharp.Views.Tizen/CustomRenderingView.xml ⚠️Warning Details
SkiaSharpAPI/HarfBuzzSharp/HBColor.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKBitmap.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKColorFilter.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKColorspacePrimariesCicp.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKFrontBufferedStream.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKImageFilter.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKImageInfo.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKJpegEncoderOptions.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKNativeObject.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPaint.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPath.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPathMeasure.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPngEncoderOptions.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSize.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSizeI.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKStream.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSurface.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSurfaceProperties.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKWebpEncoderOptions.xml ✅Succeeded

SkiaSharpAPI/SkiaSharp.Views.Tizen/CustomRenderingView.xml

  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.Rect'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.Widget'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.EvasObject'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.EvasObject'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.EvasObject'.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@learn-build-service-prod

Copy link
Copy Markdown
Contributor

Learn Build status updates of commit dc838bb:

⚠️ Validation status: warnings

File Status Preview URL Details
SkiaSharpAPI/SkiaSharp.Views.Tizen/CustomRenderingView.xml ⚠️Warning Details
SkiaSharpAPI/HarfBuzzSharp/HBColor.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKBitmap.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKColorFilter.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKColorspacePrimariesCicp.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKFrontBufferedStream.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKImageFilter.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKImageInfo.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKJpegEncoderOptions.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKNativeObject.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPaint.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPath.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPathMeasure.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPngEncoderOptions.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSize.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSizeI.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKStream.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSurface.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKSurfaceProperties.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKWebpEncoderOptions.xml ✅Succeeded

SkiaSharpAPI/SkiaSharp.Views.Tizen/CustomRenderingView.xml

  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.Rect'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.EvasObject'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.Widget'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.EvasObject'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'ElmSharp.EvasObject'.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@learn-build-service-prod

Copy link
Copy Markdown
Contributor

PoliCheck Scan Report

The following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans.

✅ No issues found

More information about PoliCheck

Information: PoliCheck | Severity Guidance | Term
For any questions: Try searching the learn.microsoft.com contributor guides or post your question in the Learn support channel.

@mattleibow mattleibow merged commit b64a026 into main Jun 30, 2026
3 checks passed
@mattleibow mattleibow deleted the automation/write-api-docs branch June 30, 2026 17:38
mattleibow added a commit that referenced this pull request Jun 30, 2026
Go Live: publish latest API docs (#171)

Publish the accumulated SkiaSharp / HarfBuzzSharp API documentation from main
to the live (published) branch. This is the first Go Live since #66 and rolls up
a large batch of docs automation, a full regeneration, and content/cross-reference
cleanup.

Highlights in this batch:

- Docs automation: automated API docs writer (#92, hardened in #155), daily
  update workflow, go-live workflow (#65), and a Learn Build status-based
  auto-merge gate (#82, #83) backed by check-learn-build.py and a
  .github/known-warnings.csv baseline.
- Regeneration: frameworks docs switched to latest-only monikers (#141), baseline
  reset to the Windows-generated output (#142), and stub regeneration moved to
  Linux via Mono (#147). This drops older, no-longer-shipping member/type pages
  (e.g. pre-v1.68 view APIs, the removed Android ISKRenderer interface, and the
  SKPaint text properties that moved to SKFont).
- Content: filled API documentation placeholders (#150, #151, #172) and fixed
  broken cross-references (#152).
- Cross-reference cleanup (#173): removed/repointed 36 obsolete xref-not-found
  references left behind by the latest-only-moniker regeneration — dangling links
  in 2019-era remarks to members that were since removed or relocated. Without
  this the Go Live build reported 160 warnings and the auto-merge gate (correctly)
  blocked the publish.

Build health at publish: 0 errors, 124 warnings, 0 suggestions. All 124 remaining
warnings are expected xref-not-found references to external framework types
(OpenTK, Gdk/Cairo/Graphene, ElmSharp/Tizen.NUI, Windows.UI.Xaml, Microsoft.UI.Xaml,
SharpVk, Vortice) that Learn cannot resolve and which are tracked in the
known-warnings.csv baseline — 0 new warnings versus baseline, so the gate passes.

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant