yze

package module
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: Jul 1, 2026 License: MIT Imports: 33 Imported by: 0

README

yze

The aggregator for the gomatic yze analyzer family. It fans in every yze-<name> analyzer and runs two kinds together: the yze-go-* analyzers over Go packages through the go-yze driver, and the yze-sql-* analyzers over the .sql files beneath the same pattern roots. Both emit one normalized report, so a single yze run lints Go and SQL. Each analyzer reports under the flat rule id yze/<name> and carries a language --category (go, sql).

yze [--format stickler-json|text] [--fix] [--category <c>...] [--config <path>] [packages...]
  • --format stickler-json (default) — the native Report JSON the stickler runner consumes with no adapter. text prints one human line per finding.
  • --fix — applies analyzers' suggested fixes in place via the shared go-yze engine.
  • --category — restricts the analyzer set to those carrying any of the named categories (the many-to-many tag axis). Omit it to run the whole suite.
  • --config — path to a yze config file supplying per-analyzer settings.

Findings do not by themselves fail the run — that gate belongs to stickler. The current suite (14 analyzers): yze/anonstruct, yze/boolname, yze/ctxfirst, yze/emptyiface, yze/errconst, yze/errlast, yze/gotostmt, yze/layout, yze/namedtypes, yze/pkgstd, yze/ptrparam, yze/ptrrecv, yze/stdlog, yze/testfile.

Documentation

Overview

Package yze is the analyzer catalog for the yze family: it aggregates every yze-<name> analyzer's registration and filters the set by category. The cmd/yze binary drives this catalog through the go-yze runner.

Index

Constants

View Source
const (
	// ErrSQLWalk reports that walking a root for .sql files failed.
	ErrSQLWalk errs.Const = "cannot walk for SQL files"
	// ErrSQLRead reports that a .sql file could not be read.
	ErrSQLRead errs.Const = "cannot read SQL file"
)

SQL run errors.

View Source
const ErrConfig errs.Const = "cannot load yze config"

ErrConfig reports a yze configuration file that cannot be read or parsed.

View Source
const ErrUnknownFormat errs.Const = "unknown output format"

ErrUnknownFormat reports an output format the aggregator does not support.

View Source
const ErrUnknownRuleFormat errs.Const = "unknown rule-export format"

ErrUnknownRuleFormat reports a rule-export format the aggregator does not support.

Variables

This section is empty.

Functions

func Emit

func Emit(w io.Writer, format Format, report goyze.Report) error

Emit writes the report to w in the named format.

func EmitRules added in v0.8.0

func EmitRules(w io.Writer, format RuleFormat, regs []goyze.Registration) error

EmitRules writes the suite's rule catalog to w in the named format.

func Filter

func Filter(regs []goyze.Registration, categories []goyze.Category) []goyze.Registration

Filter selects the registrations matching the given categories. An empty category set matches every analyzer; otherwise a registration matches when it carries any of the categories.

func LoadConfig added in v0.2.0

func LoadConfig(read func(path string) ([]byte, error), path string) (goyze.Settings, error)

LoadConfig reads and parses a yze config file into per-analyzer settings keyed by analyzer name then setting name, ready for go-yze's ApplyConfig. The reader is injected so callers control filesystem access.

func Registrations

func Registrations() []goyze.Registration

Registrations returns every analyzer in the suite, in stable rule-id order.

func RootsOf added in v0.10.0

func RootsOf(patterns []goyze.Pattern) []string

RootsOf turns package patterns into the directories to walk for .sql files: the recursive "/..." suffix is dropped, and a bare or empty pattern becomes ".".

func RunSQL added in v0.10.0

func RunSQL(read goyze.FileReader, walk WalkDir, analyzers []SQLAnalyzer, roots []string) (goyze.Report, error)

RunSQL finds every .sql file under the roots and runs the analyzers over each, returning the merged diagnostics. A walk or read failure aborts the run.

Types

type Format

type Format string

Format names a way the aggregator serializes a report.

const (
	FormatSticklerJSON Format = "stickler-json"
	FormatText         Format = "text"
)

The output formats cmd/yze supports. Richer formats (sarif, github) live in the stickler runner, which consumes the stickler-json emitted here.

type RuleFormat added in v0.8.0

type RuleFormat string

RuleFormat names a way the suite's rule catalog is exported. The catalog is built from registration metadata (id, name, doc, url, categories) — never from analyzer logic — so it carries no per-analyzer machinery.

const (
	// RuleFormatSARIF exports a SARIF 2.1.0 tool.driver.rules catalog for code
	// scanning / editor rule registration.
	RuleFormatSARIF RuleFormat = "sarif"
	// RuleFormatGrit exports a GritQL-style markdown registry. The analyzers are
	// AST-based, not pattern rewrites, so this is a documentation catalog (rule id,
	// description, docs link, categories) — not executable rewrite patterns.
	RuleFormatGrit RuleFormat = "grit"
)

The rule-export formats `yze --emit-rules` supports.

type SQLAnalyzer added in v0.10.0

type SQLAnalyzer struct {
	Analyze    func(path, source string) ([]goyze.Diagnostic, error)
	Name       goyze.AnalyzerName
	Categories []goyze.Category
}

SQLAnalyzer is a source analyzer the suite runs over .sql files, as opposed to the go/analysis analyzers it runs over Go packages. Its diagnostics already use the shared go-yze contract, so they merge into the same report.

func FilterSQL added in v0.10.0

func FilterSQL(analyzers []SQLAnalyzer, categories []goyze.Category) []SQLAnalyzer

FilterSQL selects the SQL analyzers matching the given categories, mirroring Filter. An empty category set matches every analyzer.

func SQLAnalyzers added in v0.10.0

func SQLAnalyzers() []SQLAnalyzer

SQLAnalyzers returns every SQL source analyzer bundled into the suite, in stable rule-id order.

type WalkDir added in v0.10.0

type WalkDir func(root string, fn fs.WalkDirFunc) error

WalkDir is fs.WalkDir's signature. It's injected so a test can drive the file walk without a real directory tree.

Directories

Path Synopsis
cmd
yze command
Command yze runs the gomatic yze analyzer suite over the given package patterns and emits a normalized report (the stickler-json contract by default).
Command yze runs the gomatic yze analyzer suite over the given package patterns and emits a normalized report (the stickler-json contract by default).

Jump to

Keyboard shortcuts

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