lint

package
v0.11.274 Latest Latest
Warning

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

Go to latest
Published: Jul 31, 2025 License: Apache-2.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	RuleTargetAsset    = RuleTarget("asset")
	RuleTargetPipeline = RuleTarget("pipeline")
)

Functions

func CallFuncForEveryAsset added in v0.6.6

func CallFuncForEveryAsset(callable AssetValidator) func(ctx context.Context, pipeline *pipeline.Pipeline) ([]*Issue, error)

func ContainsTag added in v0.11.239

func ContainsTag(tags []string, target string) bool

func EnsureNoNestedPipelines added in v0.4.1

func EnsureNoNestedPipelines(pipelinePaths []string) error

func QueryColumnsMatchColumnsPolicy added in v0.11.244

func QueryColumnsMatchColumnsPolicy(parser *sqlparser.SQLParser) func(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

Types

type AssetValidator added in v0.5.6

type AssetValidator func(ctx context.Context, pipeline *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func EnsureExecutableFileIsValidForASingleAsset added in v0.5.6

func EnsureExecutableFileIsValidForASingleAsset(fs afero.Fs) AssetValidator

func ValidateCustomCheckQueryDryRun added in v0.11.222

func ValidateCustomCheckQueryDryRun(connections connectionManager, renderer jinja.RendererInterface) AssetValidator

ValidateCustomCheckQueryDryRun validates CustomCheck.Query using a dry-run against the DB.

type GlossaryChecker added in v0.11.9

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

func (*GlossaryChecker) EnsureAssetEntitiesExistInGlossary added in v0.11.9

func (g *GlossaryChecker) EnsureAssetEntitiesExistInGlossary(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

type Issue

type Issue struct {
	Task        *pipeline.Asset
	Description string
	Context     []string
}

func EnsureAssetTierIsValidForASingleAsset added in v0.11.250

func EnsureAssetTierIsValidForASingleAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func EnsureBigQueryQuerySensorHasTableParameterForASingleAsset added in v0.9.6

func EnsureBigQueryQuerySensorHasTableParameterForASingleAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func EnsureBigQueryTableSensorHasTableParameterForASingleAsset added in v0.7.4

func EnsureBigQueryTableSensorHasTableParameterForASingleAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func EnsureDependencyExistsForASingleAsset added in v0.5.6

func EnsureDependencyExistsForASingleAsset(ctx context.Context, p *pipeline.Pipeline, task *pipeline.Asset) ([]*Issue, error)

func EnsureIngestrAssetIsValidForASingleAsset added in v0.6.6

func EnsureIngestrAssetIsValidForASingleAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func EnsureMSTeamsFieldInPipelineIsValid added in v0.11.20

func EnsureMSTeamsFieldInPipelineIsValid(ctx context.Context, p *pipeline.Pipeline) ([]*Issue, error)

func EnsureMaterializationValuesAreValidForSingleAsset added in v0.5.6

func EnsureMaterializationValuesAreValidForSingleAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func EnsurePipelineConcurrencyIsValid added in v0.11.243

func EnsurePipelineConcurrencyIsValid(ctx context.Context, p *pipeline.Pipeline) ([]*Issue, error)

func EnsurePipelineHasNoCycles

func EnsurePipelineHasNoCycles(ctx context.Context, p *pipeline.Pipeline) ([]*Issue, error)

EnsurePipelineHasNoCycles ensures that the pipeline is a DAG, and contains no cycles. Since the pipelines are directed graphs, strongly connected components mean cycles, therefore they would be considered invalid for our pipelines. Strong connectivity wouldn't work for tasks that depend on themselves, therefore there's a specific check for that.

func EnsurePipelineNameIsValid

func EnsurePipelineNameIsValid(ctx context.Context, pipeline *pipeline.Pipeline) ([]*Issue, error)

func EnsurePipelineScheduleIsValidCron

func EnsurePipelineScheduleIsValidCron(ctx context.Context, p *pipeline.Pipeline) ([]*Issue, error)

func EnsurePipelineStartDateIsValid added in v0.11.8

func EnsurePipelineStartDateIsValid(ctx context.Context, p *pipeline.Pipeline) ([]*Issue, error)

func EnsureSecretMappingsHaveKeyForASingleAsset added in v0.11.271

func EnsureSecretMappingsHaveKeyForASingleAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func EnsureSlackFieldInPipelineIsValid

func EnsureSlackFieldInPipelineIsValid(ctx context.Context, p *pipeline.Pipeline) ([]*Issue, error)

func EnsureSnowflakeSensorHasQueryParameterForASingleAsset added in v0.5.6

func EnsureSnowflakeSensorHasQueryParameterForASingleAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func EnsureTaskNameIsUnique

func EnsureTaskNameIsUnique(ctx context.Context, p *pipeline.Pipeline) ([]*Issue, error)

func EnsureTaskNameIsUniqueForASingleAsset added in v0.5.6

func EnsureTaskNameIsUniqueForASingleAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func EnsureTaskNameIsValidForASingleAsset added in v0.5.6

func EnsureTaskNameIsValidForASingleAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func EnsureTypeIsCorrectForASingleAsset added in v0.5.6

func EnsureTypeIsCorrectForASingleAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func ValidateAssetDirectoryExist added in v0.11.55

func ValidateAssetDirectoryExist(ctx context.Context, p *pipeline.Pipeline) ([]*Issue, error)

func ValidateAssetSeedValidation added in v0.11.128

func ValidateAssetSeedValidation(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func ValidateCustomCheckQueryExists added in v0.11.122

func ValidateCustomCheckQueryExists(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

ValidateCustomCheckQueryExists checks for duplicate column checks within a single column. It returns a slice of Issues, each representing a duplicate column check found.

func ValidateDuplicateColumnNames added in v0.11.35

func ValidateDuplicateColumnNames(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

ValidateDuplicateColumnNames checks for duplicate column names within a single asset. It returns a slice of Issues, each representing a duplicate column name found.

The function performs a case-insensitive comparison of column names.

Parameters:

  • ctx: The context for the validation operation
  • p: A pointer to the pipeline.Pipeline struct
  • asset: The pipeline.Asset to be validated for duplicate column names.

Returns:

  • A slice of *Issue, each describing a duplicate column name found.
  • An error, which is always nil in this implementation.

func ValidateEMRServerlessAsset added in v0.11.171

func ValidateEMRServerlessAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func ValidatePythonAssetMaterialization added in v0.11.143

func ValidatePythonAssetMaterialization(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

func ValidateTrinoAssetMaterialization added in v0.11.274

func ValidateTrinoAssetMaterialization(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

TODO: Remove this once materialization is fully implemented for Trino.

func ValidateVariables added in v0.11.209

func ValidateVariables(ctx context.Context, p *pipeline.Pipeline) ([]*Issue, error)

type Level added in v0.5.6

type Level int
const (
	LevelPipeline Level = iota
	LevelAsset
)

type Linter

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

func NewLinter

func NewLinter(findPipelines pipelineFinder, builder pipelineBuilder, rules []Rule, logger logger.Logger, sqlParser sqlParser) *Linter

func (*Linter) Lint

func (l *Linter) Lint(ctx context.Context, rootPath string, pipelineDefinitionFileName []string, c *cli.Context) (*PipelineAnalysisResult, error)

func (*Linter) LintAsset added in v0.5.6

func (l *Linter) LintAsset(ctx context.Context, rootPath string, pipelineDefinitionFileName []string, assetNameOrPath string, c *cli.Context) (*PipelineAnalysisResult, error)

func (*Linter) LintPipeline added in v0.4.1

func (l *Linter) LintPipeline(ctx context.Context, p *pipeline.Pipeline) (*PipelineIssues, error)

func (*Linter) LintPipelines

func (l *Linter) LintPipelines(ctx context.Context, pipelines []*pipeline.Pipeline) (*PipelineAnalysisResult, error)

type PipelineAnalysisResult

type PipelineAnalysisResult struct {
	Pipelines                []*PipelineIssues `json:"pipelines"`
	AssetWithExcludeTagCount int
}

func (*PipelineAnalysisResult) ErrorCount

func (p *PipelineAnalysisResult) ErrorCount() int

ErrorCount returns the number of errors found in an analysis result.

func (*PipelineAnalysisResult) MarshalJSON added in v0.6.8

func (p *PipelineAnalysisResult) MarshalJSON() ([]byte, error)

func (*PipelineAnalysisResult) WarningCount added in v0.11.14

func (p *PipelineAnalysisResult) WarningCount() int

WarningCount returns the number of warnings, a.k.a non-critical issues found in an analysis result.

type PipelineIssues

type PipelineIssues struct {
	Pipeline *pipeline.Pipeline
	Issues   map[Rule][]*Issue
}

func RunLintRulesOnPipeline added in v0.4.1

func RunLintRulesOnPipeline(ctx context.Context, p *pipeline.Pipeline, rules []Rule, sqlParser sqlParser) (*PipelineIssues, error)

func (*PipelineIssues) MarshalJSON added in v0.6.8

func (p *PipelineIssues) MarshalJSON() ([]byte, error)

type PipelineValidator

type PipelineValidator func(ctx context.Context, pipeline *pipeline.Pipeline) ([]*Issue, error)

type PolicySpecification added in v0.11.195

type PolicySpecification struct {
	Definitions []*RuleDefinition `yaml:"custom_rules"`
	RuleSets    []RuleSet         `yaml:"rulesets"`
	// contains filtered or unexported fields
}

func (*PolicySpecification) Rules added in v0.11.195

func (spec *PolicySpecification) Rules(sqlParser sqlParser) ([]Rule, error)

we need to pass in the sqlparser to the policy because of the query-matches-columns rule.

type Printer

type Printer struct {
	RootCheckPath string
}

func (*Printer) PrintIssues

func (l *Printer) PrintIssues(analysis *PipelineAnalysisResult)

func (*Printer) PrintJSON added in v0.6.8

func (l *Printer) PrintJSON(analysis *PipelineAnalysisResult) error

type QueryValidatorRule

type QueryValidatorRule struct {
	Identifier   string
	Fast         bool
	TaskType     pipeline.AssetType
	Connections  connectionManager
	Extractor    queryExtractor
	Materializer materializer
	WorkerCount  int
	Logger       logger.Logger
}

func (*QueryValidatorRule) GetApplicableLevels added in v0.5.6

func (q *QueryValidatorRule) GetApplicableLevels() []Level

func (*QueryValidatorRule) GetSeverity added in v0.11.14

func (q *QueryValidatorRule) GetSeverity() ValidatorSeverity

func (*QueryValidatorRule) IsFast added in v0.11.53

func (q *QueryValidatorRule) IsFast() bool

func (*QueryValidatorRule) Name

func (q *QueryValidatorRule) Name() string

func (*QueryValidatorRule) Validate

func (q *QueryValidatorRule) Validate(ctx context.Context, p *pipeline.Pipeline) ([]*Issue, error)

func (*QueryValidatorRule) ValidateAsset added in v0.5.6

func (q *QueryValidatorRule) ValidateAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

type Rule

type Rule interface {
	Name() string
	IsFast() bool
	Validate(ctx context.Context, pipeline *pipeline.Pipeline) ([]*Issue, error)
	ValidateAsset(ctx context.Context, pipeline *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)
	GetApplicableLevels() []Level
	GetSeverity() ValidatorSeverity
}

func FilterRulesByLevel added in v0.5.6

func FilterRulesByLevel(rules []Rule, level Level) []Rule

func FilterRulesBySpeed added in v0.11.53

func FilterRulesBySpeed(rules []Rule, fast bool) []Rule

func GetRules

func GetRules(fs afero.Fs, finder repoFinder, excludeWarnings bool, parser *sqlparser.SQLParser, cacheFoundGlossary bool) ([]Rule, error)

type RuleDefinition added in v0.11.195

type RuleDefinition struct {
	Name        string     `yaml:"name"`
	Description string     `yaml:"description"`
	Criteria    string     `yaml:"criteria"`
	RuleTarget  RuleTarget `yaml:"target"`
	// contains filtered or unexported fields
}

type RuleSet added in v0.11.195

type RuleSet struct {
	Name     string           `yaml:"name"`
	Selector []map[string]any `yaml:"selector"`
	Rules    []string         `yaml:"rules"`
}

type RuleTarget added in v0.11.198

type RuleTarget string

func (RuleTarget) Valid added in v0.11.198

func (target RuleTarget) Valid() bool

type SimpleRule

type SimpleRule struct {
	Identifier       string
	Fast             bool
	Validator        PipelineValidator
	AssetValidator   AssetValidator
	ApplicableLevels []Level
	Severity         ValidatorSeverity
}

func GetCustomCheckQueryDryRunRule added in v0.11.223

func GetCustomCheckQueryDryRunRule(connectionManager connectionManager, renderer jinja.RendererInterface) *SimpleRule

func (*SimpleRule) GetApplicableLevels added in v0.5.6

func (g *SimpleRule) GetApplicableLevels() []Level

func (*SimpleRule) GetSeverity added in v0.11.14

func (g *SimpleRule) GetSeverity() ValidatorSeverity

func (*SimpleRule) IsFast added in v0.11.53

func (g *SimpleRule) IsFast() bool

func (*SimpleRule) Name

func (g *SimpleRule) Name() string

func (*SimpleRule) Validate

func (g *SimpleRule) Validate(ctx context.Context, pipeline *pipeline.Pipeline) ([]*Issue, error)

func (*SimpleRule) ValidateAsset added in v0.5.6

func (g *SimpleRule) ValidateAsset(ctx context.Context, pipeline *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

type UsedTableValidatorRule added in v0.11.14

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

func (UsedTableValidatorRule) GetApplicableLevels added in v0.11.14

func (u UsedTableValidatorRule) GetApplicableLevels() []Level

func (UsedTableValidatorRule) GetSeverity added in v0.11.14

func (u UsedTableValidatorRule) GetSeverity() ValidatorSeverity

func (UsedTableValidatorRule) IsFast added in v0.11.53

func (u UsedTableValidatorRule) IsFast() bool

func (UsedTableValidatorRule) Name added in v0.11.14

func (u UsedTableValidatorRule) Name() string

func (UsedTableValidatorRule) Validate added in v0.11.14

func (UsedTableValidatorRule) ValidateAsset added in v0.11.14

func (u UsedTableValidatorRule) ValidateAsset(ctx context.Context, p *pipeline.Pipeline, asset *pipeline.Asset) ([]*Issue, error)

type ValidatorSeverity added in v0.11.14

type ValidatorSeverity int
const (
	ValidatorSeverityWarning ValidatorSeverity = iota
	ValidatorSeverityCritical
)

type WarnRegularYamlFiles added in v0.11.177

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

func (*WarnRegularYamlFiles) WarnRegularYamlFilesInRepo added in v0.11.177

func (w *WarnRegularYamlFiles) WarnRegularYamlFilesInRepo(ctx context.Context, p *pipeline.Pipeline) ([]*Issue, error)

Jump to

Keyboard shortcuts

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