Validation Rules

A list of currently implemented validation rules in Syside.

Legend

- The rule has associated configuration options
󰫸 - The rule applies to KerML
󱎤 - The rule applies to SysML

Standard

Rules defined in either KerML or SysML specifications.

Name

Summary

󱎤

accept-action-usage-parameters

This checks that accept action usages have at least two input parameters, payload and receiver.

󱎤

actor-membership-owning-type

This checks that actors are owned by requirements or cases.

󰫸󱎤

annotation-annotating-element

This checks that an Annotation either owns, or is owned by its annotating element.

󱎤

assert-constraint-usage-reference

This checks that assert constraints reference other constraints only.

󱎤

assignment-action-usage-referent

This checks that assignment action has a referent member feature element.

󰫸󱎤

association-binary-specialization

This checks that nary associations do not specialize Links::BinaryLink.

󰫸󱎤

association-end-types

This checks that owned ends of associations have exactly one type.

󰫸󱎤

association-related-types

This checks that concrete associations have at least two related types, i.e. ends.

󱎤

attribute-definition-features

This checks that all attribute definition features are referential (non-composite).

󱎤

attribute-usage-features

This checks that all attribute usage features are referential (non-composite).

󰫸󱎤

behavior-specialization

This checks that behaviors do not specialize structures.

󰫸󱎤

binding-connector-is-binary

This checks that binding connectors have exactly two ends.

󱎤

case-definition-only-one-objective

This checks that case definitions have at most one owned or inherited objective.

󱎤

case-definition-only-one-subject

This checks that case definitions have at most one owned or inherited subject.

󱎤

case-definition-subject-parameter-position

This checks that case definition subjects are the first parameter.

󱎤

case-usage-only-one-objective

This checks that case usages have at most one owned or inherited objective.

󱎤

case-usage-only-one-subject

This checks that case usages have at most one owned or inherited subject.

󱎤

case-usage-subject-parameter-position

This checks that case usage subjects are the first parameter.

󰫸󱎤

class-specialization

This checks that classes do not specialize data types, and non-association classes additionally do not specialize associations.

󰫸󱎤

classifier-multiplicity-domain

This checks that multiplicities owned by classifiers do not have no featuring_types.

󱎤

conjugated-port-definition-conjugated-port-definition-is-empty

This checks that conjugated port definitions themselves have no conjugated port definitions.

󱎤

conjugated-port-definition-original-port-definition

This checks that conjugated port definitions are owned their original port definitions, and they are conjugated.

󰫸󱎤

connector-binary-specialization

This checks that nary connectors do not specialize Links::BinaryLink.

󰫸󱎤

connector-related-features

This checks that concrete connectors have at least two related features, i.e. ends.

󰫸󱎤

constructor-expression-no-duplicate-feature-redefinition

This checks that constructor arguments are bound only once.

󰫸󱎤

constructor-expression-owned-features

This checks that constructors expressions have no other features other than its result.

󰫸󱎤

constructor-expression-result-feature-redefinition

This checks that constructors arguments are bound to the instantiated type features only, and only once.

󱎤

control-node-owning-type

This checks that control nodes are owned by actions.

󰫸󱎤

cross-subsetting-crossed-feature

This checks that CrossSubsettings always chain two features, and if declared on one of two end features, starts from the opposite end feature.

󰫸󱎤

cross-subsetting-crossing-feature

This checks that CrossSubsettings are declared on one of two or more end features.

󰫸󱎤

data-type-specialization

This checks that data types do not specialize classes or associations.

󱎤

definition-variation-owned-feature-membership

This checks that variation definitions have no owned features. variants are member features and are allowed.

󱎤

definition-variation-specialization

This checks that variation definitions do not specialize other variations.

󰫸󱎤

element-filter-membership-condition-is-boolean

This checks that element filter conditions are predicates, i.e. their expressions return boolean.

󰫸󱎤

element-filter-membership-condition-is-model-level-evaluable

This checks that element filter condition expressions are model-level evaluable.

󰫸󱎤

element-is-implied-included

This checks that an incomplete element has no implied relationships.

󱎤

event-occurrence-usage-reference

This checks that event occurrences reference only other occurrences.

󱎤

exhibit-state-usage-reference

This checks that exhibit state reference other states only.

󱎤

expose-owning-namespace

This checks that expose are owned by view usages.

󰫸󱎤

expression-result-expression-membership

This checks that expressions have at most one owned or inherited result expression membership.

󰫸󱎤

expression-return-parameter-membership

This checks that expressions have at most one return parameter.

󰫸󱎤

feature-chain-expression-conformance

This checks that feature chain expressions segments are accessible from the previous segment.

󰫸󱎤

feature-chaining-feature-conformance

This checks that all feature chain segments are accessible from the previous segment.

󰫸󱎤

feature-chaining-feature-not-one

This checks that features have either no, or two or more owned feature chainings.

󰫸󱎤

feature-chaining-features-not-self

This checks that features do not chain themselves directly.

󰫸󱎤

feature-constant-is-variable

This checks that constant features are also variable.

󰫸󱎤

feature-cross-feature-specialization

This checks that cross features specialize cross features of the redefined features of the crossing features.

󰫸󱎤

feature-cross-feature-type

This checks that cross features have the same types as the crossing features.

󰫸󱎤

feature-crossing-specialization

This checks that end features with owned cross features have no explicit crossings.

󰫸󱎤

feature-end-multiplicity

This checks that end features have multiplicity of 1..1.

󰫸󱎤

feature-end-no-direction

This checks that end features have no directions.

󰫸󱎤

feature-end-not-derived-abstract-composite-or-portion

This checks that end features are not derived, abstract, composite, or portion.

󰫸󱎤

feature-is-variable

This checks that variable features are owned by occurrences.

󰫸󱎤

feature-multiplicity-domain

This checks that the feature multiplicity has the same featuring types as the owning feature.

󰫸󱎤

feature-owned-cross-subsetting

This checks that features have at most one cross subsetting.

󰫸󱎤

feature-owned-reference-subsetting

This checks that features have at most one owned reference subsetting.

󰫸󱎤

feature-portion-not-variable

This checks that portion features are not variable.

󰫸󱎤

feature-reference-expression-referent-is-feature

This checks that the referent of feature reference expression is a feature.

󰫸󱎤

feature-specialization

This checks that feature directly or indirectly specialize Base::things.

󰫸󱎤

feature-value-is-initial

This checks that initial feature values are only owned by variable features.

󰫸󱎤

feature-value-overriding

This checks that redefined features have either no feature values, or default feature values if the redefining feature itself has feature value.

󱎤

flow-connection-definition-connection-ends

This checks that flow definitions have at most two flow ends.

󱎤

for-loop-action-usage-loop-variable

This checks that for loops have loop variables.

󱎤

for-loop-action-usage-parameters

This checks that for loops have sequence and body action parameters.

󰫸󱎤

function-result-expression-membership

This checks that functions have at most one owned or inherited result expression membership.

󰫸󱎤

function-return-parameter-membership

This checks that functions have at most one return parameter.

󱎤

if-action-usage-parameters

This checks that for if actions have an argument and then action.

󰫸󱎤

import-top-level-visibility

This checks that top-level imports have private visibility.

󱎤

include-use-case-usage-reference

This checks that include use cases reference other use cases only.

󰫸󱎤

instantiation-expression-instantiated-type

This checks that instantiation expressions have an instantiated type.

󰫸󱎤

invocation-expression-instantiated-type

This checks that invocation expression invoke other behaviors, or features typed by a single behavior.

󰫸󱎤

invocation-expression-no-duplicate-parameter-redefinition

This checks that invocation arguments are bound only once.

󰫸󱎤

invocation-expression-owned-features

This checks that owned invocation features are all input features, or a single result.

󰫸󱎤

invocation-expression-parameter-redefinition

This checks that invocation arguments are bound to the instantiated type input features only, and only once.

󰫸󱎤

item-flow-end-nested-feature

This checks that flow ends have exactly one owned feature.

󰫸󱎤

item-flow-end-owning-type

This checks that flow ends are owned by flows only.

󰫸󱎤

item-flow-item-feature

This checks that flows owns at most one payload feature.

󰫸󱎤

metadata-feature-annotated-element

This checks that metadata is applied only to elements matching its annotatedElement constraints.

󰫸󱎤

metadata-feature-body

This checks that feature directly or indirectly owned by metadata have no declared names, redefine a single inherited feature, and have no values or model-level evaluable values.

󰫸󱎤

metadata-feature-metaclass

This checks that metadata features are typed by exactly one metaclass.

󰫸󱎤

metadata-feature-metaclass-not-abstract

This checks that metadata is typed by a concrete metaclass.

󰫸󱎤

multiplicity-range-bound-result-types

This checks that multiplicity range bounds expression is an integer.

󰫸󱎤

multiplicity-range-bounds

This checks that model-level evaluable multiplicity range bounds are non-negative.

󰫸󱎤

namespace-distinguishability

This checks that namespace member names are unambiguous.

󱎤

objective-membership-is-composite

This checks that objectives are always composite.

󱎤

objective-membership-owning-type

This checks that stakeholders are owned by cases.

󱎤

occurrence-usage-individual-definition

This checks that occurrence usages are typed by at most one individual occurrence definition.

󱎤

occurrence-usage-individual-usage

This checks that individual occurrence usages are typed by individual occurrence definitions.

󱎤

occurrence-usage-portion-kind

This checks that portion occurrence usages are owned an occurrence.

󰫸󱎤

parameter-membership-owning-type

This checks that parameter memberships are owned by behaviors, steps, or results of constructor expressions.

󱎤

part-usage-part-definition

This checks that part usages are typed by at least one part definition.

󱎤

perform-action-usage-reference

This checks that perform actions reference other actions only.

󱎤

port-definition-owned-usages-not-composite

This checks that port definitions only own referential (non-composite) usages or other ports.

󱎤

port-usage-nested-usages-not-composite

This checks that port usages only own referential (non-composite) usages or other ports.

󰫸󱎤

redefinition-direction-conformance

This checks that directed features are only redefined by features with compatible directions.

󰫸󱎤

redefinition-end-conformance

This checks that end features are only redefined by other end features.

󰫸󱎤

redefinition-featuring-types

This checks that redefining feature featuring types different to the featuring types of the redefined feature.

󱎤

requirement-constraint-membership-is-composite

This checks that requirement constraints are always composite.

󱎤

requirement-constraint-membership-owning-type

This checks that requirement constraints are owned by requirements.

󱎤

requirement-definition-only-one-subject

This checks that requirement definitions have at most one owned or inherited subject.

󱎤

requirement-definition-subject-parameter-position

This checks that requirement definition subjects are the first parameter.

󱎤

requirement-usage-only-one-subject

This checks that requirement usages have at most one owned or inherited subject.

󱎤

requirement-usage-subject-parameter-position

This checks that requirement usage subjects are the first parameter.

󱎤

requirement-verification-membership-owning-type

This checks that requirement verifications are owned by objectives.

󰫸󱎤

result-expression-membership-owning-type

This checks that result expression memberships are owned by functions or expressions.

󰫸󱎤

return-parameter-membership-owning-type

This checks that return parameter memberships are owned by functions or expressions.

󱎤

satisfy-requirement-usage-reference

This checks that satisfy requirements reference other requirements only.

󱎤

send-action-parameters

This checks that send actions have a payload and sender.

󰫸󱎤

specialization-specific-not-conjugated

This checks that a specialized type is not conjugated.

󱎤

stakeholder-membership-owning-type

This checks that stakeholders are owned by requirements.

󱎤

state-definition-parallel-subactions

This checks that parallel state definitions have no owned transitions or successions.

󱎤

state-definition-state-subaction-kind

This checks that state definitions own at most one of each entry, do, and exit subactions.

󱎤

state-subaction-membership-owning-type

This checks that state subactions are owned only by states.

󱎤

state-usage-parallel-subactions

This checks that parallel state usages have no owned transitions or successions.

󱎤

state-usage-state-subaction-kind

This checks that state usages own at most one of each entry, do, and exit subactions.

󰫸󱎤

structure-specialization

This checks that structures do not specialize behaviours.

󱎤

subject-membership-owning-type

This checks that subjects are owned by requirements or cases.

󰫸󱎤

subsetting-constant-conformance

This checks that variable subsetting features are also constant if they subset a constant feature.

󰫸󱎤

subsetting-featuring-types

This checks that subsetted features are accessible from the subsetting features, e.g. through inheritance.

󰫸󱎤

subsetting-uniqueness-conformance

This checks that unique features are only subsetted by other unique features.

󱎤

transition-feature-membership-effect-action

This checks that do transition member is an action.

󱎤

transition-feature-membership-guard-expression

This checks that if transition member is a boolean expression.

󱎤

transition-feature-membership-owning-type

This checks that transition feature memberships are owned by transitions.

󱎤

transition-feature-membership-trigger-action

This checks that accept transition member is an accept action.

󱎤

transition-usage-parameters

This checks that transitions have an implicit transition link source, and if they have accept actions - also have an implicit payload.

󱎤

transition-usage-succession

This checks that transitions transition to an action usage.

󱎤

transition-usage-trigger-actions

This checks that transitions that start not from states have no trigger actions (accept).

󱎤

trigger-invocation-expression-after-argument

This checks that after expression is a duration value.

󱎤

trigger-invocation-expression-at-argument

This checks that at expression is a time instant value.

󱎤

trigger-invocation-expression-when-argument

This checks that when expression has a boolean result type.

󰫸󱎤

type-at-most-one-conjugator

This checks that types have at most one conjugation relationship.

󰫸

type-differencing-types-not-self

This checks that types do not difference themselves directly.

󰫸

type-intersecting-types-not-self

This checks that types do not intersect themselves directly.

󰫸

type-owned-differencing-not-one

This checks that types have either no, or two or more owned differencings.

󰫸

type-owned-intersecting-not-one

This checks that types have either no, or two or more owned intersectings.

󰫸

type-owned-multiplicity

This checks that types have at most one owned multiplicity.

󰫸

type-owned-unioning-not-one

This checks that types have either no, or two or more owned unionings.

󰫸󱎤

type-specialization

This checks that types directly or indirectly specialize Base::Anything.

󰫸

type-unioning-types-not-self

This checks that types do not union themselves directly.

󱎤

usage-variation-owned-feature-membership

This checks that variation usages have no owned features. variants are member features and are allowed.

󱎤

usage-variation-specialization

This checks that variation usages do not specialize other variations.

󱎤

variant-membership-owning-namespace

This checks that variants are owned by variations, or enum definitions which are implicitly variations.

󱎤

view-definition-only-one-view-rendering

This checks that view definitions have at most one owned or inherited view rendering.

󱎤

view-rendering-membership-owning-type

This checks that view renderings are owned by views.

󱎤

view-usage-only-one-view-rendering

This checks that view usages have at most one owned or inherited view rendering.

󱎤

while-loop-action-usage-parameters

This checks that while loops have at least an argument and a body action parameters.

Syside

Additional rules implemented in Syside.

Name

Summary

󰫸󱎤

global-namespace-distinguishability

This checks that all top-level member names are globally unique.

󰫸󱎤

import-explicit-visibility

This checks that imports have an explicit visibility.

󱎤

quantity-operator-expression

This checks that the second argument to quantity expressions is a measurement unit.

󰫸󱎤

standard-library-package

This checks that user library packages are not marked standard.

󰫸󱎤

type-error

This checks that assigned values conform to the types of the element they are being assigned to.

󱎤

usage-feature-typing

This checks that usages are typed by classifiers instead of other features.