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

action-usage-types

This checks that action usages are only typed by action definitions, or KerML behaviors.

S

actor-membership-owning-type

This checks that actors are owned by requirements or cases.

S

allocation-usage-types

This checks that allocation usages are only typed by allocation definitions.

S

analysis-case-usage-types

This checks that analysis case usages are only typed by a single analysis case definition.

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).

S

attribute-usage-types

This checks that attribute usages are only typed by attribute definitions, or KerML data types.

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.

S

case-usage-types

This checks that case usages are only typed by a single case definition.

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.

S

connection-usage-types

This checks that connection usages are only typed by connection definitions, or KerML associations.

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.

S

constraint-usage-types

This checks that constraint usages are only typed by a constraint case definition.

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

enumeration-definition-subclassification

This checks that enumeration definitions do not subclassify other enumeration definitions.

S

enumeration-usage-types

This checks that enumeration usages outside of enumeration definitions are only typed by exactly one enumeration definition.

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

flow-usage-types

This checks that flow usages are only typed by flow definitions, or KerML interactions.

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.

S

interface-usage-types

This checks that interface usages are only typed by interface definitions.

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.

S

item-usage-types

This checks that item usages are only typed by item definitions, or KerML structures. Note that this also applies to part usages which have exactly the same constraint, and are kinds of items.

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.

S

occurrence-usage-types

This checks that occurrence usages are only typed by occurrence definitions, or KerML classes.

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.

S

port-usage-types

This checks that port usages are only typed by port definitions.

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

rendering-usage-types

This checks that rendering usages are only typed by a single rendering definition.

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-usage-types

This checks that requirement usages are only typed by a single requirement definition.

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

use-case-usage-types

This checks that use case usages are only typed by a single use case definition.

S

variant-membership-owning-namespace

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

S

verification-case-usage-types

This checks that verification case usages are only typed by a single verification case definition.

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

view-usage-types

This checks that view usages are only typed by a single view definition.

S

viewpoint-usage-types

This checks that viewpoint usages are only typed by a single viewpoint definition.

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

feature-reference-expression-access

This checks that feature references are accessible from the expression scope, and catches mistakes of accessing features of unrelated types.

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.

KS

type-specialization-not-self

This checks that types do not specialize themselves directly.

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