validator

package
v1.5.0 Latest Latest
Warning

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

Go to latest
Published: Feb 2, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var IssueCodeDescriptions = map[IssueCode]string{
	CodeOrphanedRelationship:       "Orphaned relationship - target feature doesn't exist",
	CodeMissingInverse:             "Missing inverse relationship - bidirectional relationship incomplete",
	CodeDanglingInverse:            "Dangling inverse - inverse exists but forward relationship missing",
	CodeSchemaViolation:            "Schema violation - invalid relationship structure",
	CodeCycleViolation:             "Cycle violation - cycles in categories where not allowed",
	CodeVersionConstraintViolation: "Version constraint violation - target version doesn't satisfy constraint",
}

IssueCodeDescriptions provides human-readable descriptions for each code

Functions

func GetFeatureFileName

func GetFeatureFileName(name string) string

GetFeatureFileName returns the YAML filename for a feature Uses storage.Slugify to ensure consistency

Types

type AutoFixer

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

AutoFixer attempts to automatically repair validation issues

func NewAutoFixer

func NewAutoFixer(repo fogit.Repository, config *fogit.Config, dryRun bool) *AutoFixer

NewAutoFixer creates a new AutoFixer

func (*AutoFixer) AttemptFixes

func (af *AutoFixer) AttemptFixes(ctx context.Context, issues []ValidationIssue) (*FixResult, error)

AttemptFixes tries to fix all fixable issues

func (*AutoFixer) IsDryRun

func (af *AutoFixer) IsDryRun() bool

IsDryRun returns true if the fixer is in dry-run mode

type FixResult

type FixResult struct {
	Fixed   []string // Descriptions of what was fixed
	Failed  []string // Descriptions of failed fixes
	Skipped []string // Descriptions of skipped (not fixable)
}

FixResult represents the outcome of an auto-fix attempt

func (*FixResult) HasFailures

func (r *FixResult) HasFailures() bool

HasFailures returns true if any fixes failed

func (*FixResult) HasFixes

func (r *FixResult) HasFixes() bool

HasFixes returns true if any fixes were applied

func (*FixResult) TotalFailed

func (r *FixResult) TotalFailed() int

TotalFailed returns the count of failed fix attempts

func (*FixResult) TotalFixed

func (r *FixResult) TotalFixed() int

TotalFixed returns the count of successfully fixed issues

type IssueCode

type IssueCode string

IssueCode represents validation error codes

const (
	CodeOrphanedRelationship       IssueCode = "E001"
	CodeMissingInverse             IssueCode = "E002"
	CodeDanglingInverse            IssueCode = "E003"
	CodeSchemaViolation            IssueCode = "E004"
	CodeCycleViolation             IssueCode = "E005"
	CodeVersionConstraintViolation IssueCode = "E006"
)

type Severity

type Severity string

Severity represents issue severity

const (
	SeverityError   Severity = "error"
	SeverityWarning Severity = "warning"
)

type ValidationIssue

type ValidationIssue struct {
	Code        IssueCode         // E001, E002, etc.
	Severity    Severity          // error, warning
	FeatureID   string            // Feature ID where issue was found
	FeatureName string            // Feature name for display
	FileName    string            // Feature file name
	Message     string            // Human-readable description
	Fixable     bool              // Can be auto-fixed
	Context     map[string]string // Additional context (targetID, relType, etc.)
}

ValidationIssue represents a validation problem found

type ValidationResult

type ValidationResult struct {
	Issues        []ValidationIssue
	FeaturesCount int
	RelCount      int
	Errors        int // Count of error-severity issues
	Warnings      int // Count of warning-severity issues
}

ValidationResult contains all validation results

func (*ValidationResult) FilterBySeverity

func (r *ValidationResult) FilterBySeverity(severity Severity) []ValidationIssue

FilterBySeverity returns issues matching the given severity

func (*ValidationResult) HasErrors

func (r *ValidationResult) HasErrors() bool

HasErrors returns true if any error-severity issues exist

func (*ValidationResult) HasFixableIssues

func (r *ValidationResult) HasFixableIssues() bool

HasFixableIssues returns true if any issues can be auto-fixed

func (*ValidationResult) HasWarnings

func (r *ValidationResult) HasWarnings() bool

HasWarnings returns true if any warning-severity issues exist

type Validator

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

Validator performs feature and relationship validation

func New

func New(repo fogit.Repository, config *fogit.Config) *Validator

New creates a new Validator

func (*Validator) DetectAllCycles

func (v *Validator) DetectAllCycles(category string) [][]string

DetectAllCycles finds all cycles in the relationship graph for a given category Returns a list of cycle paths (each path is a slice of feature IDs)

func (*Validator) GetFeatureMap

func (v *Validator) GetFeatureMap() map[string]*fogit.Feature

GetFeatureMap returns the feature ID map (available after Validate is called)

func (*Validator) GetFeatures

func (v *Validator) GetFeatures() []*fogit.Feature

GetFeatures returns the loaded features (available after Validate is called)

func (*Validator) ValidateFeatures added in v1.4.1

func (v *Validator) ValidateFeatures(ctx context.Context, features []*fogit.Feature) (*ValidationResult, error)

ValidateFeatures performs all validation checks on the provided feature list. The caller is responsible for loading features (single branch or cross-branch).

Jump to

Keyboard shortcuts

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