AssessmentModel
The component that receives the assessment data, and serializes it in a standard model.
Responsibilities
Receive tool-executions data
Receive code-describing data
Represent all data in a standard model
Serialize and deserialize data as needed
Resolve aggregation requirements in-memory
Minimize usage of memory and time resources
Provide a mechanism to traverse the data after the loading process finishes
(to support reports generation and show summary data)
Upload data to Mobilize.Net servers
Components:
AssessmentModelWriter: writes tool executions data and create the code model writer.
AssessmentModelReader: reads tools executions data and create the code model reader.
CodeModelWriter: writes the code describing data.
CodeModelReader: reads the code describing data.
AssessmentModelWriter
Used by the controller to create and populate the local data repository.
In charge of the upload process to our servers.
Provides the CodeModelWriter that will be passed to the Code Processor.
Allows loading data about the executed Controller and Code Processors, as well as their results and severe errors that are experienced.
CodeModelWriter
Provided by the AssessmentModelWriter and used by the Code Processor to load the data that describes the code.
AssessmentModelReader
After the data has been loaded and the execution process finished, the AssessmentModelReader can be used to read the data about the tool execution results and to get the CodeModelReader
Note: readers can only be used after the execution process is finished and the data is loaded.
CodeModelReader
Used by the CodeProcessor to read the final data and create reports or other output data.
Model
The model is divided into two areas:
Execution Model:
Loaded by the controller
Contains data about the executed controller and code processors, its results and errors if any.
Contains telemetry data
Code Model
Loaded by the Code Processor
Contains data that describes the code, its projects, files, types, members, parsing errors, notifications, library elements usage, language migration coverage, etc.
Each code processor can load different parts of the model, depending on its capabilities to extract the data.
Execution Model
Code model
Explanation for some properties
CustomFile
It represents an attachment related to the Assessment Model. It is currently not supported.
LibraryElement
DeclaringTypeId
Corresponds to the declared type of the element. For instance, in an assignment such as "IEnumerable<string> names = new List<string>();" the declaring type will be IEnumerable<string>
ReferenceTypeId
Corresponds to the type of the referenced type. For instance, in an assignment such as "IEnumerable<string> names = new List<string>();" the referenced type will be List<string>
Domain
Indicates the technolog/domain of the element. Two example values can be xaml and cs, which indicate that the element corresponds to XAML and to C#, respectively.
Signature Attribute
Indicates the way in which an attribute works
Examples:
TwoWayBinding
OneWayBinding
Literal
Attached
ElementSignature
Indicates the name of the property that is being referenced
Examples:
Margin
Grid.Row
Pending Work
Custom Files must be added
Product Execution should include enough information to associate the execution to the client
ProductExecution.LicenseId should be the Active License during the execution
Review the need for Project Kind
Review if the SupportByThenKind and SupportStatusKind are equivalent (if they are, one of them could be removed)
Maybe the method used to Upload the DB can be optimized
It involves two parts
Assessment API class: Assessment Uploader (and other auxiliary classes)
Assessment DB stored procedure: LoadAssessmentModelFromTempTables
Maybe it will improve the performance if:
We created index for the temporal tables
Maybe it will be cleaner if:
We used table parameters
How to Populate the Code Model
Under Construction...
Last updated