Element rule keys
Generated by rulebearing docs --format reference --out docs/reference/element-rules.md from the element-rule vocabulary and the capability table; edit those, not this file. yes means the language answers the key as ArchUnitNET defines it; a no is exit 3 unless select.language leaves the language out. A key used on a select.kind (or nested selector kind) outside its Kinds cell is exit 3 as well. getterVisibility and setterVisibility take an access level and mean the havePublicGetter ... havePrivateProtectedSetter rows.
| Concept | select.where |
should |
Value | Kinds | .NET | TypeScript | JavaScript | Python |
|---|---|---|---|---|---|---|---|---|
are / be |
are, areNot |
be, notBe |
full names, or a nested selector | every kind | yes | yes | yes | yes |
| exist | (condition only) | exist, notExist |
true or false |
every kind | yes | yes | yes | yes |
| public | arePublic, areNotPublic |
bePublic, notBePublic |
true or false |
type, class, interface, attribute, member, field, method, property, function |
yes | reads export: an exported declaration is public, any other internal to its module |
reads export: an exported declaration is public, any other internal to its module |
reads the leading underscore: _name is private, any other name public |
| private | arePrivate, areNotPrivate |
bePrivate, notBePrivate |
true or false |
type, class, interface, attribute, member, field, method, property, function |
yes | reads the private and protected modifiers and #private names on class members |
reads the private and protected modifiers and #private names on class members |
reads the leading underscore: _name is private, any other name public |
| protected | areProtected, areNotProtected |
beProtected, notBeProtected |
true or false |
type, class, interface, attribute, member, field, method, property, function |
yes | reads the private and protected modifiers and #private names on class members |
reads the private and protected modifiers and #private names on class members |
no: the language has only the leading-underscore convention |
| internal | areInternal, areNotInternal |
beInternal, notBeInternal |
true or false |
type, class, interface, attribute, member, field, method, property, function |
yes | reads export: an exported declaration is public, any other internal to its module |
reads export: an exported declaration is public, any other internal to its module |
no: the language has only the leading-underscore convention |
| protectedInternal | areProtectedInternal, areNotProtectedInternal |
beProtectedInternal, notBeProtectedInternal |
true or false |
type, class, interface, attribute, member, field, method, property, function |
yes | no: the language has no such access level | no: the language has no such access level | no: the language has only the leading-underscore convention |
| privateProtected | arePrivateProtected, areNotPrivateProtected |
bePrivateProtected, notBePrivateProtected |
true or false |
type, class, interface, attribute, member, field, method, property, function |
yes | no: the language has no such access level | no: the language has no such access level | no: the language has only the leading-underscore convention |
| haveName | haveName, doNotHaveName |
haveName, notHaveName |
a name or a list | every kind | yes | yes | yes | yes |
| haveNameMatching | haveNameMatching, doNotHaveNameMatching |
haveNameMatching, notHaveNameMatching |
a regular expression | every kind | yes | yes | yes | yes |
| haveNameStartingWith | haveNameStartingWith, doNotHaveNameStartingWith |
haveNameStartingWith, notHaveNameStartingWith |
a name or a list | every kind | yes | yes | yes | yes |
| haveNameEndingWith | haveNameEndingWith, doNotHaveNameEndingWith |
haveNameEndingWith, notHaveNameEndingWith |
a name or a list | every kind | yes | yes | yes | yes |
| haveNameContaining | haveNameContaining, doNotHaveNameContaining |
haveNameContaining, notHaveNameContaining |
a name or a list | every kind | yes | yes | yes | yes |
| haveFullName | haveFullName, doNotHaveFullName |
haveFullName, notHaveFullName |
a name or a list | every kind | yes | yes | yes | yes |
| haveFullNameMatching | haveFullNameMatching, doNotHaveFullNameMatching |
haveFullNameMatching, notHaveFullNameMatching |
a regular expression | every kind | yes | yes | yes | yes |
| haveFullNameStartingWith | haveFullNameStartingWith, doNotHaveFullNameStartingWith |
haveFullNameStartingWith, notHaveFullNameStartingWith |
a name or a list | every kind | yes | yes | yes | yes |
| haveFullNameEndingWith | haveFullNameEndingWith, doNotHaveFullNameEndingWith |
haveFullNameEndingWith, notHaveFullNameEndingWith |
a name or a list | every kind | yes | yes | yes | yes |
| haveFullNameContaining | haveFullNameContaining, doNotHaveFullNameContaining |
haveFullNameContaining, notHaveFullNameContaining |
a name or a list | every kind | yes | yes | yes | yes |
| haveAssemblyQualifiedName | haveAssemblyQualifiedName, doNotHaveAssemblyQualifiedName |
haveAssemblyQualifiedName, notHaveAssemblyQualifiedName |
a name or a list | type, class, interface, attribute, member, field, method, property, function |
yes | no: the language has no assemblies | no: the language has no assemblies | no: the language has no assemblies |
| haveAssemblyQualifiedNameMatching | haveAssemblyQualifiedNameMatching, doNotHaveAssemblyQualifiedNameMatching |
haveAssemblyQualifiedNameMatching, notHaveAssemblyQualifiedNameMatching |
a regular expression | type, class, interface, attribute, member, field, method, property, function |
yes | no: the language has no assemblies | no: the language has no assemblies | no: the language has no assemblies |
| haveAssemblyQualifiedNameStartingWith | haveAssemblyQualifiedNameStartingWith, doNotHaveAssemblyQualifiedNameStartingWith |
haveAssemblyQualifiedNameStartingWith, notHaveAssemblyQualifiedNameStartingWith |
a name or a list | type, class, interface, attribute, member, field, method, property, function |
yes | no: the language has no assemblies | no: the language has no assemblies | no: the language has no assemblies |
| haveAssemblyQualifiedNameEndingWith | haveAssemblyQualifiedNameEndingWith, doNotHaveAssemblyQualifiedNameEndingWith |
haveAssemblyQualifiedNameEndingWith, notHaveAssemblyQualifiedNameEndingWith |
a name or a list | type, class, interface, attribute, member, field, method, property, function |
yes | no: the language has no assemblies | no: the language has no assemblies | no: the language has no assemblies |
| haveAssemblyQualifiedNameContaining | haveAssemblyQualifiedNameContaining, doNotHaveAssemblyQualifiedNameContaining |
haveAssemblyQualifiedNameContaining, notHaveAssemblyQualifiedNameContaining |
a name or a list | type, class, interface, attribute, member, field, method, property, function |
yes | no: the language has no assemblies | no: the language has no assemblies | no: the language has no assemblies |
| resideInNamespace | resideInNamespace, doNotResideInNamespace |
resideInNamespace, notResideInNamespace |
a name or a list | every kind | yes | the namespace is the module's path | the namespace is the module's path | the namespace is the dotted module path |
| resideInNamespaceMatching | resideInNamespaceMatching, doNotResideInNamespaceMatching |
resideInNamespaceMatching, notResideInNamespaceMatching |
a regular expression | every kind | yes | the namespace is the module's path | the namespace is the module's path | the namespace is the dotted module path |
| resideInAssembly | resideInAssembly, doNotResideInAssembly |
resideInAssembly, notResideInAssembly |
a name or a list | type, class, interface, attribute, member, field, method, property, function |
yes | no: the language has no assemblies | no: the language has no assemblies | no: the language has no assemblies |
| resideInAssemblyMatching | resideInAssemblyMatching, doNotResideInAssemblyMatching |
resideInAssemblyMatching, notResideInAssemblyMatching |
a regular expression | type, class, interface, attribute, member, field, method, property, function |
yes | no: the language has no assemblies | no: the language has no assemblies | no: the language has no assemblies |
| dependOnAny | dependOnAny, doNotDependOnAny |
dependOnAny, notDependOnAny |
full names, or a nested selector | every kind | yes | yes | yes | yes |
| onlyDependOn | onlyDependOn, doNotOnlyDependOn |
onlyDependOn, notOnlyDependOn |
full names, or a nested selector | every kind | yes | yes | yes | yes |
| callAny | callAny, doNotCallAny |
callAny, notCallAny |
full names, or a nested selector | type, class, interface, attribute, member, field, method, property, function |
yes | yes | yes | no: method bodies are not analysed |
| haveAnyAttributes | haveAnyAttributes, doNotHaveAnyAttributes |
haveAnyAttributes, notHaveAnyAttributes |
full names, or a nested selector | type, class, interface, attribute, member, field, method, property, function |
yes | reads decorators | reads decorators | reads decorators |
| onlyHaveAttributes | onlyHaveAttributes, doNotOnlyHaveAttributes |
onlyHaveAttributes, notOnlyHaveAttributes |
full names, or a nested selector | type, class, interface, attribute, member, field, method, property, function |
yes | reads decorators | reads decorators | reads decorators |
| haveAttributeWithArguments | haveAttributeWithArguments, doNotHaveAttributeWithArguments |
haveAttributeWithArguments, notHaveAttributeWithArguments |
{ attribute, arguments: [...] } |
type, class, interface, attribute, member, field, method, property, function |
yes | reads decorator arguments | reads decorator arguments | reads decorator arguments |
| haveAttributeWithNamedArguments | haveAttributeWithNamedArguments, doNotHaveAttributeWithNamedArguments |
haveAttributeWithNamedArguments, notHaveAttributeWithNamedArguments |
{ attribute, arguments: { name: value } } |
type, class, interface, attribute, member, field, method, property, function |
yes | reads decorator arguments | reads decorator arguments | reads decorator arguments |
| haveAnyAttributesWithArguments | haveAnyAttributesWithArguments, doNotHaveAnyAttributesWithArguments |
haveAnyAttributesWithArguments, notHaveAnyAttributesWithArguments |
a list of argument values | type, class, interface, attribute, member, field, method, property, function |
yes | reads decorator arguments | reads decorator arguments | reads decorator arguments |
| haveAnyAttributesWithNamedArguments | haveAnyAttributesWithNamedArguments, doNotHaveAnyAttributesWithNamedArguments |
haveAnyAttributesWithNamedArguments, notHaveAnyAttributesWithNamedArguments |
{ name: value } |
type, class, interface, attribute, member, field, method, property, function |
yes | reads decorator arguments | reads decorator arguments | reads decorator arguments |
| assignableTo | areAssignableTo, areNotAssignableTo |
beAssignableTo, notBeAssignableTo |
full names, or a nested selector | type, class, interface, attribute |
yes | reads extends and implements |
reads extends and implements |
reads base classes |
| implementInterface | implementInterface, doNotImplementInterface |
implementInterface, notImplementInterface |
full names, or a nested selector | type, class, interface, attribute |
yes | reads extends and implements |
reads extends and implements |
reads base classes |
| implementAnyInterfaces | implementAnyInterfaces, doNotImplementAnyInterfaces, implementAny |
implementAnyInterfaces, notImplementAnyInterfaces, implementAny |
full names, or a nested selector | type, class, interface, attribute |
yes | reads extends and implements |
reads extends and implements |
reads base classes |
| enums | areEnums, areNotEnums |
beEnums, notBeEnums |
true or false |
type, class, interface, attribute |
yes | yes | yes | no: enumerations are ordinary classes |
| structs | areStructs, areNotStructs |
beStructs, notBeStructs |
true or false |
type, class, interface, attribute |
yes | no: the language has no value types | no: the language has no value types | no: the language has no value types |
| valueTypes | areValueTypes, areNotValueTypes |
beValueTypes, notBeValueTypes |
true or false |
type, class, interface, attribute |
yes | no: the language has no value types | no: the language has no value types | no: the language has no value types |
| nested | areNested, areNotNested |
beNested, notBeNested |
true or false |
type, class, interface, attribute |
yes | yes | yes | yes |
| nestedIn | areNestedIn, areNotNestedIn |
beNestedIn, notBeNestedIn |
full names, or a nested selector | type, class, interface, attribute |
yes | yes | yes | yes |
| haveMemberWithName | haveMemberWithName, doNotHaveMemberWithName |
haveMemberWithName, notHaveMemberWithName |
a name or a list | type, class, interface, attribute |
yes | yes | yes | yes |
| haveFieldMemberWithName | haveFieldMemberWithName, doNotHaveFieldMemberWithName |
haveFieldMemberWithName, notHaveFieldMemberWithName |
a name or a list | type, class, interface, attribute |
yes | yes | yes | yes |
| haveMethodMemberWithName | haveMethodMemberWithName, doNotHaveMethodMemberWithName |
haveMethodMemberWithName, notHaveMethodMemberWithName |
a name or a list | type, class, interface, attribute |
yes | yes | yes | yes |
| havePropertyMemberWithName | havePropertyMemberWithName, doNotHavePropertyMemberWithName |
havePropertyMemberWithName, notHavePropertyMemberWithName |
a name or a list | type, class, interface, attribute |
yes | yes | yes | yes |
| abstract | areAbstract, areNotAbstract |
beAbstract, notBeAbstract |
true or false |
type, class, interface, attribute, member, method, property |
yes | yes | yes | an ABC base or an @abstractmethod |
| sealed | areSealed, areNotSealed |
beSealed, notBeSealed |
true or false |
type, class, attribute |
yes | no: the language cannot forbid subclassing | no: the language cannot forbid subclassing | no: the language cannot forbid subclassing |
| record | areRecord, areNotRecord |
beRecord, notBeRecord |
true or false |
type, class, attribute |
yes | no: the language has no record types | no: the language has no record types | no: the language has no record types |
| immutable | areImmutable, areNotImmutable |
beImmutable, notBeImmutable |
true or false |
type, class, interface, attribute, member, field, method, property |
yes | reads readonly fields and get-only accessors |
reads readonly fields and get-only accessors |
@dataclass(frozen=True) |
| generic | areGeneric, areNotGeneric |
beGeneric, notBeGeneric |
true or false |
type, class, interface, attribute |
yes | yes | yes | no: generic parameters are not recorded |
| declaredIn | areDeclaredIn, areNotDeclaredIn |
beDeclaredIn, notBeDeclaredIn |
full names, or a nested selector | member, field, method, property |
yes | yes | yes | yes |
| static | areStatic, areNotStatic |
beStatic, notBeStatic |
true or false |
type, class, interface, attribute, member, field, method, property |
yes | yes | yes | @staticmethod and @classmethod |
| readOnly | areReadOnly, areNotReadOnly |
beReadOnly, notBeReadOnly |
true or false |
member, field, property |
yes | reads readonly fields and get-only accessors |
reads readonly fields and get-only accessors |
a @property without a setter |
| constructor | areConstructor, areNotConstructor, areConstructors, areNoConstructors |
beConstructor, notBeConstructor, beNoConstructor |
true or false |
member, method |
yes | yes | yes | __init__ |
| virtual | areVirtual, areNotVirtual |
beVirtual, notBeVirtual |
true or false |
member, method, property |
yes | no: every method can be overridden | no: every method can be overridden | no: every method can be overridden |
| haveReturnType | haveReturnType, doNotHaveReturnType |
haveReturnType, notHaveReturnType |
full names, or a nested selector | member, method |
yes | reads the return type annotation | reads the return type annotation | no: return annotations are not recorded |
| haveDependencyInMethodBodyTo | haveDependencyInMethodBodyTo, doNotHaveDependencyInMethodBodyTo |
haveDependencyInMethodBodyTo, notHaveDependencyInMethodBodyTo |
full names, or a nested selector | member, method |
yes | reads new expressions in method bodies |
reads new expressions in method bodies |
no: method bodies are not analysed |
| calledBy | areCalledBy, areNotCalledBy |
beCalledBy, notBeCalledBy |
full names, or a nested selector | member, method |
yes | yes | yes | no: method bodies are not analysed |
| haveGetter | haveGetter, doNotHaveGetter, haveNoGetter |
haveGetter, notHaveGetter, haveNoGetter |
true or false |
member, property |
yes | reads get and set accessors |
reads get and set accessors |
@property and @name.setter |
| haveSetter | haveSetter, doNotHaveSetter, haveNoSetter |
haveSetter, notHaveSetter, haveNoSetter |
true or false |
member, property |
yes | reads get and set accessors |
reads get and set accessors |
@property and @name.setter |
| haveInitOnlySetter | haveInitOnlySetter, doNotHaveInitOnlySetter, haveInitSetter |
haveInitOnlySetter, notHaveInitOnlySetter, haveInitSetter |
true or false |
member, property |
yes | no: the language has no init-only setters | no: the language has no init-only setters | no: accessors have no access level of their own |
| havePublicGetter | havePublicGetter, doNotHavePublicGetter |
havePublicGetter, notHavePublicGetter |
true or false |
member, property |
yes | reads get and set accessors |
reads get and set accessors |
no: accessors have no access level of their own |
| haveProtectedGetter | haveProtectedGetter, doNotHaveProtectedGetter |
haveProtectedGetter, notHaveProtectedGetter |
true or false |
member, property |
yes | reads get and set accessors |
reads get and set accessors |
no: accessors have no access level of their own |
| haveInternalGetter | haveInternalGetter, doNotHaveInternalGetter |
haveInternalGetter, notHaveInternalGetter |
true or false |
member, property |
yes | no: the language has no such access level | no: the language has no such access level | no: accessors have no access level of their own |
| haveProtectedInternalGetter | haveProtectedInternalGetter, doNotHaveProtectedInternalGetter |
haveProtectedInternalGetter, notHaveProtectedInternalGetter |
true or false |
member, property |
yes | no: the language has no such access level | no: the language has no such access level | no: accessors have no access level of their own |
| havePrivateGetter | havePrivateGetter, doNotHavePrivateGetter |
havePrivateGetter, notHavePrivateGetter |
true or false |
member, property |
yes | reads get and set accessors |
reads get and set accessors |
no: accessors have no access level of their own |
| havePrivateProtectedGetter | havePrivateProtectedGetter, doNotHavePrivateProtectedGetter |
havePrivateProtectedGetter, notHavePrivateProtectedGetter |
true or false |
member, property |
yes | no: the language has no such access level | no: the language has no such access level | no: accessors have no access level of their own |
| havePublicSetter | havePublicSetter, doNotHavePublicSetter |
havePublicSetter, notHavePublicSetter |
true or false |
member, property |
yes | reads get and set accessors |
reads get and set accessors |
no: accessors have no access level of their own |
| haveProtectedSetter | haveProtectedSetter, doNotHaveProtectedSetter |
haveProtectedSetter, notHaveProtectedSetter |
true or false |
member, property |
yes | reads get and set accessors |
reads get and set accessors |
no: accessors have no access level of their own |
| haveInternalSetter | haveInternalSetter, doNotHaveInternalSetter |
haveInternalSetter, notHaveInternalSetter |
true or false |
member, property |
yes | no: the language has no such access level | no: the language has no such access level | no: accessors have no access level of their own |
| haveProtectedInternalSetter | haveProtectedInternalSetter, doNotHaveProtectedInternalSetter |
haveProtectedInternalSetter, notHaveProtectedInternalSetter |
true or false |
member, property |
yes | no: the language has no such access level | no: the language has no such access level | no: accessors have no access level of their own |
| havePrivateSetter | havePrivateSetter, doNotHavePrivateSetter |
havePrivateSetter, notHavePrivateSetter |
true or false |
member, property |
yes | reads get and set accessors |
reads get and set accessors |
no: accessors have no access level of their own |
| havePrivateProtectedSetter | havePrivateProtectedSetter, doNotHavePrivateProtectedSetter |
havePrivateProtectedSetter, notHavePrivateProtectedSetter |
true or false |
member, property |
yes | no: the language has no such access level | no: the language has no such access level | no: accessors have no access level of their own |
| adhereToPlantUmlDiagram | (condition only) | adhereToPlantUmlDiagram, notAdhereToPlantUmlDiagram |
a .puml file |
type, class, interface, attribute, function |
yes | yes | yes | yes |