report

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Mar 1, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package report provides diagnostic reporting capabilities for braider analyzer.

Index

Constants

View Source
const (
	// CategoryConstructorGeneration is for constructor generation and update diagnostics.
	CategoryConstructorGeneration = "braider:constructor-generation"
	// CategoryDependencyResolution is for dependency graph construction and cycle detection diagnostics.
	CategoryDependencyResolution = "braider:dependency-resolution"
	// CategoryDependencyRegistration is for duplicate dependency registration diagnostics.
	// Maps to SeverityCritical in phasedchecker, aborting the pipeline.
	CategoryDependencyRegistration = "braider:dependency-registration"
	// CategoryAppValidation is for annotation.App validation diagnostics.
	CategoryAppValidation = "braider:app-validation"
	// CategoryBootstrapGeneration is for bootstrap code generation diagnostics.
	CategoryBootstrapGeneration = "braider:bootstrap-generation"
	// CategoryOptionValidation is for annotation option constraint violation diagnostics.
	// Maps to SeverityCritical in phasedchecker, aborting the pipeline.
	CategoryOptionValidation = "braider:option-validation"
	// CategoryExpressionValidation is for unsupported expression diagnostics.
	// Maps to SeverityCritical in phasedchecker, aborting the pipeline.
	CategoryExpressionValidation = "braider:expression-validation"
	// CategoryStructTagValidation is for braider struct tag validation diagnostics.
	CategoryStructTagValidation = "braider:struct-tag-validation"
	// CategoryContainerValidation is for container type parameter and field diagnostics.
	CategoryContainerValidation = "braider:container-validation"
)

Diagnostic category constants used in analysis.Diagnostic.Category.

Variables

This section is empty.

Functions

func NewDiagnosticEmitter

func NewDiagnosticEmitter() *diagnosticEmitter

NewDiagnosticEmitter is a constructor for diagnosticEmitter.

Generated by braider. DO NOT EDIT.

func NewSuggestedFixBuilder

func NewSuggestedFixBuilder() *suggestedFixBuilder

NewSuggestedFixBuilder is a constructor for suggestedFixBuilder.

Generated by braider. DO NOT EDIT.

Types

type DiagnosticEmitter

type DiagnosticEmitter interface {
	// EmitConstructorFix reports a diagnostic with constructor SuggestedFix.
	EmitConstructorFix(
		reporter Reporter,
		pos token.Pos,
		structName string,
		fix analysis.SuggestedFix,
	)

	// EmitExistingConstructorFix reports a diagnostic for replacing an existing constructor.
	EmitExistingConstructorFix(
		reporter Reporter,
		pos token.Pos,
		structName string,
		fix analysis.SuggestedFix,
	)

	// EmitCircularDependency reports a circular dependency error.
	EmitCircularDependency(reporter Reporter, pos token.Pos, cycle []string)

	// EmitGenerationError reports a constructor generation failure.
	EmitGenerationError(reporter Reporter, pos token.Pos, structName string, reason string)

	// EmitNonMainAppError reports App referencing non-main function.
	EmitNonMainAppError(reporter Reporter, pos token.Pos, funcName string)

	// EmitBootstrapFix reports a diagnostic for missing bootstrap code.
	EmitBootstrapFix(reporter Reporter, pos token.Pos, fix analysis.SuggestedFix)

	// EmitBootstrapUpdateFix reports a diagnostic for outdated bootstrap code.
	EmitBootstrapUpdateFix(reporter Reporter, pos token.Pos, fix analysis.SuggestedFix)

	// EmitDuplicateAppWarning reports duplicate annotation.App.
	EmitDuplicateAppWarning(reporter Reporter, pos token.Pos)

	// EmitGraphBuildError reports a dependency graph construction error.
	EmitGraphBuildError(reporter Reporter, pos token.Pos, reason string)

	// EmitDuplicateNamedDependencyWarning reports duplicate (TypeName, Name) pairs (non-fatal).
	EmitDuplicateNamedDependencyWarning(
		reporter Reporter, pos token.Pos, typeName string, name string, location1 string, location2 string,
	)

	// EmitOptionValidationError reports a fatal option validation error (constraint violation, interface mismatch, non-literal Namer).
	EmitOptionValidationError(reporter Reporter, pos token.Pos, reason string)

	// EmitUnsupportedVariableExpression reports an unsupported Variable argument expression error.
	EmitUnsupportedVariableExpression(reporter Reporter, pos token.Pos, reason string)

	// EmitInvalidStructTagError reports an invalid braider struct tag value (braider:"").
	EmitInvalidStructTagError(reporter Reporter, pos token.Pos, fieldName string)

	// EmitStructTagConflictError reports a braider struct tag conflict with WithoutConstructor.
	EmitStructTagConflictError(reporter Reporter, pos token.Pos, fieldName string, reason string)

	// EmitContainerTypeError reports a non-struct container type parameter.
	EmitContainerTypeError(reporter Reporter, pos token.Pos, typeName string)

	// EmitContainerFieldError reports an unresolvable container field.
	EmitContainerFieldError(reporter Reporter, pos token.Pos, fieldName string, fieldType string, reason string)
}

DiagnosticEmitter emits diagnostics to the analysis pass.

type Reporter

type Reporter interface {
	Report(analysis.Diagnostic)
}

Reporter is an interface for reporting diagnostics. This matches the analysis.Pass.Report method signature.

type SuggestedFixBuilder

type SuggestedFixBuilder interface {
	// BuildConstructorFix creates a SuggestedFix for constructor insertion or replacement.
	// If candidate.ExistingConstructor is non-nil, builds a replacement TextEdit.
	// Otherwise, builds an insertion TextEdit after the struct definition.
	BuildConstructorFix(
		pass *analysis.Pass,
		candidate detect.ConstructorCandidate,
		constructor *generate.GeneratedConstructor,
	) analysis.SuggestedFix

	// BuildBootstrapFix creates a SuggestedFix for inserting bootstrap code.
	// Inserts dependency variable and optionally adds reference in main.
	BuildBootstrapFix(
		pass *analysis.Pass,
		app *detect.AppAnnotation,
		bootstrap *generate.GeneratedBootstrap,
		mainFunc *ast.FuncDecl,
	) (analysis.SuggestedFix, error)

	// BuildBootstrapReplacementFix creates a SuggestedFix for replacing existing bootstrap code.
	// Replaces existing dependency variable and updates main reference if needed.
	BuildBootstrapReplacementFix(
		pass *analysis.Pass,
		existing *ast.GenDecl,
		bootstrap *generate.GeneratedBootstrap,
		mainFunc *ast.FuncDecl,
	) (analysis.SuggestedFix, error)
}

SuggestedFixBuilder constructs SuggestedFix for diagnostics.

Jump to

Keyboard shortcuts

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