diff --git a/doc-uml/FamixTypeScript-traits.puml b/doc-uml/FamixTypeScript-traits.puml index 5a5c54c..e292706 100644 --- a/doc-uml/FamixTypeScript-traits.puml +++ b/doc-uml/FamixTypeScript-traits.puml @@ -1 +1 @@ -@startuml hide empty members skinparam class { BackgroundColor white ArrowColor black BorderColor darkGray } class TConcretization <<(T,white)External>> #FFFFCC { } class TImplementable <<(T,white)External>> #FFFFCC { } class FamixTypeScriptModel <<(C,white)>> #CCFFFF { } class TInvocationsReceiver <<(T,white)External>> #FFFFCC { } class TCanBeAbstract <<(T,white)External>> #FFFFCC { Boolean isAbstract } class TFolder <<(T,white)External>> #FFFFCC { Number totalNumberOfLinesOfText Number numberOfFolders Number numberOfFiles Number numberOfEmptyLinesOfText } class TNamespace <<(T,white)External>> #FFFFCC { } class Inheritance <<(C,white)>> #CCFFFF { } class IndexedFileAnchor <<(C,white)>> #CCFFFF { } class TInvocable <<(T,white)External>> #FFFFCC { } class TWithMethods <<(T,white)External>> #FFFFCC { Number numberOfMethods Number weightedMethodCount Number tightClassCohesion Number numberOfAbstractMethods } class Access <<(C,white)>> #CCFFFF { } class THasSignature <<(T,white)External>> #FFFFCC { String signature } class TInvocation <<(T,white)External>> #FFFFCC { } class File <<(C,white)>> #CCFFFF { } class Class <<(C,white)>> #CCFFFF { } class Implementation <<(C,white)>> #CCFFFF { } class Decorator <<(C,white)>> #CCFFFF { String expression } class ParametricInterface <<(C,white)>> #CCFFFF { } class TImport <<(T,white)External>> #FFFFCC { } class Enum <<(C,white)>> #CCFFFF { } class ParametricClass <<(C,white)>> #CCFFFF { } class ParametricArrowFunction <<(C,white)>> #CCFFFF { } class TConcreteParameterType <<(T,white)External>> #FFFFCC { } class TWithClasses <<(T,white)External>> #FFFFCC { Number numberOfClasses } class TEntityCreator <<(T,white)>> #CCFFFF { } class THasImmediateSource <<(T,white)External>> #FFFFCC { String source } class THasVisibility <<(T,white)External>> #FFFFCC { Boolean isProtected Boolean isPublic Boolean isPrivate String visibility Boolean isPackageVisibility } class ImportClause <<(C,white)>> #CCFFFF { } class TLocalVariable <<(T,white)External>> #FFFFCC { } class TPrimitiveType <<(T,white)External>> #FFFFCC { } class Concretization <<(C,white)>> #CCFFFF { } class Property <<(C,white)>> #CCFFFF { Boolean isOptional Boolean isDefinitelyAssigned Boolean isJavaScriptPrivate Boolean readOnly } class TCanBeClassSide <<(T,white)External>> #FFFFCC { Boolean isClassSide } class THasKind <<(T,white)External>> #FFFFCC { Boolean isGetter String kind Boolean isSetter Boolean isConstructor Boolean isConstant } class TWithInheritances <<(T,white)External>> #FFFFCC { Number numberOfSubclasses Number hierarchyNestingLevel Number numberOfDirectSubclasses Number subclassHierarchyDepth } class TSourceLanguage <<(T,white)External>> #FFFFCC { } class ScopingEntity <<(C,white)>> #CCFFFF { } class Type <<(C,white)>> #CCFFFF { } class ParametricFunction <<(C,white)>> #CCFFFF { } class TTypedEntity <<(T,white)External>> #FFFFCC { } class SourceTextAnchor <<(C,white)>> #CCFFFF { } class Comment <<(C,white)>> #CCFFFF { Boolean isJSDoc } class ParametricMethod <<(C,white)>> #CCFFFF { } class TFunction <<(T,white)External>> #FFFFCC { } class ContainerEntity <<(C,white)>> #CCFFFF { } class Entity <<(C,white)External>> #FFFFCC { Boolean isDead Boolean isTagged Number numberOfTags } class Reference <<(C,white)>> #CCFFFF { } class TWithTypes <<(T,white)External>> #FFFFCC { } class TFile <<(T,white)External>> #FFFFCC { Number numberOfBytes Number numberOfCharacters Number totalNumberOfLinesOfText Number numberOfEmptyLinesOfText Number numberOfKiloBytes Number averageNumberOfCharactersPerLine } class TWithInvocations <<(T,white)External>> #FFFFCC { Number numberOfOutgoingInvocations } class TInheritance <<(T,white)External>> #FFFFCC { } class TComment <<(T,white)External>> #FFFFCC { String content } class ParameterConcretization <<(C,white)>> #CCFFFF { } class TWithImports <<(T,white)External>> #FFFFCC { } class ScriptEntity <<(C,white)>> #CCFFFF { } class SourceAnchor <<(C,white)>> #CCFFFF { } class TParametricEntity <<(T,white)External>> #FFFFCC { } class TWithInterfaces <<(T,white)>> #CCFFFF { } class TEnum <<(T,white)External>> #FFFFCC { } class NamedEntity <<(C,white)>> #CCFFFF { } class TWithAttributes <<(T,white)External>> #FFFFCC { Number numberOfAttributes } class TWithLocalVariables <<(T,white)External>> #FFFFCC { } class ParameterType <<(C,white)>> #CCFFFF { } class TWithComments <<(T,white)External>> #FFFFCC { Number numberOfComments Boolean hasComments } class TNamedEntity <<(T,white)External>> #FFFFCC { String name } class TWithFunctions <<(T,white)External>> #FFFFCC { } class SourcedEntity <<(C,white)>> #CCFFFF { } class TParameterConcretization <<(T,white)External>> #FFFFCC { } class TSourceEntity <<(T,white)External>> #FFFFCC { Boolean isStub Number numberOfLinesOfCode Number duplicationRate String sourceText Boolean containsReplicas Number numberOfLinesOfCodeWithMoreThanOneCharacter } class Variable <<(C,white)>> #CCFFFF { } class TIndexedFileNavigation <<(T,white)External>> #FFFFCC { Number endPos Number startPos } class Accessor <<(C,white)>> #CCFFFF { } class ArrowFunction <<(C,white)>> #CCFFFF { } class TParameter <<(T,white)External>> #FFFFCC { } class TStructuralEntity <<(T,white)External>> #FFFFCC { } class TWithAccesses <<(T,white)External>> #FFFFCC { } class TEnumValue <<(T,white)External>> #FFFFCC { } class TAccess <<(T,white)External>> #FFFFCC { Boolean isRead Boolean isReadWriteUnknown Boolean isWrite } class EnumValue <<(C,white)>> #CCFFFF { } class TSourceAnchor <<(T,white)External>> #FFFFCC { Number lineCount } class Function <<(C,white)>> #CCFFFF { } class Alias <<(C,white)>> #CCFFFF { } class BehaviouralEntity <<(C,white)>> #CCFFFF { } class TEntityMetaLevelDependency <<(T,white)External>> #FFFFCC { Boolean isDead Boolean isRoot Number numberOfChildren Number fanIn Number numberOfInternalProviders Number numberOfDeadChildren Number numberOfExternalProviders Number numberOfExternalClients Number numberOfInternalClients Number fanOut } class Module <<(C,white)>> #CCFFFF { } class JSDoc <<(C,white)>> #CCFFFF { } class Namespace <<(C,white)>> #CCFFFF { } class implicitVariable <<(C,white)>> #CCFFFF { } class Model <<(C,white)External>> #FFFFCC { Number numberOfClassesPerPackage Number numberOfModelClasses Number numberOfModelMethods Number numberOfLinesOfCodePerClass Number numberOfMethods Number numberOfClassesPerPackage Number numberOfClasses Number numberOfLinesOfCodePerMethod Number averageCyclomaticComplexity Number numberOfLinesOfCodePerPackage Number numberOfLinesOfCode } class TType <<(T,white)External>> #FFFFCC { } class TImportable <<(T,white)External>> #FFFFCC { } class PrimitiveType <<(C,white)>> #CCFFFF { } class TAttribute <<(T,white)External>> #FFFFCC { Number hierarchyNestingLevel } class TClass <<(T,white)External>> #FFFFCC { Boolean isTestCase Number weightOfAClass } class Parameter <<(C,white)>> #CCFFFF { } class TWithStatements <<(T,white)External>> #FFFFCC { Number numberOfStatements } class TDefinedInModule <<(T,white)External>> #FFFFCC { } class Folder <<(C,white)>> #CCFFFF { } class SourceLanguage <<(C,white)>> #CCFFFF { } class Entity <<(C,white)>> #CCFFFF { } class Invocation <<(C,white)>> #CCFFFF { } class TCanImplement <<(T,white)External>> #FFFFCC { } class Method <<(C,white)>> #CCFFFF { } class TImplementation <<(T,white)External>> #FFFFCC { } class TClassMetrics <<(T,white)External>> #FFFFCC { Number totalNumberOfSubclasses Number numberOfLocallyDefinedMethods Number numberOfMethodsInherited Number numberOfAttributesInherited Number numberOfMethodsOverridden Number numberOfMethodsInHierarchy } class TGenericParameterType <<(T,white)External>> #FFFFCC { } class TMethod <<(T,white)External>> #FFFFCC { } class StructuralEntity <<(C,white)>> #CCFFFF { } class TLCOMMetrics <<(T,white)External>> #FFFFCC { Number lcom3 Number lcom2 } class Interface <<(C,white)>> #CCFFFF { } class TClassMetrics <<(T,white)>> #CCFFFF { } Model <|-- FamixTypeScriptModel Entity <|-- Inheritance SourceAnchor <|-- IndexedFileAnchor Type <|-- Interface Entity <|-- Access Type <|-- Class Entity <|-- Implementation ArrowFunction <|-- ParametricArrowFunction Interface <|-- ParametricInterface NamedEntity <|-- Decorator Type <|-- Enum Class <|-- ParametricClass NamedEntity <|-- File Entity <|-- ImportClause StructuralEntity <|-- Property Entity <|-- Concretization ContainerEntity <|-- ScopingEntity ContainerEntity <|-- Type Function <|-- ParametricFunction SourceAnchor <|-- SourceTextAnchor SourcedEntity <|-- Comment Method <|-- ParametricMethod Object <|-- Entity Entity <|-- Reference NamedEntity <|-- ContainerEntity Entity <|-- ParameterConcretization ScopingEntity <|-- ScriptEntity Entity <|-- SourceAnchor SourcedEntity <|-- NamedEntity Type <|-- ParameterType Entity <|-- SourcedEntity StructuralEntity <|-- Variable BehaviouralEntity <|-- ArrowFunction Method <|-- Accessor StructuralEntity <|-- EnumValue BehaviouralEntity <|-- Function NamedEntity <|-- Alias ContainerEntity <|-- BehaviouralEntity ScriptEntity <|-- Module SourcedEntity <|-- JSDoc ScopingEntity <|-- Namespace Variable <|-- implicitVariable AbstractGroup <|-- Model Type <|-- PrimitiveType StructuralEntity <|-- Parameter NamedEntity <|-- Folder Entity <|-- Entity Entity <|-- SourceLanguage Entity <|-- Invocation BehaviouralEntity <|-- Method NamedEntity <|-- StructuralEntity TStructuralEntity <|.. StructuralEntity TInvocable <|.. TMethod TMethodMetrics <|.. TMethod TNamedEntity <|.. TMethod TEntityCreator <|.. FamixTypeScriptModel TTypedEntity <|.. TMethod TWithImplicitVariables <|.. TMethod TWithLocalVariables <|.. TMethod TFileSystemEntity <|.. TFolder TNamedEntity <|.. TNamespace TSourceEntity <|.. TNamespace TEntityMetaLevelDependency <|.. TNamespace TInheritance <|.. Inheritance TWithParameters <|.. TMethod TWithStatements <|.. TMethod TIndexedFileNavigation <|.. IndexedFileAnchor TEntityMetaLevelDependency <|.. TMethod TImplementable <|.. Interface TInvocationsReceiver <|.. Interface TWithAttributes <|.. Interface TWithInheritances <|.. Interface TWithMethods <|.. Interface TAssociation <|.. TConcretization TAccess <|.. Access TAssociation <|.. TInvocation THasSignature <|.. TInvocation TCanBeAbstract <|.. Class TCanImplement <|.. Class TClass <|.. Class TClassMetrics <|.. Class TImportable <|.. Class TLCOMMetrics <|.. Class TWithAccesses <|.. Class TWithInvocations <|.. Class TClassMetrics <|.. Class TImplementation <|.. Implementation TParametricEntity <|.. ParametricArrowFunction TParametricEntity <|.. ParametricInterface TImportable <|.. Decorator TAssociation <|.. TImport TEnum <|.. Enum TImportable <|.. Enum TStructuralEntity <|.. TLocalVariable TParametricEntity <|.. ParametricClass TType <|.. TPrimitiveType TFile <|.. File TAttribute <|.. Property TCanBeClassSide <|.. Property THasVisibility <|.. Property TImport <|.. ImportClause TSourceAnchor <|.. THasImmediateSource TType <|.. TConcreteParameterType TConcretization <|.. Concretization TWithTypes <|.. TWithClasses TWithAccesses <|.. ScopingEntity TWithInvocations <|.. ScopingEntity TConcreteParameterType <|.. Type TImportable <|.. Type TType <|.. Type TWithMethods <|.. Type TParametricEntity <|.. ParametricFunction THasImmediateSource <|.. SourceTextAnchor TComment <|.. Comment TParametricEntity <|.. ParametricMethod THasSignature <|.. TFunction TInvocable <|.. TFunction TNamedEntity <|.. TFunction TTypedEntity <|.. TFunction TWithLocalVariables <|.. TFunction TWithParameters <|.. TFunction TWithStatements <|.. TFunction TEntityMetaLevelDependency <|.. TFunction TWithClasses <|.. ContainerEntity TWithFunctions <|.. ContainerEntity TWithLocalVariables <|.. ContainerEntity TWithInterfaces <|.. ContainerEntity TFileSystemEntity <|.. TFile TAssociation <|.. TInheritance TEntityMetaLevelDependency <|.. TComment TParameterConcretization <|.. ParameterConcretization TWithStatements <|.. ScriptEntity TSourceAnchor <|.. SourceAnchor TWithTypes <|.. TWithInterfaces TType <|.. TEnum TWithEnumValues <|.. TEnum TImportable <|.. NamedEntity TGenericParameterType <|.. ParameterType TTypedEntity <|.. ParameterType TWithInheritances <|.. ParameterType TInvocationsReceiver <|.. NamedEntity TNamedEntity <|.. NamedEntity TEntityMetaLevelDependency <|.. NamedEntity TAssociation <|.. TParameterConcretization TImportable <|.. Variable TLocalVariable <|.. Variable TFileAnchor <|.. TIndexedFileNavigation TDefinedInModule <|.. ArrowFunction TFunction <|.. ArrowFunction TStructuralEntity <|.. TParameter TImportable <|.. ArrowFunction TInvocable <|.. ArrowFunction TAccessible <|.. TStructuralEntity TNamedEntity <|.. TStructuralEntity TSourceEntity <|.. TStructuralEntity TTypedEntity <|.. TStructuralEntity TEntityMetaLevelDependency <|.. TStructuralEntity TSourceEntity <|.. SourcedEntity TWithComments <|.. SourcedEntity TStructuralEntity <|.. TEnumValue TAssociation <|.. TAccess TEnumValue <|.. EnumValue TDefinedInModule <|.. Function TFunction <|.. Function TImportable <|.. Function TInvocable <|.. Function TImportable <|.. Alias TImportable <|.. Module TWithImports <|.. Module TWithLocalVariables <|.. Module TDefinedInModule <|.. Namespace TImportable <|.. Namespace TNamespace <|.. Namespace TNamedEntity <|.. TType TReferenceable <|.. TType TSourceEntity <|.. TType TEntityMetaLevelDependency <|.. TType TPrimitiveType <|.. PrimitiveType TStructuralEntity <|.. TAttribute TInvocationsReceiver <|.. TClass TType <|.. TClass TWithAttributes <|.. TClass TWithComments <|.. TClass TParameter <|.. Parameter TWithInheritances <|.. TClass TWithMethods <|.. TClass TSourceEntity <|.. TWithStatements TWithAccesses <|.. TWithStatements TFolder <|.. Folder TSourceLanguage <|.. SourceLanguage TWithInvocations <|.. TWithStatements TWithReferences <|.. TWithStatements THasSignature <|.. Invocation TInvocation <|.. Invocation TCanBeAbstract <|.. Method TAssociation <|.. TImplementation TCanBeClassSide <|.. Method THasKind <|.. Method THasVisibility <|.. Method TImportable <|.. Method TMethod <|.. Method TType <|.. TGenericParameterType THasSignature <|.. TMethod TInvocation "outgoingInvocations*" -- "sender" TWithInvocations TWithAttributes "parentType" o-- "attributes*" TAttribute TParametricEntity "genericEntities*" -- "genericParameters*" TGenericParameterType TWithInheritances "subclass" -- "superInheritances*" TInheritance TWithInheritances "superclass" -- "subInheritances*" TInheritance TParameterConcretization "concretizations*" -- "genericParameter" TGenericParameterType TImplementable "interface" -- "implementations*" TImplementation TImport "incomingImports*" -- "importedEntity" TImportable TConcreteParameterType "concreteParameter" -- "generics*" TParameterConcretization TLocalVariable "localVariables*" --o "parentBehaviouralEntity" TWithLocalVariables Model -- "sourceLanguage" TSourceLanguage TConcretization "concretizations*" -- "parameterConcretizations*" TParameterConcretization Decorator "decorators*" -- "decoratedEntity" NamedEntity TImport "outgoingImports*" -- "importingEntity" TWithImports TConcretization "concretizations*" -- "genericEntity" TParametricEntity TWithMethods "parentType" o-- "methods*" TMethod TConcreteParameterType "concreteParameters*" -- "concreteEntities*" TParametricEntity TFunction "functions*" --o "functionOwner" TWithFunctions TWithTypes "typeContainer" o-- "types*" TType TInvocationsReceiver "receiver" -- "receivingInvocations*" TInvocation TInvocable "candidates*" -- "incomingInvocations*" TInvocation TCanImplement "implementingClass" -- "interfaceImplementations*" TImplementation TConcretization "genericization" -- "concreteEntity" TParametricEntity TSourceEntity "element" -- "sourceAnchor" TSourceAnchor TWithAccesses "accessor" -- "accesses*" TAccess TTypedEntity "typedEntities*" -- "declaredType" TType TComment "comments*" --o "commentedEntity" TWithComments @enduml \ No newline at end of file +@startuml hide empty members skinparam class { BackgroundColor white ArrowColor black BorderColor darkGray } class Entity <<(C,white)>> #CCFFFF { } class TMethod <<(T,white)External>> #FFFFCC { } class NamedEntity <<(C,white)>> #CCFFFF { } class TImport <<(T,white)External>> #FFFFCC { } class TFolder <<(T,white)External>> #FFFFCC { Number numberOfEmptyLinesOfText Number totalNumberOfLinesOfText Number numberOfFiles Number numberOfFolders } class Enum <<(C,white)>> #CCFFFF { } class ContainerEntity <<(C,white)>> #CCFFFF { } class Interface <<(C,white)>> #CCFFFF { } class TTypedEntity <<(T,white)External>> #FFFFCC { } class THasVisibility <<(T,white)External>> #FFFFCC { Boolean isProtected Boolean isPublic String visibility Boolean isPackageVisibility Boolean isPrivate } class File <<(C,white)>> #CCFFFF { } class TImportable <<(T,white)External>> #FFFFCC { } class ParameterType <<(C,white)>> #CCFFFF { } class IndexedFileAnchor <<(C,white)>> #CCFFFF { } class TCanImplement <<(T,white)External>> #FFFFCC { } class Module <<(C,white)>> #CCFFFF { } class TFile <<(T,white)External>> #FFFFCC { Number numberOfEmptyLinesOfText Number totalNumberOfLinesOfText Number numberOfCharacters Number averageNumberOfCharactersPerLine Number numberOfKiloBytes Number numberOfBytes } class TInvocationsReceiver <<(T,white)External>> #FFFFCC { } class TWithStatements <<(T,white)External>> #FFFFCC { Number numberOfStatements } class TInheritance <<(T,white)External>> #FFFFCC { } class TNamedEntity <<(T,white)External>> #FFFFCC { String name } class Namespace <<(C,white)>> #CCFFFF { } class FamixTypeScriptModel <<(C,white)>> #CCFFFF { } class Parameter <<(C,white)>> #CCFFFF { } class Implementation <<(C,white)>> #CCFFFF { } class ParametricFunction <<(C,white)>> #CCFFFF { } class Alias <<(C,white)>> #CCFFFF { } class Folder <<(C,white)>> #CCFFFF { } class TAttribute <<(T,white)External>> #FFFFCC { Number hierarchyNestingLevel } class TInvocation <<(T,white)External>> #FFFFCC { } class TComment <<(T,white)External>> #FFFFCC { String content } class THasImmediateSource <<(T,white)External>> #FFFFCC { String source } class Entity <<(C,white)External>> #FFFFCC { Boolean isTagged Number numberOfTags Boolean isDead } class Method <<(C,white)>> #CCFFFF { } class ParametricInterface <<(C,white)>> #CCFFFF { } class Concretization <<(C,white)>> #CCFFFF { } class THasKind <<(T,white)External>> #FFFFCC { Boolean isConstructor Boolean isSetter String kind Boolean isGetter Boolean isConstant } class TWithLocalVariables <<(T,white)External>> #FFFFCC { } class Comment <<(C,white)>> #CCFFFF { Boolean isJSDoc } class TClassMetrics <<(T,white)>> #CCFFFF { } class TWithComments <<(T,white)External>> #FFFFCC { Number numberOfComments Boolean hasComments } class TWithInheritances <<(T,white)External>> #FFFFCC { Number subclassHierarchyDepth Number numberOfSubclasses Number hierarchyNestingLevel Number numberOfDirectSubclasses } class TWithAttributes <<(T,white)External>> #FFFFCC { Number numberOfAttributes } class TParameterConcretization <<(T,white)External>> #FFFFCC { } class TClassMetrics <<(T,white)External>> #FFFFCC { Number numberOfLocallyDefinedMethods Number numberOfMethodsOverridden Number totalNumberOfSubclasses Number numberOfAttributesInherited Number numberOfMethodsInHierarchy Number numberOfMethodsInherited } class BehaviouralEntity <<(C,white)>> #CCFFFF { } class TCanBeClassSide <<(T,white)External>> #FFFFCC { Boolean isClassSide } class Property <<(C,white)>> #CCFFFF { Boolean isJavaScriptPrivate Boolean isDefinitelyAssigned Boolean readOnly Boolean isOptional } class ArrowFunction <<(C,white)>> #CCFFFF { } class TWithInterfaces <<(T,white)>> #CCFFFF { } class TWithAccesses <<(T,white)External>> #FFFFCC { } class TParametricEntity <<(T,white)External>> #FFFFCC { } class Decorator <<(C,white)>> #CCFFFF { String expression } class TWithInvocations <<(T,white)External>> #FFFFCC { Number numberOfOutgoingInvocations } class ParametricClass <<(C,white)>> #CCFFFF { } class TClass <<(T,white)External>> #FFFFCC { Number weightOfAClass Boolean isTestCase } class TLCOMMetrics <<(T,white)External>> #FFFFCC { Number lcom3 Number lcom2 } class TSourceLanguage <<(T,white)External>> #FFFFCC { } class Accessor <<(C,white)>> #CCFFFF { } class EnumValue <<(C,white)>> #CCFFFF { } class TWithFunctions <<(T,white)External>> #FFFFCC { } class Inheritance <<(C,white)>> #CCFFFF { } class TInvocable <<(T,white)External>> #FFFFCC { } class TStructuralEntity <<(T,white)External>> #FFFFCC { } class TFunctionMetrics <<(T,white)>> #CCFFFF { } class ScopingEntity <<(C,white)>> #CCFFFF { } class TLocalVariable <<(T,white)External>> #FFFFCC { } class TPrimitiveType <<(T,white)External>> #FFFFCC { } class Invocation <<(C,white)>> #CCFFFF { } class Model <<(C,white)External>> #FFFFCC { Number numberOfLinesOfCode Number numberOfModelClasses Number numberOfMethods Number numberOfClassesPerPackage Number averageCyclomaticComplexity Number numberOfLinesOfCodePerClass Number numberOfModelMethods Number numberOfClasses Number numberOfLinesOfCodePerPackage Number numberOfClassesPerPackage Number numberOfLinesOfCodePerMethod } class SourcedEntity <<(C,white)>> #CCFFFF { } class TWithImports <<(T,white)External>> #FFFFCC { } class TAccess <<(T,white)External>> #FFFFCC { Boolean isReadWriteUnknown Boolean isRead Boolean isWrite } class ParametricMethod <<(C,white)>> #CCFFFF { } class TEntityMetaLevelDependency <<(T,white)External>> #FFFFCC { Number numberOfInternalProviders Number fanIn Number numberOfInternalClients Number numberOfExternalProviders Number numberOfDeadChildren Number numberOfExternalClients Boolean isRoot Number numberOfChildren Boolean isDead Number fanOut } class TCanBeAbstract <<(T,white)External>> #FFFFCC { Boolean isAbstract } class Variable <<(C,white)>> #CCFFFF { } class TSourceAnchor <<(T,white)External>> #FFFFCC { Number lineCount } class TConcreteParameterType <<(T,white)External>> #FFFFCC { } class Class <<(C,white)>> #CCFFFF { } class TGenericParameterType <<(T,white)External>> #FFFFCC { } class ImportClause <<(C,white)>> #CCFFFF { } class SourceLanguage <<(C,white)>> #CCFFFF { } class SourceTextAnchor <<(C,white)>> #CCFFFF { } class ParameterConcretization <<(C,white)>> #CCFFFF { } class Access <<(C,white)>> #CCFFFF { } class TWithMethods <<(T,white)External>> #FFFFCC { Number numberOfAbstractMethods Number numberOfMethods Number tightClassCohesion Number weightedMethodCount } class TIndexedFileNavigation <<(T,white)External>> #FFFFCC { Number endPos Number startPos } class TNamespace <<(T,white)External>> #FFFFCC { } class TWithClasses <<(T,white)External>> #FFFFCC { Number numberOfClasses } class JSDoc <<(C,white)>> #CCFFFF { } class TEnum <<(T,white)External>> #FFFFCC { } class THasSignature <<(T,white)External>> #FFFFCC { String signature } class PrimitiveType <<(C,white)>> #CCFFFF { } class TImplementation <<(T,white)External>> #FFFFCC { } class Function <<(C,white)>> #CCFFFF { } class Reference <<(C,white)>> #CCFFFF { } class StructuralEntity <<(C,white)>> #CCFFFF { } class ScriptEntity <<(C,white)>> #CCFFFF { } class implicitVariable <<(C,white)>> #CCFFFF { } class TDefinedInModule <<(T,white)External>> #FFFFCC { } class TType <<(T,white)External>> #FFFFCC { } class TConcretization <<(T,white)External>> #FFFFCC { } class Type <<(C,white)>> #CCFFFF { } class SourceAnchor <<(C,white)>> #CCFFFF { } class TImplementable <<(T,white)External>> #FFFFCC { } class TEnumValue <<(T,white)External>> #FFFFCC { } class TParameter <<(T,white)External>> #FFFFCC { } class TEntityCreator <<(T,white)>> #CCFFFF { } class ParametricArrowFunction <<(C,white)>> #CCFFFF { } class TSourceEntity <<(T,white)External>> #FFFFCC { Number numberOfLinesOfCode Number duplicationRate Number numberOfLinesOfCodeWithMoreThanOneCharacter Boolean containsReplicas Boolean isStub String sourceText } class TWithTypes <<(T,white)External>> #FFFFCC { } class TFunction <<(T,white)External>> #FFFFCC { } Entity <|-- Entity SourcedEntity <|-- NamedEntity Type <|-- Enum Type <|-- Interface NamedEntity <|-- ContainerEntity NamedEntity <|-- File Type <|-- ParameterType SourceAnchor <|-- IndexedFileAnchor ScriptEntity <|-- Module ScopingEntity <|-- Namespace Entity <|-- Implementation Function <|-- ParametricFunction NamedEntity <|-- Folder NamedEntity <|-- Alias Model <|-- FamixTypeScriptModel StructuralEntity <|-- Parameter Object <|-- Entity BehaviouralEntity <|-- Method Interface <|-- ParametricInterface Entity <|-- Concretization SourcedEntity <|-- Comment ContainerEntity <|-- BehaviouralEntity StructuralEntity <|-- Property BehaviouralEntity <|-- ArrowFunction NamedEntity <|-- Decorator Class <|-- ParametricClass Method <|-- Accessor StructuralEntity <|-- EnumValue Entity <|-- Inheritance ContainerEntity <|-- ScopingEntity AbstractGroup <|-- Model Entity <|-- Invocation Entity <|-- SourcedEntity Method <|-- ParametricMethod StructuralEntity <|-- Variable Type <|-- Class Entity <|-- ImportClause Entity <|-- SourceLanguage Entity <|-- ParameterConcretization SourceAnchor <|-- SourceTextAnchor Entity <|-- Access SourcedEntity <|-- JSDoc Type <|-- PrimitiveType BehaviouralEntity <|-- Function Entity <|-- Reference ScopingEntity <|-- ScriptEntity ContainerEntity <|-- Type ArrowFunction <|-- ParametricArrowFunction Entity <|-- SourceAnchor NamedEntity <|-- StructuralEntity Variable <|-- implicitVariable TInvocable <|.. TFunction TNamedEntity <|.. TFunction TTypedEntity <|.. TFunction TWithLocalVariables <|.. TFunction TWithParameters <|.. TFunction TWithStatements <|.. TFunction TEntityMetaLevelDependency <|.. TFunction THasSignature <|.. TMethod TImportable <|.. NamedEntity TInvocationsReceiver <|.. NamedEntity TNamedEntity <|.. NamedEntity TEntityMetaLevelDependency <|.. NamedEntity TAssociation <|.. TImport TInvocable <|.. TMethod TFileSystemEntity <|.. TFolder TMethodMetrics <|.. TMethod TNamedEntity <|.. TMethod TTypedEntity <|.. TMethod TWithImplicitVariables <|.. TMethod TWithLocalVariables <|.. TMethod TWithParameters <|.. TMethod TWithStatements <|.. TMethod TEntityMetaLevelDependency <|.. TMethod TEnum <|.. Enum TImportable <|.. Enum TImplementable <|.. Interface TInvocationsReceiver <|.. Interface TWithAttributes <|.. Interface TWithInheritances <|.. Interface TWithMethods <|.. Interface TWithClasses <|.. ContainerEntity TWithFunctions <|.. ContainerEntity TWithLocalVariables <|.. ContainerEntity TWithInterfaces <|.. ContainerEntity TFile <|.. File TGenericParameterType <|.. ParameterType TTypedEntity <|.. ParameterType TWithInheritances <|.. ParameterType TIndexedFileNavigation <|.. IndexedFileAnchor TImportable <|.. Module TFileSystemEntity <|.. TFile TWithImports <|.. Module TWithLocalVariables <|.. Module TDefinedInModule <|.. Namespace TImportable <|.. Namespace TNamespace <|.. Namespace TImplementation <|.. Implementation TParametricEntity <|.. ParametricFunction TSourceEntity <|.. TWithStatements TFolder <|.. Folder TImportable <|.. Alias TWithAccesses <|.. TWithStatements TWithInvocations <|.. TWithStatements TWithReferences <|.. TWithStatements TEntityCreator <|.. FamixTypeScriptModel TAssociation <|.. TInheritance TParameter <|.. Parameter TStructuralEntity <|.. TAttribute TAssociation <|.. TInvocation THasSignature <|.. TInvocation TSourceAnchor <|.. THasImmediateSource TEntityMetaLevelDependency <|.. TComment TParametricEntity <|.. ParametricInterface TConcretization <|.. Concretization TCanBeAbstract <|.. Method TCanBeClassSide <|.. Method THasKind <|.. Method THasVisibility <|.. Method TComment <|.. Comment TImportable <|.. Method TMethod <|.. Method TAssociation <|.. TParameterConcretization TAttribute <|.. Property TCanBeClassSide <|.. Property THasVisibility <|.. Property TDefinedInModule <|.. ArrowFunction TFunction <|.. ArrowFunction TImportable <|.. ArrowFunction TInvocable <|.. ArrowFunction TFunctionMetrics <|.. ArrowFunction TWithTypes <|.. TWithInterfaces TImportable <|.. Decorator TParametricEntity <|.. ParametricClass TInvocationsReceiver <|.. TClass TType <|.. TClass TWithAttributes <|.. TClass TWithComments <|.. TClass TWithInheritances <|.. TClass TWithMethods <|.. TClass TEnumValue <|.. EnumValue TInheritance <|.. Inheritance TAccessible <|.. TStructuralEntity TNamedEntity <|.. TStructuralEntity TSourceEntity <|.. TStructuralEntity TTypedEntity <|.. TStructuralEntity TEntityMetaLevelDependency <|.. TStructuralEntity TStructuralEntity <|.. TLocalVariable TWithAccesses <|.. ScopingEntity TWithInvocations <|.. ScopingEntity TType <|.. TPrimitiveType THasSignature <|.. Invocation TSourceEntity <|.. SourcedEntity TWithComments <|.. SourcedEntity TParametricEntity <|.. ParametricMethod TInvocation <|.. Invocation TAssociation <|.. TAccess TImportable <|.. Variable TLocalVariable <|.. Variable TType <|.. TConcreteParameterType TCanBeAbstract <|.. Class TCanImplement <|.. Class TClass <|.. Class TClassMetrics <|.. Class TImport <|.. ImportClause TImportable <|.. Class TLCOMMetrics <|.. Class TParameterConcretization <|.. ParameterConcretization TSourceLanguage <|.. SourceLanguage TWithAccesses <|.. Class TWithInvocations <|.. Class TClassMetrics <|.. Class THasImmediateSource <|.. SourceTextAnchor TType <|.. TGenericParameterType TAccess <|.. Access TFileAnchor <|.. TIndexedFileNavigation TNamedEntity <|.. TNamespace TSourceEntity <|.. TNamespace TWithTypes <|.. TWithClasses TEntityMetaLevelDependency <|.. TNamespace TPrimitiveType <|.. PrimitiveType TType <|.. TEnum TWithStatements <|.. ScriptEntity TDefinedInModule <|.. Function TFunction <|.. Function TImportable <|.. Function TInvocable <|.. Function TFunctionMetrics <|.. Function TNamedEntity <|.. TType TReferenceable <|.. TType TSourceEntity <|.. TType TEntityMetaLevelDependency <|.. TType TAssociation <|.. TConcretization TConcreteParameterType <|.. Type TStructuralEntity <|.. TParameter TImportable <|.. Type TType <|.. Type TParametricEntity <|.. ParametricArrowFunction TWithMethods <|.. Type TSourceAnchor <|.. SourceAnchor TStructuralEntity <|.. StructuralEntity TWithEnumValues <|.. TEnum TAssociation <|.. TImplementation TStructuralEntity <|.. TEnumValue THasSignature <|.. TFunction TWithLocalVariables "parentBehaviouralEntity" o-- "localVariables*" TLocalVariable TParametricEntity "genericEntities*" -- "genericParameters*" TGenericParameterType TSourceAnchor "sourceAnchor" -- "element" TSourceEntity TMethod "methods*" --o "parentType" TWithMethods TImport "outgoingImports*" -- "importingEntity" TWithImports TInvocation "outgoingInvocations*" -- "sender" TWithInvocations TParametricEntity "genericEntity" -- "concretizations*" TConcretization TImplementation "implementations*" -- "interface" TImplementable TCanImplement "implementingClass" -- "interfaceImplementations*" TImplementation TWithFunctions "functionOwner" o-- "functions*" TFunction TWithAccesses "accessor" -- "accesses*" TAccess Model -- "sourceLanguage" TSourceLanguage TInvocationsReceiver "receiver" -- "receivingInvocations*" TInvocation TParametricEntity "concreteEntities*" -- "concreteParameters*" TConcreteParameterType TInheritance "subInheritances*" -- "superclass" TWithInheritances TType "types*" --o "typeContainer" TWithTypes TParametricEntity "concreteEntity" -- "genericization" TConcretization TInvocation "incomingInvocations*" -- "candidates*" TInvocable TParameterConcretization "concretizations*" -- "genericParameter" TGenericParameterType NamedEntity "decoratedEntity" -- "decorators*" Decorator TInheritance "superInheritances*" -- "subclass" TWithInheritances TImport "incomingImports*" -- "importedEntity" TImportable TComment "comments*" --o "commentedEntity" TWithComments TParameterConcretization "generics*" -- "concreteParameter" TConcreteParameterType TTypedEntity "typedEntities*" -- "declaredType" TType TAttribute "attributes*" --o "parentType" TWithAttributes TParameterConcretization "parameterConcretizations*" -- "concretizations*" TConcretization @enduml \ No newline at end of file diff --git a/doc-uml/FamixTypeScript-traits.svg b/doc-uml/FamixTypeScript-traits.svg index 1366780..7f78db7 100644 --- a/doc-uml/FamixTypeScript-traits.svg +++ b/doc-uml/FamixTypeScript-traits.svg @@ -1 +1 @@ -«External»TConcretization«External»TImplementableFamixTypeScriptModel«External»TInvocationsReceiver«External»TCanBeAbstractBoolean isAbstract«External»TFolderNumber totalNumberOfLinesOfTextNumber numberOfFoldersNumber numberOfFilesNumber numberOfEmptyLinesOfText«External»TNamespaceInheritanceIndexedFileAnchor«External»TInvocable«External»TWithMethodsNumber numberOfMethodsNumber weightedMethodCountNumber tightClassCohesionNumber numberOfAbstractMethodsAccess«External»THasSignatureString signature«External»TInvocationFileClassImplementationDecoratorString expressionParametricInterface«External»TImportEnumParametricClassParametricArrowFunction«External»TConcreteParameterType«External»TWithClassesNumber numberOfClassesTEntityCreator«External»THasImmediateSourceString source«External»THasVisibilityBoolean isProtectedBoolean isPublicBoolean isPrivateString visibilityBoolean isPackageVisibilityImportClause«External»TLocalVariable«External»TPrimitiveTypeConcretizationPropertyBoolean isOptionalBoolean isDefinitelyAssignedBoolean isJavaScriptPrivateBoolean readOnly«External»TCanBeClassSideBoolean isClassSide«External»THasKindBoolean isGetterString kindBoolean isSetterBoolean isConstructorBoolean isConstant«External»TWithInheritancesNumber numberOfSubclassesNumber hierarchyNestingLevelNumber numberOfDirectSubclassesNumber subclassHierarchyDepth«External»TSourceLanguageScopingEntityTypeParametricFunction«External»TTypedEntitySourceTextAnchorCommentBoolean isJSDocParametricMethod«External»TFunctionContainerEntityEntityBoolean isDeadBoolean isTaggedNumber numberOfTagsReference«External»TWithTypes«External»TFileNumber numberOfBytesNumber numberOfCharactersNumber totalNumberOfLinesOfTextNumber numberOfEmptyLinesOfTextNumber numberOfKiloBytesNumber averageNumberOfCharactersPerLine«External»TWithInvocationsNumber numberOfOutgoingInvocations«External»TInheritance«External»TCommentString contentParameterConcretization«External»TWithImportsScriptEntitySourceAnchor«External»TParametricEntityTWithInterfaces«External»TEnumNamedEntity«External»TWithAttributesNumber numberOfAttributes«External»TWithLocalVariablesParameterType«External»TWithCommentsNumber numberOfCommentsBoolean hasComments«External»TNamedEntityString name«External»TWithFunctionsSourcedEntity«External»TParameterConcretization«External»TSourceEntityBoolean isStubNumber numberOfLinesOfCodeNumber duplicationRateString sourceTextBoolean containsReplicasNumber numberOfLinesOfCodeWithMoreThanOneCharacterVariable«External»TIndexedFileNavigationNumber endPosNumber startPosAccessorArrowFunction«External»TParameter«External»TStructuralEntity«External»TWithAccesses«External»TEnumValue«External»TAccessBoolean isReadBoolean isReadWriteUnknownBoolean isWriteEnumValue«External»TSourceAnchorNumber lineCountFunctionAliasBehaviouralEntity«External»TEntityMetaLevelDependencyBoolean isDeadBoolean isRootNumber numberOfChildrenNumber fanInNumber numberOfInternalProvidersNumber numberOfDeadChildrenNumber numberOfExternalProvidersNumber numberOfExternalClientsNumber numberOfInternalClientsNumber fanOutModuleJSDocNamespaceimplicitVariable«External»ModelNumber numberOfClassesPerPackageNumber numberOfModelClassesNumber numberOfModelMethodsNumber numberOfLinesOfCodePerClassNumber numberOfMethodsNumber numberOfClassesPerPackageNumber numberOfClassesNumber numberOfLinesOfCodePerMethodNumber averageCyclomaticComplexityNumber numberOfLinesOfCodePerPackageNumber numberOfLinesOfCode«External»TType«External»TImportablePrimitiveType«External»TAttributeNumber hierarchyNestingLevel«External»TClassBoolean isTestCaseNumber weightOfAClassParameter«External»TWithStatementsNumber numberOfStatements«External»TDefinedInModuleFolderSourceLanguageInvocation«External»TCanImplementMethod«External»TImplementationTClassMetricsNumber totalNumberOfSubclassesNumber numberOfLocallyDefinedMethodsNumber numberOfMethodsInheritedNumber numberOfAttributesInheritedNumber numberOfMethodsOverriddenNumber numberOfMethodsInHierarchy«External»TGenericParameterType«External»TMethodStructuralEntity«External»TLCOMMetricsNumber lcom3Number lcom2InterfaceObjectAbstractGroupTMethodMetricsTWithImplicitVariablesTFileSystemEntityTWithParametersTAssociationTWithEnumValuesTFileAnchorTAccessibleTReferenceableTWithReferencesdecorators*decoratedEntityoutgoingInvocations*senderparentTypeattributes*genericEntities*genericParameters*subclasssuperInheritances*superclasssubInheritances*concretizations*genericParameterinterfaceimplementations*incomingImports*importedEntityconcreteParametergenerics*localVariables*parentBehaviouralEntitysourceLanguageconcretizations*parameterConcretizations*outgoingImports*importingEntityconcretizations*genericEntitygenericizationconcreteEntityparentTypemethods*concreteParameters*concreteEntities*functions*functionOwnertypeContainertypes*receiverreceivingInvocations*candidates*incomingInvocations*implementingClassinterfaceImplementations*elementsourceAnchoraccessoraccesses*typedEntities*declaredTypecomments*commentedEntity \ No newline at end of file +«External»EntityBoolean isTaggedNumber numberOfTagsBoolean isDead«External»TMethodNamedEntity«External»TImport«External»TFolderNumber numberOfEmptyLinesOfTextNumber totalNumberOfLinesOfTextNumber numberOfFilesNumber numberOfFoldersEnumContainerEntityInterface«External»TTypedEntity«External»THasVisibilityBoolean isProtectedBoolean isPublicString visibilityBoolean isPackageVisibilityBoolean isPrivateFile«External»TImportableParameterTypeIndexedFileAnchor«External»TCanImplementModule«External»TFileNumber numberOfEmptyLinesOfTextNumber totalNumberOfLinesOfTextNumber numberOfCharactersNumber averageNumberOfCharactersPerLineNumber numberOfKiloBytesNumber numberOfBytes«External»TInvocationsReceiver«External»TWithStatementsNumber numberOfStatements«External»TInheritance«External»TNamedEntityString nameNamespaceFamixTypeScriptModelParameterImplementationParametricFunctionAliasFolder«External»TAttributeNumber hierarchyNestingLevel«External»TInvocation«External»TCommentString content«External»THasImmediateSourceString sourceMethodParametricInterfaceConcretization«External»THasKindBoolean isConstructorBoolean isSetterString kindBoolean isGetterBoolean isConstant«External»TWithLocalVariablesCommentBoolean isJSDoc«External»TClassMetricsNumber numberOfLocallyDefinedMethodsNumber numberOfMethodsOverriddenNumber totalNumberOfSubclassesNumber numberOfAttributesInheritedNumber numberOfMethodsInHierarchyNumber numberOfMethodsInherited«External»TWithCommentsNumber numberOfCommentsBoolean hasComments«External»TWithInheritancesNumber subclassHierarchyDepthNumber numberOfSubclassesNumber hierarchyNestingLevelNumber numberOfDirectSubclasses«External»TWithAttributesNumber numberOfAttributes«External»TParameterConcretizationBehaviouralEntity«External»TCanBeClassSideBoolean isClassSidePropertyBoolean isJavaScriptPrivateBoolean isDefinitelyAssignedBoolean readOnlyBoolean isOptionalArrowFunctionTWithInterfaces«External»TWithAccesses«External»TParametricEntityDecoratorString expression«External»TWithInvocationsNumber numberOfOutgoingInvocationsParametricClass«External»TClassNumber weightOfAClassBoolean isTestCase«External»TLCOMMetricsNumber lcom3Number lcom2«External»TSourceLanguageAccessorEnumValue«External»TWithFunctionsInheritance«External»TInvocable«External»TStructuralEntityTFunctionMetricsScopingEntity«External»TLocalVariable«External»TPrimitiveTypeInvocation«External»ModelNumber numberOfLinesOfCodeNumber numberOfModelClassesNumber numberOfMethodsNumber numberOfClassesPerPackageNumber averageCyclomaticComplexityNumber numberOfLinesOfCodePerClassNumber numberOfModelMethodsNumber numberOfClassesNumber numberOfLinesOfCodePerPackageNumber numberOfClassesPerPackageNumber numberOfLinesOfCodePerMethodSourcedEntity«External»TWithImports«External»TAccessBoolean isReadWriteUnknownBoolean isReadBoolean isWriteParametricMethod«External»TEntityMetaLevelDependencyNumber numberOfInternalProvidersNumber fanInNumber numberOfInternalClientsNumber numberOfExternalProvidersNumber numberOfDeadChildrenNumber numberOfExternalClientsBoolean isRootNumber numberOfChildrenBoolean isDeadNumber fanOut«External»TCanBeAbstractBoolean isAbstractVariable«External»TSourceAnchorNumber lineCount«External»TConcreteParameterTypeClass«External»TGenericParameterTypeImportClauseSourceLanguageSourceTextAnchorParameterConcretizationAccess«External»TWithMethodsNumber numberOfAbstractMethodsNumber numberOfMethodsNumber tightClassCohesionNumber weightedMethodCount«External»TIndexedFileNavigationNumber endPosNumber startPos«External»TNamespace«External»TWithClassesNumber numberOfClassesJSDoc«External»TEnum«External»THasSignatureString signaturePrimitiveType«External»TImplementationFunctionReferenceStructuralEntityScriptEntityimplicitVariable«External»TDefinedInModule«External»TType«External»TConcretizationTypeSourceAnchor«External»TImplementable«External»TEnumValue«External»TParameterTEntityCreatorParametricArrowFunction«External»TSourceEntityNumber numberOfLinesOfCodeNumber duplicationRateNumber numberOfLinesOfCodeWithMoreThanOneCharacterBoolean containsReplicasBoolean isStubString sourceText«External»TWithTypes«External»TFunctionObjectAbstractGroupTWithParametersTAssociationTFileSystemEntityTMethodMetricsTWithImplicitVariablesTWithReferencesTAccessibleTFileAnchorTReferenceableTWithEnumValuesdecoratedEntitydecorators*parentBehaviouralEntitylocalVariables*genericEntities*genericParameters*sourceAnchorelementmethods*parentTypeoutgoingImports*importingEntityoutgoingInvocations*sendergenericEntityconcretizations*concreteEntitygenericizationimplementations*interfaceimplementingClassinterfaceImplementations*functionOwnerfunctions*accessoraccesses*sourceLanguagereceiverreceivingInvocations*concreteEntities*concreteParameters*subInheritances*superclasssuperInheritances*subclasstypes*typeContainerincomingInvocations*candidates*concretizations*genericParameterincomingImports*importedEntitycomments*commentedEntitygenerics*concreteParametertypedEntities*declaredTypeattributes*parentTypeparameterConcretizations*concretizations* \ No newline at end of file diff --git a/doc-uml/FamixTypeScript.puml b/doc-uml/FamixTypeScript.puml index 0f34f03..2107bf1 100644 --- a/doc-uml/FamixTypeScript.puml +++ b/doc-uml/FamixTypeScript.puml @@ -1 +1 @@ -@startuml hide empty members skinparam class { BackgroundColor white ArrowColor black BorderColor darkGray } class SourceLanguage <<(C,white)>> #CCFFFF { } class ParameterConcretization <<(C,white)>> #CCFFFF { } class implicitVariable <<(C,white)>> #CCFFFF { } class ParameterType <<(C,white)>> #CCFFFF { } class SourceAnchor <<(C,white)>> #CCFFFF { } class JSDoc <<(C,white)>> #CCFFFF { } class Comment <<(C,white)>> #CCFFFF { Boolean isJSDoc } class ParametricInterface <<(C,white)>> #CCFFFF { } class SourceTextAnchor <<(C,white)>> #CCFFFF { } class FamixTypeScriptModel <<(C,white)>> #CCFFFF { } class BehaviouralEntity <<(C,white)>> #CCFFFF { } class PrimitiveType <<(C,white)>> #CCFFFF { } class Parameter <<(C,white)>> #CCFFFF { } class Type <<(C,white)>> #CCFFFF { } class Alias <<(C,white)>> #CCFFFF { } class Entity <<(C,white)>> #CCFFFF { } class Namespace <<(C,white)>> #CCFFFF { } class ContainerEntity <<(C,white)>> #CCFFFF { } class Property <<(C,white)>> #CCFFFF { Boolean isJavaScriptPrivate Boolean isDefinitelyAssigned Boolean isOptional Boolean readOnly } class Enum <<(C,white)>> #CCFFFF { } class Interface <<(C,white)>> #CCFFFF { } class Folder <<(C,white)>> #CCFFFF { } class ParametricMethod <<(C,white)>> #CCFFFF { } class Invocation <<(C,white)>> #CCFFFF { } class ImportClause <<(C,white)>> #CCFFFF { } class NamedEntity <<(C,white)>> #CCFFFF { } class Variable <<(C,white)>> #CCFFFF { } class ParametricFunction <<(C,white)>> #CCFFFF { } class Decorator <<(C,white)>> #CCFFFF { String expression } class Access <<(C,white)>> #CCFFFF { } class Class <<(C,white)>> #CCFFFF { } class TWithInterfaces <<(T,white)>> #CCFFFF { } class TEntityCreator <<(T,white)>> #CCFFFF { } class Method <<(C,white)>> #CCFFFF { } class File <<(C,white)>> #CCFFFF { } class Module <<(C,white)>> #CCFFFF { } class IndexedFileAnchor <<(C,white)>> #CCFFFF { } class EnumValue <<(C,white)>> #CCFFFF { } class SourcedEntity <<(C,white)>> #CCFFFF { } class TClassMetrics <<(T,white)>> #CCFFFF { } class ArrowFunction <<(C,white)>> #CCFFFF { } class Concretization <<(C,white)>> #CCFFFF { } class Inheritance <<(C,white)>> #CCFFFF { } class StructuralEntity <<(C,white)>> #CCFFFF { } class Accessor <<(C,white)>> #CCFFFF { } class Reference <<(C,white)>> #CCFFFF { } class ScriptEntity <<(C,white)>> #CCFFFF { } class Implementation <<(C,white)>> #CCFFFF { } class ScopingEntity <<(C,white)>> #CCFFFF { } class ParametricClass <<(C,white)>> #CCFFFF { } class Function <<(C,white)>> #CCFFFF { } class ParametricArrowFunction <<(C,white)>> #CCFFFF { } Entity <|-- SourceLanguage Entity <|-- ParameterConcretization Type <|-- ParameterType Variable <|-- implicitVariable Entity <|-- SourceAnchor SourcedEntity <|-- JSDoc SourcedEntity <|-- Comment Interface <|-- ParametricInterface SourceAnchor <|-- SourceTextAnchor ContainerEntity <|-- BehaviouralEntity Type <|-- PrimitiveType NamedEntity <|-- Alias StructuralEntity <|-- Parameter ContainerEntity <|-- Type NamedEntity <|-- ContainerEntity ScopingEntity <|-- Namespace StructuralEntity <|-- Property Type <|-- Enum Type <|-- Interface NamedEntity <|-- Folder Entity <|-- Invocation SourcedEntity <|-- NamedEntity Method <|-- ParametricMethod Entity <|-- ImportClause StructuralEntity <|-- Variable Function <|-- ParametricFunction NamedEntity <|-- Decorator Entity <|-- Access Type <|-- Class BehaviouralEntity <|-- Method NamedEntity <|-- File ScriptEntity <|-- Module SourceAnchor <|-- IndexedFileAnchor Entity <|-- SourcedEntity BehaviouralEntity <|-- ArrowFunction Entity <|-- Concretization StructuralEntity <|-- EnumValue Entity <|-- Inheritance NamedEntity <|-- StructuralEntity Method <|-- Accessor Entity <|-- Reference ScopingEntity <|-- ScriptEntity Entity <|-- Implementation ContainerEntity <|-- ScopingEntity Class <|-- ParametricClass BehaviouralEntity <|-- Function ArrowFunction <|-- ParametricArrowFunction TEntityCreator <|.. FamixTypeScriptModel TWithInterfaces <|.. ContainerEntity TClassMetrics <|.. Class NamedEntity "decoratedEntity" -- "decorators*" Decorator @enduml \ No newline at end of file +@startuml hide empty members skinparam class { BackgroundColor white ArrowColor black BorderColor darkGray } class Parameter <<(C,white)>> #CCFFFF { } class Alias <<(C,white)>> #CCFFFF { } class Type <<(C,white)>> #CCFFFF { } class BehaviouralEntity <<(C,white)>> #CCFFFF { } class SourceLanguage <<(C,white)>> #CCFFFF { } class TEntityCreator <<(T,white)>> #CCFFFF { } class SourcedEntity <<(C,white)>> #CCFFFF { } class ContainerEntity <<(C,white)>> #CCFFFF { } class Access <<(C,white)>> #CCFFFF { } class ParametricInterface <<(C,white)>> #CCFFFF { } class TWithInterfaces <<(T,white)>> #CCFFFF { } class Decorator <<(C,white)>> #CCFFFF { String expression } class Function <<(C,white)>> #CCFFFF { } class Variable <<(C,white)>> #CCFFFF { } class Namespace <<(C,white)>> #CCFFFF { } class Implementation <<(C,white)>> #CCFFFF { } class Folder <<(C,white)>> #CCFFFF { } class StructuralEntity <<(C,white)>> #CCFFFF { } class ScriptEntity <<(C,white)>> #CCFFFF { } class NamedEntity <<(C,white)>> #CCFFFF { } class JSDoc <<(C,white)>> #CCFFFF { } class ParameterConcretization <<(C,white)>> #CCFFFF { } class File <<(C,white)>> #CCFFFF { } class Module <<(C,white)>> #CCFFFF { } class ParametricClass <<(C,white)>> #CCFFFF { } class ParametricFunction <<(C,white)>> #CCFFFF { } class Method <<(C,white)>> #CCFFFF { } class PrimitiveType <<(C,white)>> #CCFFFF { } class implicitVariable <<(C,white)>> #CCFFFF { } class Property <<(C,white)>> #CCFFFF { Boolean isDefinitelyAssigned Boolean readOnly Boolean isOptional Boolean isJavaScriptPrivate } class Concretization <<(C,white)>> #CCFFFF { } class Invocation <<(C,white)>> #CCFFFF { } class FamixTypeScriptModel <<(C,white)>> #CCFFFF { } class ImportClause <<(C,white)>> #CCFFFF { } class ParametricMethod <<(C,white)>> #CCFFFF { } class Inheritance <<(C,white)>> #CCFFFF { } class Reference <<(C,white)>> #CCFFFF { } class Enum <<(C,white)>> #CCFFFF { } class IndexedFileAnchor <<(C,white)>> #CCFFFF { } class ScopingEntity <<(C,white)>> #CCFFFF { } class Comment <<(C,white)>> #CCFFFF { Boolean isJSDoc } class EnumValue <<(C,white)>> #CCFFFF { } class Accessor <<(C,white)>> #CCFFFF { } class SourceTextAnchor <<(C,white)>> #CCFFFF { } class TClassMetrics <<(T,white)>> #CCFFFF { } class Entity <<(C,white)>> #CCFFFF { } class ParametricArrowFunction <<(C,white)>> #CCFFFF { } class Class <<(C,white)>> #CCFFFF { } class TFunctionMetrics <<(T,white)>> #CCFFFF { } class ParameterType <<(C,white)>> #CCFFFF { } class Interface <<(C,white)>> #CCFFFF { } class ArrowFunction <<(C,white)>> #CCFFFF { } class SourceAnchor <<(C,white)>> #CCFFFF { } StructuralEntity <|-- Parameter NamedEntity <|-- Alias ContainerEntity <|-- Type ContainerEntity <|-- BehaviouralEntity Entity <|-- SourceLanguage Entity <|-- SourcedEntity NamedEntity <|-- ContainerEntity Entity <|-- Access Interface <|-- ParametricInterface NamedEntity <|-- Decorator BehaviouralEntity <|-- Function StructuralEntity <|-- Variable ScopingEntity <|-- Namespace Entity <|-- Implementation NamedEntity <|-- Folder NamedEntity <|-- StructuralEntity ScopingEntity <|-- ScriptEntity SourcedEntity <|-- NamedEntity SourcedEntity <|-- JSDoc NamedEntity <|-- File Entity <|-- ParameterConcretization ScriptEntity <|-- Module Class <|-- ParametricClass Function <|-- ParametricFunction BehaviouralEntity <|-- Method Type <|-- PrimitiveType StructuralEntity <|-- Property Entity <|-- Concretization Entity <|-- Invocation Variable <|-- implicitVariable Entity <|-- ImportClause Method <|-- ParametricMethod Entity <|-- Inheritance Entity <|-- Reference Type <|-- Enum ContainerEntity <|-- ScopingEntity SourceAnchor <|-- IndexedFileAnchor SourcedEntity <|-- Comment StructuralEntity <|-- EnumValue SourceAnchor <|-- SourceTextAnchor ArrowFunction <|-- ParametricArrowFunction Method <|-- Accessor Type <|-- Class Type <|-- ParameterType Type <|-- Interface BehaviouralEntity <|-- ArrowFunction Entity <|-- SourceAnchor TWithInterfaces <|.. ContainerEntity TFunctionMetrics <|.. Function TEntityCreator <|.. FamixTypeScriptModel TClassMetrics <|.. Class TFunctionMetrics <|.. ArrowFunction Decorator "decorators*" -- "decoratedEntity" NamedEntity @enduml \ No newline at end of file diff --git a/doc-uml/FamixTypeScript.svg b/doc-uml/FamixTypeScript.svg index ead54e9..61eff45 100644 --- a/doc-uml/FamixTypeScript.svg +++ b/doc-uml/FamixTypeScript.svg @@ -1 +1 @@ -SourceLanguageParameterConcretizationimplicitVariableParameterTypeSourceAnchorJSDocCommentBoolean isJSDocParametricInterfaceSourceTextAnchorFamixTypeScriptModelBehaviouralEntityPrimitiveTypeParameterTypeAliasEntityNamespaceContainerEntityPropertyBoolean isJavaScriptPrivateBoolean isDefinitelyAssignedBoolean isOptionalBoolean readOnlyEnumInterfaceFolderParametricMethodInvocationImportClauseNamedEntityVariableParametricFunctionDecoratorString expressionAccessClassTWithInterfacesTEntityCreatorMethodFileModuleIndexedFileAnchorEnumValueSourcedEntityTClassMetricsArrowFunctionConcretizationInheritanceStructuralEntityAccessorReferenceScriptEntityImplementationScopingEntityParametricClassFunctionParametricArrowFunctiondecoratedEntitydecorators* \ No newline at end of file +ParameterAliasTypeBehaviouralEntitySourceLanguageTEntityCreatorSourcedEntityContainerEntityAccessParametricInterfaceTWithInterfacesDecoratorString expressionFunctionVariableNamespaceImplementationFolderStructuralEntityScriptEntityNamedEntityJSDocParameterConcretizationFileModuleParametricClassParametricFunctionMethodPrimitiveTypeimplicitVariablePropertyBoolean isDefinitelyAssignedBoolean readOnlyBoolean isOptionalBoolean isJavaScriptPrivateConcretizationInvocationFamixTypeScriptModelImportClauseParametricMethodInheritanceReferenceEnumIndexedFileAnchorScopingEntityCommentBoolean isJSDocEnumValueAccessorSourceTextAnchorTClassMetricsEntityParametricArrowFunctionClassTFunctionMetricsParameterTypeInterfaceArrowFunctionSourceAnchordecorators*decoratedEntity \ No newline at end of file diff --git a/src/Famix-TypeScript-Entities/FamixTypeScriptArrowFunction.class.st b/src/Famix-TypeScript-Entities/FamixTypeScriptArrowFunction.class.st index 08bb822..1819421 100644 --- a/src/Famix-TypeScript-Entities/FamixTypeScriptArrowFunction.class.st +++ b/src/Famix-TypeScript-Entities/FamixTypeScriptArrowFunction.class.st @@ -49,8 +49,8 @@ I represent a TypeScript arrow function. Class { #name : 'FamixTypeScriptArrowFunction', #superclass : 'FamixTypeScriptBehaviouralEntity', - #traits : 'FamixTDefinedInModule + FamixTFunction + FamixTImportable + FamixTInvocable', - #classTraits : 'FamixTDefinedInModule classTrait + FamixTFunction classTrait + FamixTImportable classTrait + FamixTInvocable classTrait', + #traits : 'FamixTDefinedInModule + FamixTFunction + FamixTImportable + FamixTInvocable + FamixTypeScriptTFunctionMetrics', + #classTraits : 'FamixTDefinedInModule classTrait + FamixTFunction classTrait + FamixTImportable classTrait + FamixTInvocable classTrait + FamixTypeScriptTFunctionMetrics classTrait', #category : 'Famix-TypeScript-Entities-Entities', #package : 'Famix-TypeScript-Entities', #tag : 'Entities' diff --git a/src/Famix-TypeScript-Entities/FamixTypeScriptFunction.class.st b/src/Famix-TypeScript-Entities/FamixTypeScriptFunction.class.st index a0927c2..66ddbdf 100644 --- a/src/Famix-TypeScript-Entities/FamixTypeScriptFunction.class.st +++ b/src/Famix-TypeScript-Entities/FamixTypeScriptFunction.class.st @@ -49,8 +49,8 @@ I represent a TypeScript function. Class { #name : 'FamixTypeScriptFunction', #superclass : 'FamixTypeScriptBehaviouralEntity', - #traits : 'FamixTDefinedInModule + FamixTFunction + FamixTImportable + FamixTInvocable', - #classTraits : 'FamixTDefinedInModule classTrait + FamixTFunction classTrait + FamixTImportable classTrait + FamixTInvocable classTrait', + #traits : 'FamixTDefinedInModule + FamixTFunction + FamixTImportable + FamixTInvocable + FamixTypeScriptTFunctionMetrics', + #classTraits : 'FamixTDefinedInModule classTrait + FamixTFunction classTrait + FamixTImportable classTrait + FamixTInvocable classTrait + FamixTypeScriptTFunctionMetrics classTrait', #category : 'Famix-TypeScript-Entities-Entities', #package : 'Famix-TypeScript-Entities', #tag : 'Entities' diff --git a/src/Famix-TypeScript-Entities/FamixTypeScriptTFunctionMetrics.trait.st b/src/Famix-TypeScript-Entities/FamixTypeScriptTFunctionMetrics.trait.st new file mode 100644 index 0000000..a3e5dc5 --- /dev/null +++ b/src/Famix-TypeScript-Entities/FamixTypeScriptTFunctionMetrics.trait.st @@ -0,0 +1,15 @@ +Trait { + #name : 'FamixTypeScriptTFunctionMetrics', + #category : 'Famix-TypeScript-Entities-Traits', + #package : 'Famix-TypeScript-Entities', + #tag : 'Traits' +} + +{ #category : 'meta' } +FamixTypeScriptTFunctionMetrics classSide >> annotation [ + + + + + ^ self +] diff --git a/src/Famix-TypeScript-Extensions/FamixTypeScriptTFunctionMetrics.extension.st b/src/Famix-TypeScript-Extensions/FamixTypeScriptTFunctionMetrics.extension.st new file mode 100644 index 0000000..cc3cca5 --- /dev/null +++ b/src/Famix-TypeScript-Extensions/FamixTypeScriptTFunctionMetrics.extension.st @@ -0,0 +1,13 @@ +Extension { #name : 'FamixTypeScriptTFunctionMetrics' } + +{ #category : '*Famix-TypeScript-Extensions' } +FamixTypeScriptTFunctionMetrics >> cyclomaticComplexity [ + + + ^ self lookUpPropertyNamed: #cyclomaticComplexity computedAs: [ self computeCyclomaticComplexity ] +] + +{ #category : '*Famix-TypeScript-Extensions' } +FamixTypeScriptTFunctionMetrics >> cyclomaticComplexity: aNumber [ + self cacheAt: #cyclomaticComplexity put: aNumber +] diff --git a/src/Famix-TypeScript-Generator/FamixTWithSourceLanguages.extension.st b/src/Famix-TypeScript-Generator/FamixTWithSourceLanguages.extension.st index 8a7b66a..130b75b 100644 --- a/src/Famix-TypeScript-Generator/FamixTWithSourceLanguages.extension.st +++ b/src/Famix-TypeScript-Generator/FamixTWithSourceLanguages.extension.st @@ -1,6 +1,6 @@ -Extension { #name : #FamixTWithSourceLanguages } +Extension { #name : 'FamixTWithSourceLanguages' } -{ #category : #'*Famix-TypeScript-Generator' } +{ #category : '*Famix-TypeScript-Generator' } FamixTWithSourceLanguages >> formattedSourceText [ ^ self sourceLanguage ifNotNil: [ :language | language format: self sourceText from: self ] diff --git a/src/Famix-TypeScript-Generator/FamixTypeScriptGenerator.class.st b/src/Famix-TypeScript-Generator/FamixTypeScriptGenerator.class.st index ed86b8e..c11f5c6 100644 --- a/src/Famix-TypeScript-Generator/FamixTypeScriptGenerator.class.st +++ b/src/Famix-TypeScript-Generator/FamixTypeScriptGenerator.class.st @@ -1,6 +1,6 @@ Class { - #name : #FamixTypeScriptGenerator, - #superclass : #FamixBasicInfrastructureGenerator, + #name : 'FamixTypeScriptGenerator', + #superclass : 'FamixBasicInfrastructureGenerator', #instVars : [ 'access', 'class', @@ -44,30 +44,32 @@ Class { 'parametricClass', 'parametricInterface', 'concretization', - 'parameterConcretization' + 'parameterConcretization', + 'tTypeScriptFunctionMetrics' ], - #category : #'Famix-TypeScript-Generator' + #category : 'Famix-TypeScript-Generator', + #package : 'Famix-TypeScript-Generator' } -{ #category : #accessing } +{ #category : 'accessing' } FamixTypeScriptGenerator class >> packageName [ ^ #'Famix-TypeScript-Entities' ] -{ #category : #accessing } +{ #category : 'accessing' } FamixTypeScriptGenerator class >> packageNameForAnnotations [ ^ #'FamixTypeScript' ] -{ #category : #accessing } +{ #category : 'accessing' } FamixTypeScriptGenerator class >> prefix [ ^ #'FamixTypeScript' ] -{ #category : #accessing } +{ #category : 'accessing' } FamixTypeScriptGenerator class >> translationDictionary [ | classNames associations | @@ -79,7 +81,7 @@ FamixTypeScriptGenerator class >> translationDictionary [ ^ Dictionary newFrom: associations. ] -{ #category : #comments } +{ #category : 'comments' } FamixTypeScriptGenerator >> commentForConcretization [ "To verify" ^ '## Relations @@ -113,7 +115,7 @@ FamixTypeScriptGenerator >> commentForConcretization [ ' ] -{ #category : #'as yet unclassified' } +{ #category : 'as yet unclassified' } FamixTypeScriptGenerator >> commentForParameterConcretization [ ^ '## Relations ====================== @@ -146,7 +148,7 @@ FamixTypeScriptGenerator >> commentForParameterConcretization [ ' ] -{ #category : #comments } +{ #category : 'comments' } FamixTypeScriptGenerator >> commentForTCanBeInterface [ ^ 'I allow an entity to be an interface abstraction ex: @@ -158,13 +160,13 @@ public interface Flyable { ```' ] -{ #category : #definition } +{ #category : 'definition' } FamixTypeScriptGenerator >> commentForTWithInterfaces [ ^ 'I can contain interfaces (Packages, Methods, Classes...)' ] -{ #category : #definition } +{ #category : 'definition' } FamixTypeScriptGenerator >> defineClasses [ super defineClasses. @@ -221,7 +223,7 @@ FamixTypeScriptGenerator >> defineClasses [ "self defineComments." ] -{ #category : #definition } +{ #category : 'definition' } FamixTypeScriptGenerator >> defineHierarchy [ super defineHierarchy. @@ -283,6 +285,7 @@ FamixTypeScriptGenerator >> defineHierarchy [ function --|> #TDefinedInModule. function --|> #TInvocable. function --|> #TImportable. + function --|> #TFunctionMetrics. parametricFunction --|> function. parametricFunction --|> #TParametricEntity. @@ -292,6 +295,7 @@ FamixTypeScriptGenerator >> defineHierarchy [ arrowFunction --|> #TDefinedInModule. arrowFunction --|> #TInvocable. arrowFunction --|> #TImportable. + arrowFunction --|> #TFunctionMetrics. "Duplicate code for adding cyclomatic complexity" parametricArrowFunction --|> arrowFunction. parametricArrowFunction --|> #TParametricEntity. @@ -416,7 +420,7 @@ FamixTypeScriptGenerator >> defineHierarchy [ parameterType --|> #TWithInheritances. ] -{ #category : #definition } +{ #category : 'definition' } FamixTypeScriptGenerator >> defineProperties [ super defineProperties. @@ -444,13 +448,13 @@ FamixTypeScriptGenerator >> defineProperties [ comment: 'Method is a setter'" ] -{ #category : #definition } +{ #category : 'definition' } FamixTypeScriptGenerator >> defineRelations [ super defineRelations. (decorator property: #decoratedEntity) *- (namedEntity property: #decorators). ] -{ #category : #definition } +{ #category : 'definition' } FamixTypeScriptGenerator >> defineTraits [ super defineTraits. @@ -458,9 +462,10 @@ FamixTypeScriptGenerator >> defineTraits [ tWithInterfaces comment: self commentForTWithInterfaces. tTypeScriptClassMetrics := builder newTraitNamed: #TClassMetrics. + tTypeScriptFunctionMetrics := builder newTraitNamed: #TFunctionMetrics. ] -{ #category : #definition } +{ #category : 'definition' } FamixTypeScriptGenerator >> newBuilder [ ^ super newBuilder diff --git a/src/Famix-TypeScript-Generator/package.st b/src/Famix-TypeScript-Generator/package.st index 41f22d4..44ed289 100644 --- a/src/Famix-TypeScript-Generator/package.st +++ b/src/Famix-TypeScript-Generator/package.st @@ -1 +1 @@ -Package { #name : #'Famix-TypeScript-Generator' } +Package { #name : 'Famix-TypeScript-Generator' }