audit

package
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 25, 2026 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Overview

Package audit provides checkers that analyse crawled pages and report issues.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccessibilityChecker

type AccessibilityChecker struct{}

AccessibilityChecker analyses pages for common accessibility issues.

func NewAccessibilityChecker

func NewAccessibilityChecker() *AccessibilityChecker

NewAccessibilityChecker returns a new AccessibilityChecker.

func (*AccessibilityChecker) Check

func (c *AccessibilityChecker) Check(_ context.Context, page *model.Page) []model.Issue

Check runs per-page accessibility checks.

func (*AccessibilityChecker) Name

func (c *AccessibilityChecker) Name() string

Name returns the checker name.

type Checker

type Checker interface {
	Name() string
	Check(ctx context.Context, page *model.Page) []model.Issue
}

Checker runs checks against a single crawled page.

type DeepStructuredDataChecker

type DeepStructuredDataChecker struct{}

DeepStructuredDataChecker performs in-depth validation of JSON-LD structured data blocks, checking for @type presence, recognised types, and required fields per type.

func NewDeepStructuredDataChecker

func NewDeepStructuredDataChecker() *DeepStructuredDataChecker

NewDeepStructuredDataChecker returns a new DeepStructuredDataChecker.

func (*DeepStructuredDataChecker) Check

Check runs per-page deep structured data checks.

func (*DeepStructuredDataChecker) Name

Name returns the checker name.

type ExternalLinkChecker

type ExternalLinkChecker struct {
	// contains filtered or unexported fields
}

ExternalLinkChecker validates external links found across all crawled pages. It implements SiteChecker because all work happens in CheckSite where external URLs are deduplicated and checked concurrently.

func NewExternalLinkChecker

func NewExternalLinkChecker() *ExternalLinkChecker

NewExternalLinkChecker returns a new ExternalLinkChecker.

func (*ExternalLinkChecker) Check

Check returns nil. All work is done in CheckSite.

func (*ExternalLinkChecker) CheckSite

func (c *ExternalLinkChecker) CheckSite(ctx context.Context, pages []*model.Page) []model.Issue

CheckSite collects all external links from every page, deduplicates them, and checks each one concurrently with per-domain rate limiting.

func (*ExternalLinkChecker) Name

func (c *ExternalLinkChecker) Name() string

Name returns the checker name.

func (*ExternalLinkChecker) SetHTTPClient

func (c *ExternalLinkChecker) SetHTTPClient(client *http.Client)

SetHTTPClient sets the HTTP client used for external link checks.

type HealthChecker

type HealthChecker struct{}

HealthChecker analyses pages for HTTP health issues.

func NewHealthChecker

func NewHealthChecker() *HealthChecker

NewHealthChecker returns a new HealthChecker.

func (*HealthChecker) Check

func (c *HealthChecker) Check(_ context.Context, page *model.Page) []model.Issue

Check runs per-page health checks.

func (*HealthChecker) Name

func (c *HealthChecker) Name() string

Name returns the checker name.

type HreflangChecker

type HreflangChecker struct{}

HreflangChecker validates hreflang annotations per-page and across the site.

func NewHreflangChecker

func NewHreflangChecker() *HreflangChecker

NewHreflangChecker returns a new HreflangChecker.

func (*HreflangChecker) Check

func (c *HreflangChecker) Check(_ context.Context, page *model.Page) []model.Issue

Check runs per-page hreflang checks.

func (*HreflangChecker) CheckSite

func (c *HreflangChecker) CheckSite(_ context.Context, pages []*model.Page) []model.Issue

CheckSite runs site-wide hreflang cross-reference checks.

func (*HreflangChecker) Name

func (c *HreflangChecker) Name() string

Name returns the checker name.

type ImageChecker

type ImageChecker struct {
	// contains filtered or unexported fields
}

ImageChecker analyses pages for image-related issues.

func NewImageChecker

func NewImageChecker() *ImageChecker

NewImageChecker returns a new ImageChecker with a timeout-limited HTTP client.

func (*ImageChecker) Check

func (c *ImageChecker) Check(ctx context.Context, page *model.Page) []model.Issue

Check runs per-page image checks.

func (*ImageChecker) Name

func (c *ImageChecker) Name() string

Name returns the checker name.

func (*ImageChecker) SetHTTPClient

func (c *ImageChecker) SetHTTPClient(client *http.Client)

SetHTTPClient sets the HTTP client used for HEAD requests.

type LinkChecker

type LinkChecker struct{}

LinkChecker analyses site-wide link structure for issues.

func NewLinkChecker

func NewLinkChecker() *LinkChecker

NewLinkChecker returns a new LinkChecker.

func (*LinkChecker) Check

func (c *LinkChecker) Check(_ context.Context, page *model.Page) []model.Issue

Check runs per-page link analysis.

func (*LinkChecker) CheckSite

func (c *LinkChecker) CheckSite(_ context.Context, pages []*model.Page) []model.Issue

CheckSite runs site-wide link analysis.

func (*LinkChecker) Name

func (c *LinkChecker) Name() string

Name returns the checker name.

type PerformanceChecker

type PerformanceChecker struct{}

PerformanceChecker analyses pages for performance issues.

func NewPerformanceChecker

func NewPerformanceChecker() *PerformanceChecker

NewPerformanceChecker returns a new PerformanceChecker.

func (*PerformanceChecker) Check

func (c *PerformanceChecker) Check(_ context.Context, page *model.Page) []model.Issue

Check runs per-page performance checks.

func (*PerformanceChecker) Name

func (c *PerformanceChecker) Name() string

Name returns the checker name.

type Registry

type Registry struct {
	// contains filtered or unexported fields
}

Registry holds all registered checkers and runs them.

func DefaultRegistry

func DefaultRegistry(l logger.Logger) *Registry

DefaultRegistry creates a Registry with all built-in checkers registered.

func NewRegistry

func NewRegistry(l logger.Logger) *Registry

NewRegistry returns an empty Registry.

func (*Registry) Register

func (r *Registry) Register(c Checker)

Register adds a checker to the registry.

func (*Registry) RunAll

func (r *Registry) RunAll(ctx context.Context, pages []*model.Page) []model.Issue

RunAll runs every registered checker against all pages and returns sorted issues.

Per-page checks are executed concurrently using a worker pool sized to runtime.NumCPU(). After all page checks complete, any SiteChecker's CheckSite method is called. Results are sorted by severity (critical first), then URL, then CheckName.

type SEOChecker

type SEOChecker struct{}

SEOChecker analyses pages for common SEO issues.

func NewSEOChecker

func NewSEOChecker() *SEOChecker

NewSEOChecker returns a new SEOChecker.

func (*SEOChecker) Check

func (c *SEOChecker) Check(_ context.Context, page *model.Page) []model.Issue

Check runs per-page SEO checks.

func (*SEOChecker) CheckSite

func (c *SEOChecker) CheckSite(_ context.Context, pages []*model.Page) []model.Issue

CheckSite runs site-wide SEO checks.

func (*SEOChecker) Name

func (c *SEOChecker) Name() string

Name returns the checker name.

type SecurityChecker

type SecurityChecker struct{}

SecurityChecker analyses pages for missing or weak HTTP security headers.

func NewSecurityChecker

func NewSecurityChecker() *SecurityChecker

NewSecurityChecker returns a new SecurityChecker.

func (*SecurityChecker) Check

func (c *SecurityChecker) Check(_ context.Context, page *model.Page) []model.Issue

Check runs per-page security header checks.

Only pages with status code 200 are examined; error pages are skipped because their headers are often different from the intended configuration.

func (*SecurityChecker) CheckSite

func (c *SecurityChecker) CheckSite(_ context.Context, pages []*model.Page) []model.Issue

CheckSite runs site-wide security checks across all crawled pages.

func (*SecurityChecker) Name

func (c *SecurityChecker) Name() string

Name returns the checker name.

type SiteChecker

type SiteChecker interface {
	Checker
	CheckSite(ctx context.Context, pages []*model.Page) []model.Issue
}

SiteChecker extends Checker with site-wide analysis.

type StructuredDataChecker

type StructuredDataChecker struct{}

StructuredDataChecker analyses pages for structured data (JSON-LD) issues.

func NewStructuredDataChecker

func NewStructuredDataChecker() *StructuredDataChecker

NewStructuredDataChecker returns a new StructuredDataChecker.

func (*StructuredDataChecker) Check

func (c *StructuredDataChecker) Check(_ context.Context, page *model.Page) []model.Issue

Check runs per-page structured data checks.

func (*StructuredDataChecker) Name

func (c *StructuredDataChecker) Name() string

Name returns the checker name.

type TLSChecker

type TLSChecker struct {
	// contains filtered or unexported fields
}

TLSChecker inspects TLS certificates of crawled HTTPS pages.

func NewTLSChecker

func NewTLSChecker() *TLSChecker

NewTLSChecker returns a new TLSChecker.

func (*TLSChecker) Check

func (c *TLSChecker) Check(ctx context.Context, page *model.Page) []model.Issue

Check inspects the TLS certificate of the page's host. Results are cached per hostname so repeated pages on the same host don't trigger redundant TLS handshakes.

func (*TLSChecker) Name

func (c *TLSChecker) Name() string

Name returns the checker name.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL