
# 代码模型
#### 2.3.1代码模型的元素要与指定的代码模型层次结构保持一致
**详细描述**
在代码模型中创建代码元素，代码元素在架构树中与上下级元素的关系层级结构要与代码模型架构方案配置定义的层次结构一致，即该代码元素与上层父级元素、下层子级元素的父子关系（也称上下层级关系）、以及它们之间的连线关系和方向指向，都要与层级规则中定义的保持一致。
**检查范围**
当前模型工程中的所有符合定义规则的代码模型元素（定义规则：工程设置 \> 构造型下，绑定到4+1视图 : 代码模型的基础构造型与自定义构造型元素才认定为代码模型元素）。
1. 在代码模型图上创建出来的代码模型元素；
2. 引用到代码模型中的代码元素（包含关联空间中的引用的代码元素）；
**如何检查**
查询基于代码模型图构建的代码模型架构树，找出与架构方案不匹配（标红）的元素。
**正确示例**
架构层级规则示例：
关联父级：配置的是当前层级元素与上一层级的元素之间的连线类型和父子关系指向。
嵌套：是否支持当前类型的元素与同类型元素建立关系。
嵌套关系：当前类型的元素与同类型元素建立连线关系类型，默认为父指向子（即被指向的一方为子）。
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002522469877.png "点击放大")
图中绘图示例1--包含的父子关系：
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001944385524.png "点击放大")
架构信息树展示结果：
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002490110140.png "点击放大")
当架构树上没有标红元素，就没有2.3.1的检查错误结果。
**错误示例**
场景一：方案中没有配置子节点，但是在绘图设计中绘制了子节点。
File画在Repo Grp下是子节点，但方案中Repo Grp没有配置File为子节点。
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001944544876.png)
架构信息树中报红：
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002522469991.png "点击放大")
架构检查结果：
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001971783705.png "点击放大")
#### 2.3.2代码模型不能存在游离的代码模型元素
**详细描述**
代码模型元素不能独立存在于代码架构树之外，必须要与架构树上的代码元素建立关联关系。
**检查范围**
当前模型工程中的所有符合定义规则的代码模型元素（定义规则：工程设置 \> 构造型下，绑定到4+1视图 : 代码模型的基础构造型与自定义构造型元素才认定为代码模型元素）。
1. 在代码模型图上创建出来的代码模型元素；
2. 引用到代码模型中的代码元素（包含关联空间中的引用的代码元素）；
**如何检查**
查询基于模型图（只有代码模型图内的代码元素参与构树）并展示不匹配元素构建的代码模型架构树，找出所有代码元素中不在架构树中的代码元素。
**正确示例**
按代码架构方案构建的架构信息树：
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002490110278.png "点击放大")
模型图示例：
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001971663985.png "点击放大")
**错误示例**
场景一：存在没有连线且没有与包含关系的独立元素。
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001944544860.png "点击放大")
检查结果：
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002490110322.png "点击放大")
#### 2.3.3代码模型同一个树的同一层上不能有同名同类型的元素
**详细描述**
在同一棵代码架构信息树上，在同一个父元素节点下面，不能存在类型相同，并且名称也相同的元素。
**检查范围**
当前模型工程中的所有符合定义规则的代码模型元素（定义规则：工程设置 \> 构造型下，绑定到4+1视图 : 代码模型的基础构造型与自定义构造型元素才认定为代码模型元素）。
1. 在代码模型图上创建出来的代码模型元素；
2. 引用到代码模型中的代码元素（包含关联空间中的引用的代码元素）；
**如何检查**
查询基于代码模型图（只有代码模型图内的代码元素参与构树）构建的代码模型架构树，找出同一节点下同名同类型的代码元素。
**正确示例**
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002490270464.png "点击放大")
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001944544840.png "点击放大")
**错误示例**
场景一：同父元素下存在同类型且同名称的元素。
按逻辑规则构建的架构信息树，树上不会显示异常。
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001944544888.png "点击放大")
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002522470267.png "点击放大")
检查结果：
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001944544848.png "点击放大")
#### 2.3.4代码模型Repo元素需要配置对应的代码仓
**详细描述**
代码模型中的Repo元素的基础属性仓库地址字段必须有值。
**检查范围**
当前模型工程中的所有符合定义规则的代码模型创建的Repo元素。
1. 在代码模型图上创建出来的代码模型元素；
2. 引用到代码模型中的代码元素（包含关联空间中的引用的代码元素）；
**如何检查**
查询基于代码模型中创建的Repo或者关联工程引用进来的代码模型创建的Repo元素，检查这些Repo元素的仓库地址是否配置代码仓链接。不会检查仓库地址是否有效。
**正确示例**
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002542691437.png "点击放大")
**错误示例**
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002511091556.png "点击放大")
#### 2.3.5代码元素与逻辑元素只能是manifest关系，且代码元素只能对应一个逻辑元素
**详细描述**
代码元素与逻辑元素之间的连线类型只能使用manifest连线，且指向方向由代码元素指向逻辑元素；一个代码元素只能连到一个逻辑元素上，而逻辑元素可以连线多个代码元素，即由多个代码元素指向构成。
**检查范围**
当前模型工程中的所有符合定义规则的代码模型元素（定义规则：工程设置 \> 构造型下，绑定到4+1视图 : 代码模型的基础构造型与自定义构造型元素才认定为代码模型元素）。
1. 在代码模型图上创建出来的代码模型元素；
2. 引用到代码模型中的代码元素（包含关联空间中的引用的代码元素）；
**如何检查**
检查所有的代码模型图中的代码元素与逻辑元素之间的连线关系是否为manifest连线关系，并检查代码元素是否只与一个逻辑元素有manifest关系，如果有2个及以上的逻辑元素则不合规则，会列到检查结果中。
**正确示例**
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001971783697.png "点击放大")
**错误示例**
场景一：一个代码元素对应到两个及两个以上的逻辑元素（一对多）。
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001944385560.png "点击放大")
架构规则检查结果，列出不符合检查项的代码元素：
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001971663997.png "点击放大")
 #### 2.3.6逻辑元素至少与一个代码元素存在manifest关系
**详细描述**
逻辑模型或从逻辑模型引用到代码模型中的逻辑元素至少要与一个代码元素中间有manifest连线关系。
2.3.6默认配置包含[3.1.1](https://support.huaweicloud.com/usermanual-codeartsmodeling/modeling_ug_0002_9_1_3_1.html#modeling_ug_0002_9_1_3_1__section102671121027)的逻辑元素（服务，微服务，组件），使用2.3.6检查项即可。
**检查范围**
1. 在逻辑模型图上创建出来的逻辑模型元素；
2. 引用到代码模型中的逻辑元素；
3. 排除Interface、Provided Interface、Required Interface元素。
**如何检查**
检查规则支持配置元素，勾选要检查的元素（默认勾选服务、微服务、组件、模块），检查元素在代码模型图中是否与代码元素存在manifest连线关系，由代码元素指向逻辑元素，不存在对应的代码元素则不符合规则 ，将该类逻辑元素列出到检查结果中。
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002544357193.png "点击放大")
**正确示例**
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001944385564.png "点击放大")
**错误示例**
引用过来的逻辑元素Interface没有对应任何代码元素。
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000001944544872.png)
