Validation Rules

A list of currently implemented validation rules in Syside.

Legend

- The rule has associated configuration options
K - The rule applies to KerML
S - The rule applies to SysML

Standard

Rules defined in either KerML or SysML specifications.

Name

Summary

S

accept-action-usage-parameters

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

S

actor-membership-owning-type

This checks that actors are owned by requirements or cases.

KS

annotation-annotating-element

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

S

assert-constraint-usage-reference

This checks that assert constraints reference other constraints only.

S

assignment-action-usage-referent

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

KS

association-binary-specialization

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

KS

association-end-types

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

KS

association-related-types

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

S

attribute-definition-features

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

S

attribute-usage-features

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

KS

behavior-specialization

This checks that behaviors do not specialize structures.

KS

binding-connector-is-binary

This checks that binding connectors have exactly two ends.

S

case-definition-only-one-objective

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

S

case-definition-only-one-subject

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

S

case-definition-subject-parameter-position

This checks that case definition subjects are the first parameter.

S

case-usage-only-one-objective

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

S

case-usage-only-one-subject

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

S

case-usage-subject-parameter-position

This checks that case usage subjects are the first parameter.

KS

class-specialization

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

KS

classifier-multiplicity-domain

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

S

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

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

S

conjugated-port-definition-original-port-definition

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

KS

connector-binary-specialization

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

KS

connector-related-features

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

KS

constructor-expression-no-duplicate-feature-redefinition

This checks that constructor arguments are bound only once.

KS

constructor-expression-owned-features

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

KS

constructor-expression-result-feature-redefinition

This checks that constructors arguments are bound to the instantiated type features only, and only once, i.e. that there are no extraneous or unrelated arguments.

S

control-node-owning-type

This checks that control nodes are owned by actions.

KS

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.

KS

cross-subsetting-crossing-feature

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

KS

data-type-specialization

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

S

definition-variation-owned-feature-membership

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

S

definition-variation-specialization

This checks that variation definitions do not specialize other variations.

KS

element-filter-membership-condition-is-boolean

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

KS

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

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

KS

element-is-implied-included

This checks that an incomplete element has no implied relationships.

S

event-occurrence-usage-reference

This checks that event occurrences reference only other occurrences.

S

exhibit-state-usage-reference

This checks that exhibit state reference other states only.

S

expose-owning-namespace

This checks that expose are owned by view usages.

KS

expression-result-expression-membership

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

KS

expression-return-parameter-membership

This checks that expressions have at most one return parameter.

KS

feature-chain-expression-conformance

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

KS

feature-chaining-feature-conformance

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

KS

feature-chaining-feature-not-one

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

KS

feature-chaining-features-not-self

This checks that features do not chain themselves directly.

KS

feature-constant-is-variable

This checks that constant features are also variable.

KS

feature-cross-feature-specialization

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

KS

feature-cross-feature-type

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

KS

feature-crossing-specialization

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

KS

feature-end-multiplicity

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

KS

feature-end-no-direction

This checks that end features have no directions.

KS

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

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

KS

feature-is-variable

This checks that variable features are owned by occurrences.

KS

feature-multiplicity-domain

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

KS

feature-owned-cross-subsetting

This checks that features have at most one cross subsetting.

KS

feature-owned-reference-subsetting

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

KS

feature-portion-not-variable

This checks that portion features are not variable.

KS

feature-reference-expression-referent-is-feature

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

KS

feature-specialization

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

KS

feature-value-is-initial

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

KS

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.

S

flow-definition-connection-ends

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

KS

flow-end-nested-feature

This checks that flow ends have exactly one owned feature.

KS

flow-end-owning-type

This checks that flow ends are owned by flows only.

KS

flow-payload-feature

This checks that flows owns at most one payload feature.

S

for-loop-action-usage-loop-variable

This checks that for loops have loop variables.

S

for-loop-action-usage-parameters

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

KS

function-result-expression-membership

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

KS

function-return-parameter-membership

This checks that functions have at most one return parameter.

S

if-action-usage-parameters

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

KS

import-top-level-visibility

This checks that top-level imports have private visibility.

S

include-use-case-usage-reference

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

KS

instantiation-expression-instantiated-type

This checks that instantiation expressions have an instantiated type.

KS

invocation-expression-instantiated-type

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

KS

invocation-expression-no-duplicate-parameter-redefinition

This checks that invocation arguments are bound only once.

KS

invocation-expression-owned-features

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

KS

invocation-expression-parameter-redefinition

This checks that invocation arguments are bound to the instantiated type input features only, and only once, i.e. that there are no extraneous or unrelated arguments.

KS

metadata-feature-annotated-element

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

KS

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.

KS

metadata-feature-metaclass

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

KS

metadata-feature-metaclass-not-abstract

This checks that metadata is typed by a concrete metaclass.

KS

multiplicity-range-bound-result-types

This checks that multiplicity range bounds expression is an integer.

KS

multiplicity-range-bounds

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

KS

namespace-distinguishability

This checks that namespace member names are unambiguous.

S

objective-membership-is-composite

This checks that objectives are always composite.

S

objective-membership-owning-type

This checks that stakeholders are owned by cases.

S

occurrence-usage-individual-definition

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

S

occurrence-usage-individual-usage

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

S

occurrence-usage-portion-kind

This checks that portion occurrence usages are owned an occurrence.

KS

parameter-membership-owning-type

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

S

perform-action-usage-reference

This checks that perform actions reference other actions only.

S

port-definition-owned-usages-not-composite

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

S

port-usage-nested-usages-not-composite

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

KS

redefinition-direction-conformance

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

KS

redefinition-end-conformance

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

KS

redefinition-featuring-types

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

S

requirement-constraint-membership-is-composite

This checks that requirement constraints are always composite.

S

requirement-constraint-membership-owning-type

This checks that requirement constraints are owned by requirements.

S

requirement-definition-only-one-subject

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

S

requirement-definition-subject-parameter-position

This checks that requirement definition subjects are the first parameter.

S

requirement-usage-only-one-subject

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

S

requirement-usage-subject-parameter-position

This checks that requirement usage subjects are the first parameter.

S

requirement-verification-membership-owning-type

This checks that requirement verifications are owned by objectives.

KS

result-expression-membership-owning-type

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

KS

return-parameter-membership-owning-type

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

S

satisfy-requirement-usage-reference

This checks that satisfy requirements reference other requirements only.

S

send-action-parameters

This checks that send actions have a payload and sender.

KS

specialization-specific-not-conjugated

This checks that a specialized type is not conjugated.

S

stakeholder-membership-owning-type

This checks that stakeholders are owned by requirements.

S

state-definition-parallel-subactions

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

S

state-definition-state-subaction-kind

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

S

state-subaction-membership-owning-type

This checks that state subactions are owned only by states.

S

state-usage-parallel-subactions

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

S

state-usage-state-subaction-kind

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

KS

structure-specialization

This checks that structures do not specialize behaviours.

S

subject-membership-owning-type

This checks that subjects are owned by requirements or cases.

KS

subsetting-constant-conformance

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

KS

subsetting-featuring-types

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

KS

subsetting-uniqueness-conformance

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

S

transition-feature-membership-effect-action

This checks that do transition member is an action.

S

transition-feature-membership-guard-expression

This checks that if transition member is a boolean expression.

S

transition-feature-membership-owning-type

This checks that transition feature memberships are owned by transitions.

S

transition-feature-membership-trigger-action

This checks that accept transition member is an accept action.

S

transition-usage-parameters

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

S

transition-usage-succession

This checks that transitions transition to an action usage.

S

transition-usage-trigger-actions

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

S

trigger-invocation-expression-after-argument

This checks that after expression is a duration value.

S

trigger-invocation-expression-at-argument

This checks that at expression is a time instant value.

S

trigger-invocation-expression-when-argument

This checks that when expression has a boolean result type.

KS

type-at-most-one-conjugator

This checks that types have at most one conjugation relationship.

K

type-differencing-types-not-self

This checks that types do not difference themselves directly.

K

type-intersecting-types-not-self

This checks that types do not intersect themselves directly.

K

type-owned-differencing-not-one

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

K

type-owned-intersecting-not-one

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

K

type-owned-multiplicity

This checks that types have at most one owned multiplicity.

K

type-owned-unioning-not-one

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

KS

type-specialization

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

K

type-unioning-types-not-self

This checks that types do not union themselves directly.

S

usage-variation-owned-feature-membership

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

S

usage-variation-specialization

This checks that variation usages do not specialize other variations.

S

variant-membership-owning-namespace

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

S

view-definition-only-one-view-rendering

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

S

view-rendering-membership-owning-type

This checks that view renderings are owned by views.

S

view-usage-only-one-view-rendering

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

S

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

KS

global-namespace-distinguishability

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

KS

import-explicit-visibility

This checks that imports have an explicit visibility.

KS

invocation-expression-missing-arguments

This checks that invocation expressions provide arguments to all parameters without feature values.

S

quantity-operator-expression

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

KS

related-feature-conformance

This warns when features related by ends do not conform to the types of the redefined end features.

KS

standard-library-package

This checks that user library packages are not marked standard.

KS

type-error

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

S

usage-feature-typing

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

Deprecated Rules

Rules that have been deprecated or removed.

Name

Version

part-usage-part-definition

0.9