Language Concept
→ a language concept can be any syntactic or semantic programming language construct that may be relevant for the analysis with jQAssistant
- an individual language concept object is usually represented by a single node or connection in the property graph of Neo4j
- concept objects may be nested
- every concept object type has a unique String ID used by concept maps
Examples:
- source code file
- a class declaration
- a method declaration
- a dependency between two classes
Implementation
classDiagram
class Concept {
<<abstract>>
+String CONCEPT_ID$
+Map~String, Object~ metadata
+toJSON() Map
}
class ConcreteConcept {
+String CONCEPT_ID = "concrete-id"$
+String someConceptProperty
}
Concept <|-- ConcreteConcept
- all classes modeling language concepts should inherit from abstract
Conceptclass CONCEPT_IDfield ofConceptclass should be static and abstracttoJSON()should contain no processing logic and specifically exclude any values stored undermetadata- as it usually returns all non-
metadatabasic fields per default, it can be provided as a default implementation by theConceptbase class - the return value should be some object or collection that can easily be exported to a JSON file
- as it usually returns all non-