Documentation
¶
Index ¶
- Constants
- type AndCondition
- type ChainTemplate
- type CodeSnip
- type ConditionContext
- type ConditionEntry
- type ConditionResponse
- type Conditional
- type CustomVariable
- type IncidentContext
- type Location
- type Message
- type Option
- type OrCondition
- type Perform
- type Position
- type Rule
- type RuleEngine
- type RuleMeta
- type RuleSelector
- type RuleSet
- type Scope
Constants ¶
View Source
const TemplateContextPathScopeKey = "konveyor.io/path-scope"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AndCondition ¶
type AndCondition struct {
Conditions []ConditionEntry `yaml:"and"`
}
func (AndCondition) Evaluate ¶
func (a AndCondition) Evaluate(ctx context.Context, log logr.Logger, condCtx ConditionContext) (ConditionResponse, error)
type ChainTemplate ¶
type ChainTemplate struct {
Filepaths []string `yaml:"filepaths,omitempty"`
Extras map[string]interface{} `yaml:"extras,omitempty"`
ExcludedPaths []string `yaml:"excludedPaths,omitempty"`
}
Chain Templates are used by rules and providers to pass context around during rule execution.
func (*ChainTemplate) FilterIncidentsByFilePaths ¶ added in v0.7.0
func (c *ChainTemplate) FilterIncidentsByFilePaths(incidents []IncidentContext) []IncidentContext
type ConditionContext ¶
type ConditionContext struct {
Tags map[string]interface{} `yaml:"tags"`
Template map[string]ChainTemplate `yaml:"template"`
RuleID string `yaml:"ruleID"`
}
func (*ConditionContext) Copy ¶ added in v0.7.0
func (c *ConditionContext) Copy() ConditionContext
This will copy the condition, but this will not copy the ruleID
type ConditionEntry ¶
type ConditionEntry struct {
From string
As string
Ignorable bool
Not bool
ProviderSpecificConfig Conditional
}
func (ConditionEntry) Evaluate ¶
func (ce ConditionEntry) Evaluate(ctx context.Context, log logr.Logger, condCtx ConditionContext) (ConditionResponse, error)
type ConditionResponse ¶
type ConditionResponse struct {
Matched bool `yaml:"matched"`
// For each time the condition is hit, add all of the context.
// keys here, will be used in the message.
Incidents []IncidentContext `yaml:"incidents"`
TemplateContext map[string]interface{} `yaml:",inline"`
}
type Conditional ¶
type Conditional interface {
Evaluate(ctx context.Context, log logr.Logger, condCtx ConditionContext) (ConditionResponse, error)
}
type CustomVariable ¶
type IncidentContext ¶
type Option ¶
type Option func(engine *ruleEngine)
func WithCodeSnipLimit ¶
func WithContextLines ¶
func WithIncidentLimit ¶
func WithIncidentSelector ¶
func WithLocationPrefixes ¶ added in v0.3.1
type OrCondition ¶
type OrCondition struct {
Conditions []ConditionEntry `yaml:"or"`
}
func (OrCondition) Evaluate ¶
func (o OrCondition) Evaluate(ctx context.Context, log logr.Logger, condCtx ConditionContext) (ConditionResponse, error)
type Position ¶
type Position struct {
/*Line defined:
* Line position in a document (zero-based).
* If a line number is greater than the number of lines in a document, it defaults back to the number of lines in the document.
* If a line number is negative, it defaults to 0.
*/
Line int `yaml:"line"`
/*Character defined:
* Character offset on a line in a document (zero-based). Assuming that the line is
* represented as a string, the `character` value represents the gap between the
* `character` and `character + 1`.
*
* If the character value is greater than the line length it defaults back to the
* line length.
* If a line number is negative, it defaults to 0.
*/
Character int `yaml:"character"`
}
type Rule ¶
type Rule struct {
RuleMeta `yaml:",inline" json:",inline"`
Perform Perform `yaml:",inline" json:"perform,omitempty"`
When Conditional `yaml:"when,omitempty" json:"when,omitempty"`
Snipper CodeSnip `yaml:"-" json:"-"`
CustomVariables []CustomVariable `yaml:"customVariables,omitempty" json:"customVariables,omitempty"`
}
type RuleEngine ¶
type RuleEngine interface {
RunRules(context context.Context, rules []RuleSet, selectors ...RuleSelector) []konveyor.RuleSet
RunRulesScoped(ctx context.Context, ruleSets []RuleSet, scopes Scope, selectors ...RuleSelector) []konveyor.RuleSet
Stop()
}
func CreateRuleEngine ¶
type RuleMeta ¶
type RuleMeta struct {
RuleID string `yaml:"ruleID,omitempty" json:"ruleID,omitempty"`
Description string `yaml:"description,omitempty" json:"description,omitempty"`
Category *konveyor.Category `yaml:"category,omitempty" json:"category,omitempty"`
Labels []string `yaml:"labels,omitempty" json:"labels,omitempty"`
Effort *int `json:"effort,omitempty"`
UsesHasTags bool
}
type RuleSelector ¶
RuleSelector selects rules based on rule metadata
type RuleSet ¶
type RuleSet struct {
Name string `json:"name,omitempty" yaml:"name,omitempty"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
Labels []string `json:"labels,omitempty" yaml:"labels,omitempty"`
Tags []string `json:"tags,omitempty" yaml:"tags,omitempty"`
Rules []Rule `json:"rules,omitempty" yaml:"rules,omitempty"`
}
type Scope ¶ added in v0.7.0
type Scope interface {
Name() string
// For now this is the only place that we are considering adding a scope
// in the future, we could scope other things
AddToContext(*ConditionContext) error
FilterResponse(IncidentContext) bool
}
Scopes apply to individual calls to the providers and will add inforamtion to the ConditionContext To apply the scope. It is the responsiblity of the provider to use these correctly.
func ExcludedPathsScope ¶ added in v0.7.0
func IncludedPathsScope ¶ added in v0.7.0
Click to show internal directories.
Click to hide internal directories.