MDS 配置规则
文档说明
本文用于整理 MDS 配置中的字段约束、组合约束、引用关系和跨配置一致性要求,重点说明 配置需要满足什么条件 以及 哪些配置关系需要同时成立。本文主要面向需要进行 MDS 模型配置的开发者。
本文涉及的主要配置文件为:
service.json:组件基本信息、构建/测试依赖、运行态依赖和代码生成策略;model.json:类、资源树路径、接口、属性、方法、私有属性、权限和持久化约束;types.json:组件自定义类型及其引用关系。
1. service.json 配置规则
1.1 组件基本字段
| 字段 | 必填性 | 配置要求 |
|---|---|---|
name | 必填 | 长度不大于 64 的非空字符串;组件名称全局唯一。允许 debug 组件名称与 maca 组件一致。 |
type | 必填 | 只能取 application、configuration、tool、library、command。 |
version | 必填 | 非空字符串;格式为 A.B.C,A、B、C 均为非负整数。 |
license | 必填 | 非空字符串。 |
deployConfig | 条件必填 | 当 type=application 时必须配置;取值为 xxx.service 样式的非空字符串;对应文件需要在 hica 或当前组件中存在。 |
1.2 构建依赖与测试依赖
dependencies 下的 test 和 build 均按对象数组进行约束。
| 字段 | 结构要求 | 元素要求 |
|---|---|---|
dependencies.test | 对象数组,可包含 0 到多个元素 | 每个元素只能包含 conan;conan 为非空字符串;/ 前表示被依赖组件,并要求组件有效。 |
dependencies.build | 对象数组,可包含 0 到多个元素 | 每个元素只能包含 conan;conan 为非空字符串;/ 前表示被依赖组件,并要求组件有效。 |
1.3 运行态依赖 required
required 为对象数组,可包含 0 到多个依赖项。每个依赖项必须包含 path 和 interface,并可按需配置 properties、optional 和 stage。
| 字段 | 必填性 | 配置要求 |
|---|---|---|
path | 必填 | 取值为 * 或有效的资源树对象路径。 |
interface | 必填 | 必须是有效定义的资源树接口。 |
properties | 选填 | 对象类型;属性必须在依赖接口中定义;属性值为字符串数组;数组元素仅允许 subscribe、read、write,数组可为空。 |
optional | 选填 | 只能取 true 或 false;true 表示弱依赖,修复建议中给出的默认值为 false。 |
stage | 选填 | 只能取 starting 或 running。 |
运行态依赖除字段格式正确外,还必须满足以下关系:
path对应资源树对象实现所依赖的interface;- 被依赖的资源树路径由其它组件的 MDS 管理;
- 组件不应依赖自己管理的资源树对象;
- 组件之间不能形成循环依赖。
1.4 codeGenPolicy
codeGenPolicy 必须为对象类型,其中包含 version 字段,且 version 为大于 0 的数字。
1.5 文件格式
service.json 必须是合法 JSON 文件。
2. model.json 配置规则
2.1 类定义
| 配置项 | 配置要求 |
|---|---|
| 类名 | 长度不大于 64 的非空字符串;使用大驼峰格式;全局唯一。 |
| 类名与资源树对象 | 类管理资源树对象时,类名必须与被管理资源树对象名称一致。 |
parent | 选填;取值必须是当前组件 MDS 中定义的其它类名。 |
path | 选填;存在时必须对应有效资源树路径;存在 parent 时可以使用以 :parent 开头的形式,计算后的真实路径仍必须有效。 |
类级 privilege | 仅类存在 path 时可配置;必须为字符串数组;数组元素只能使用规定权限值。 |
类级 privilege 的允许值为:
UserMgmt、BasicSetting、KVMMgmt、VMMMgmt、SecurityMgmt、PowerMgmt、DiagnoseMgmt、ReadOnly、ConfigureSelf。
当类管理的资源树属性或方法被接口映射引用时,需要保证相应权限已经配置:可以由所在 Path 提供权限;Path 未配置权限时,需要在具体属性或方法上配置权限。
2.2 类级持久化配置
| 字段 | 配置要求 |
|---|---|
tableName | 选填;以 t_ 开头;snake 风格;非空;只能包含小写字母和下划线。 |
tableName 唯一性 | 原则上全局唯一;仅两个类的 tableLocation 取值不同时允许重名。 |
tableName 有效性 | 配置后需要同时配置 tableType,或者至少存在一个资源树属性/私有属性被设置为持久化。 |
tableType | 仅存在 tableName 时可配置;取值为规定的持久化类型、Memory 或 SHM。 |
tableLocation | 选填;若配置只能取 Local;同时要求类存在 tableName。 |
tableType 允许值:
PermanentPerPoweroffPerResetPerTemporaryPerPoweroffPerRetainResetPerRetainTemporaryPerRetainMemorySHM
类配置 tableName 后,至少需要一个资源树属性或私有属性配置 primaryKey=true。
2.3 资源树接口 interfaces
interfaces 需要满足以下约束:
- 只有类存在
path时才可以配置; - 必须为对象类型;
- 每个接口 key 必须是有效定义的资源树接口,且不能重复;
- 接口必须由类的
path对应资源树对象实现; - 接口对象中明确受规则约束的子项为
properties和methods。
显式管理的资源树接口还应存在实际引用关系,至少满足以下一种情况:
- 被某个组件的
service.json依赖; - 被接口映射引用;
- 接口下存在属性在 CSR 中被其它对象引用。
否则该接口配置属于需要检查的无效管理关系。
2.4 资源树属性
2.4.1 属性配置
资源树属性必须已在对应资源树接口中定义,并且在当前接口配置中不能重复。
规则明确列出的属性配置项包括:
privilegeusagedefaultaliasprimaryKeyuniqueKeynotAllowNulldeprecated
2.4.2 属性 privilege
属性级 privilege 为选填对象。配置后必须同时包含 read 和 write,权限值只能使用:
UserMgmt、BasicSetting、KVMMgmt、VMMMgmt、SecurityMgmt、PowerMgmt、DiagnoseMgmt、ReadOnly、ConfigureSelf。
2.4.3 属性 usage
usage 为选填字符串数组,数组元素允许:
CSRPermanentPerPoweroffPerResetPerTemporaryPerPoweroffPerRetainResetPerRetainTemporaryPerRetainSHM
2.4.4 属性 default
default 为选填字段,需要同时满足:
- 默认值类型与属性定义类型一致;
- 默认值处于属性类型允许范围内;
- 属性存在校验规则时,默认值满足对应校验规则。
2.4.5 属性 alias
alias 需要满足:
- 为长度不大于 64 的非空字符串;
- 使用大驼峰格式;
- 在当前类中唯一;
- 不得与当前类管理的资源树属性或私有属性重名;
- 配置
alias的属性,至少存在一个由该类管理的其它接口具有同名属性,否则属于无效配置; - 不同接口存在同名属性,且该属性在 CSR 中配置或被其它属性引用时,最多允许其中一个同名属性不配置
alias。
2.5 资源树属性和私有属性共用的持久化约束
| 字段/关系 | 配置要求 |
|---|---|
类配置 tableName | 至少一个资源树属性或私有属性配置 primaryKey=true。 |
| 属性配置持久化字段 | 所属类必须配置 tableName。 |
primaryKey | 若出现只能取 true。 |
uniqueKey | 只能取 true 或 false;配置后属性必须是持久化属性。 |
notAllowNull | 只能取 true 或 false;配置后属性必须是持久化属性。 |
deprecated | 若出现只能取 true;属性必须持久化;不能为主键或唯一键;若 notAllowNull=true,必须存在默认值。 |
critical | 若出现只能取 true;属性必须是持久化属性。 |
sensitive | 若出现只能取 true;属性必须是持久化属性。 |
2.6 资源树方法
接口下的 methods 若配置:
- 必须为对象类型;
- 方法必须已在对应资源树接口中定义;
- 每个方法的 value 必须为对象;
- value 中只能配置
privilege。
方法 privilege 必须为字符串数组,允许值与类级权限相同。
2.7 私有属性
2.7.1 属性名称与类型
私有属性名称必须为长度不大于 64 的非空字符串,使用大驼峰格式,并在当前类的私有属性中命名唯一。
baseType 为必填字段。基础类型允许:
U8、U16、U32、U64、S8、S16、S32、S64、Boolean、Double、String。
同时允许引用本组件或资源树接口中的 Dictionary、Struct、Enum 自定义类型。
数组类型满足以下形式:
- 基础类型数组:在类型后增加
[],例如U8[]; - 自定义类型数组:
baseType使用Array,通过items引用自定义类型。
2.7.2 数值范围校验
minimum、maximum 仅数字类型可以配置。配置值必须位于对应数据类型的有效范围内;同时存在时满足:
minimum <= maximum
2.7.3 字符串校验
minLength、maxLength 仅字符串类型可以配置,同时存在时满足:
minLength <= maxLength
pattern 仅字符串类型可以配置,取值必须为非空字符串。
2.7.4 enum
enum 仅字符串、数字、浮点数类型可以配置;必须为数组;数组元素类型需要与属性类型一致,并满足对应类型的取值范围。
2.7.5 校验规则组合
私有属性校验规则分为:
- 范围校验:
minimum/maximum; - 长度校验:
minLength/maxLength; - 正则校验:
pattern; - 枚举校验:
enum。
只有长度校验与正则校验允许同时存在,其它不同类别的校验规则不能同时配置。
2.7.6 default、description 与 refInterface
私有属性 default 需要与属性类型一致、位于对应类型允许范围内,并在存在校验规则时满足对应校验。
description 为必填字段,必须是长度不超过 1024 的非空字符串。
refInterface 为选填字段。配置后需要同时满足:
- 取值为有效定义的资源树接口;
- 该接口已经在当前组件
service.json中声明依赖。
2.8 文件格式
model.json 必须是合法 JSON 文件。
3. types.json 与自定义类型规则
3.1 基本约束
MDS 自定义类型需要满足以下要求:
- 定义的自定义类型原则上应被当前 APP 的私有属性引用;
- 自定义类型之间不能形成循环依赖,包括结构体与结构体、结构体与字典、字典与字典之间的循环依赖;
types.json必须为合法 JSON 文件。
说明
未引用的类型属于需要检查的冗余配置。
3.2 自定义类型结构
| 类型/项目 | 配置要求 |
|---|---|
| 类型名称 | 长度不大于 64 的非空字符串;大驼峰格式;在对应文件中命名唯一。 |
| 自定义类型类别 | 支持 Enum、Struct、Dictionary 三类结构。 |
| Enum | 至少一个键值对;key 为长度不大于 64 的非空大驼峰字符串且唯一;value 为非负整数且不能重复。 |
| Struct | 至少一个成员;成员名为长度不大于 64 的非空大驼峰字符串且唯一;成员 value 为对象并包含 baseType。 |
| Dictionary | 有且仅有 key、value 两个成员;两者 value 均为对象并包含 baseType。 |
4. 跨配置一致性检查
MDS 配置除单字段合法性外,还需要保证不同文件、对象和字段之间的关系一致。
| 一致性关系 | 检查要求 |
|---|---|
required.path ↔ 资源树对象 | 路径必须有效。 |
required.interface ↔ 资源树接口 | 接口必须有效。 |
required.path ↔ required.interface | 路径对应对象必须实现所依赖接口,且由其它组件 MDS 管理。 |
| 组件 ↔ 自身管理资源 | 不应形成自依赖。 |
| 组件 ↔ 组件 | 不允许形成循环依赖。 |
| 类名 ↔ 资源树对象名称 | 类管理资源树对象时二者必须一致。 |
parent ↔ 当前组件类 | 父类必须在当前组件 MDS 中定义。 |
path ↔ 资源树路径 | 路径或基于 :parent 计算出的真实路径必须有效。 |
| 接口映射 ↔ MDS 权限 | 被接口映射引用的属性/方法必须具有相应权限配置。 |
interfaces ↔ 资源树对象 | 接口必须有效且由当前 path 实现。 |
alias ↔ 类内属性 | alias 需要唯一,且不能与资源树属性或私有属性重名。 |
持久化属性 ↔ tableName | 属性设置持久化时,所属类必须存在 tableName。 |
refInterface ↔ service.json | 私有属性引用接口时,当前组件必须声明对应接口依赖。 |
| 自定义类型 ↔ 私有属性 | 未被私有属性引用的类型属于需要检查的冗余配置。 |
| 自定义类型 ↔ 自定义类型 | 不允许循环依赖。 |
5. 参考规则
| 编号 | 模型分类 | 名称 | 规则描述 | 级别 | 错误提示 | 错误影响 | 修复建议 | 备注说明 | VPD门禁生效 | 存量问题已清理 |
|---|---|---|---|---|---|---|---|---|---|---|
| rule_mds_001 | MDS | MDS定义中组件name正确性检查 | MDS配置中,组件name为长度不大于64的非空字符串,必填字段。 | 严重 | 1、组件(1%)缺少name字段的定义,且定义不能为空串。2、组件(1%)的name长度不应大于64,当前长度(2%)。 | 若组件不定义name则会注册失败。 | 1、补充组件(1%)的name定义,不能为空串。2、修改name的定义,使其长度不大于64。 | |||
| rule_mds_002 | MDS | MDS定义中组件name唯一性检查 | MDS配置中,组件name全局唯一(允许debug组件的名称和maca组件一致)。 | 严重 | 组件(1%,2%)的name定义冲突,当前均为(3%)。 | 组件注册冲突,后者覆盖前者。 | 修改组件(1%,2%)的name定义,保证全局唯一性。 | |||
| rule_mds_003 | MDS | MDS定义中组件type正确性检查 | MDS配置中,组件type为必填字段,取值包含:application、configuration、tool、library、command。 | 严重 | 组件(1%)的type字段(2%)定义错误。 | 不能正确识别组件类别,管理上会造成误解。 | 修改组件(1%)的type字段,有效取值:application、configuration、tool、library、command。 | |||
| rule_mds_004 | MDS | MDS定义中组件version正确性检查 | MDS配置中,组件version为A.B.C样式的非空字符串,必填字段,A、B、C为非负整数。 | 一般 | 1、组件(1%)缺少version字段的定义。2、组件(1%)的version字段(2%)配置错误。 | 标准化规范定义。 | 1、补充(1%)组件version字段的定义。2、将version字段的定义改为A.B.C样式。 | |||
| rule_mds_005 | MDS | MDS定义中组件license正确性检查 | MDS配置中,组件license为非空字符串,必填字段。 | 一般 | 1、组件(1%)缺少license字段的定义。2、组件(1%)的license字段不能为空字符串。 | 标准化规范定义。 | 1、补充组件(1%)的license字段定义。2、组件(1%)的license字段不能为空字符串。 | |||
| rule_mds_006 | MDS | MDS定义中组件deployConfig正确性检查 | MDS配置中,若组件type配置为application,则deployConfig字段为必填,取值为xxx.service样式的非空字符串,配置所描述的文件在hica或本组件中存在定义,xxx为非空字符串。 | 严重 | 1、组件(1%)缺少deployConfig字段的定义。2、组件(1%)定义的deployConfig字段信息(2%)在本组件和hica组件中不存在。 | 组件无法启动。 | 1、补充组件(1%)的deployConfig字段定义。2、在本组件或hica组件中增加(1%)文件的定义。 | |||
| rule_mds_007 | MDS | MDS定义中测试依赖语法正确性检查 | MDS配置中,测试依赖关键字为“test”,配置在dependencies字段下,对象数组类型,可包含0到多个对象元素,每个对象元素只包含属性“conan”,该属性对应的属性值为非空字符串,属性值中“/”符号前为该组件测试依赖的其它组件,需检查依赖组件的有效性。 | 严重 | 组件(1%)的测试依赖字段(test)配置错误。 | 影响组件的集成测试。 | 参照rule_mds_007规则,修改组件(1%)的test字段配置。 | |||
| rule_mds_008 | MDS | MDS定义中编译依赖语法正确性检查 | MDS配置中,编译依赖关键字为“build”,配置在dependencies字段下,对象数组类型,可包含0到多个对象元素,每个对象元素只包含属性“conan”,该属性对应的属性值为非空字符串,属性值中“/”符号前为该组件编译依赖的其它组件,需检查依赖组件的有效性。 | 严重 | 组件(1%)的编译依赖字段(build)配置错误。 | 影响组件的构建。 | 参照rule_mds_008规则,修改组件(1%)的build字段配置。 | |||
| rule_mds_009 | MDS | MDS定义中组件依赖语法正确性检查 | MDS配置中,组件依赖关键字为“required”,对象数组类型,可包含0到多个对象元素,每个对象元素一定包含path和interface字段。 | 严重 | 组件(1%)的组件依赖字段(required)配置错误。 | 影响组件的运行态依赖。 | 参照rule_mds_009规则,修改组件(1%)的required字段配置。 | |||
| rule_mds_010 | MDS | MDS定义中组件依赖的path字段语法正确性检查 | MDS的组件依赖配置中,path取值可为*或有效的资源树对象路径。 | 严重 | 1、组件(1%)中组件依赖(required)的第(2%)个配置元素中,缺少path字段的配置。2、组件(1%)中组件依赖(required)的第(2%)个配置元素中,path字段的取值(3%)不是有效的资源树路径。 | 无效的组件依赖,影响组件运行态状态。 | 确保组件(1%)的组件依赖配置中均存在path字段的配置,且path的取值需在资源树对象中定义。 | |||
| rule_mds_011 | MDS | MDS定义中组件依赖的interface字段语法正确性检查 | MDS的组件依赖配置中,interface取值为有效的资源树接口。 | 严重 | 1、组件(1%)中组件依赖(required)的第(2%)个配置元素中,缺少interface字段的配置。2、组件(1%)中组件依赖(required)的第(2%)个配置元素中,interface字段的取值(3%)不是有效的资源树接口。 | 无效的组件依赖,影响组件运行态状态。 | 确保组件(1%)的组件依赖配置中均存在interface字段的配置,且interface的取值需在资源树接口中定义。 | |||
| rule_mds_012 | MDS | MDS定义中组件依赖的path字段有效性检查 | MDS定义中组件依赖的path须实现其依赖的interface,且须被其它组件的MDS管理。 | 严重 | 组件(1%)中组件依赖(required)的第(2%)个配置元素存在如下问题:1、依赖的资源树路径(3%)未实现依赖的资源树接口(4%)。2、依赖的资源树路径(5%)未被MDS管理。 | 无效的组件依赖,影响组件运行态状态。 | 确保组件(1%)依赖的资源树路径实现了依赖的接口,且路径须被其它组件(MDS)实现。 | |||
| rule_mds_013 | MDS | MDS循环依赖检查 | MDS之间不能存在循环依赖的关系。 | 严重 | 组件(1%,2%,3%)之间存在循环依赖,依赖关系:1、(4%)组件依赖(5%,6%)资源树接口,实现该接口的资源树对象(7%,8%)在(9%)组件管理。2、(10%)组件依赖(11%)资源树接口,实现该接口的资源树对象(12%)在(13%)组件管理。3、(14%)组件依赖(15%)资源树接口,实现该接口的资源树对象(16%)在(17%)组件管理。 | 影响组件的裁剪。 | 调整组件(1%,2%,3%)之间的依赖关系,消除循环依赖。 | |||
| rule_mds_014 | MDS | MDS定义中组件依赖的properties字段语法正确性检查 | MDS的组件依赖配置中,properties字段为对象类型,其下可存在0或多个属性,每个属性均应在该段配置依赖的接口下定义,属性对应的值为字符串数组类型,数组元素可取值包含:subscribe、read、write,数组元素可为空。 | 严重 | 组件(1%)中组件依赖(required)的第(2%)个配置元素的properties字段存在如下问题:1、属性(3%,4%)未在接口(5%)下定义。2、属性(5%,6%)对应的值应为数组类型,当前为(7%,8%)类型。3、属性(9%)的值配置中,(10%,11%)为非法数据。 | 影响组件对属性的精准订阅及读写操作。 | 对组件(1%)中组件依赖(required)的第(2%)个配置元素的properties字段做如下修改:1、删除该字段下(3%,4%)属性的定义,或补充其在接口(5%)下的定义。2、将该字段下属性(6%,7%)的值配置为字符串数组类型。3、该字段下所有属性的值配置,数组元素取值只能为:subscribe、read、write。 | |||
| rule_mds_015 | MDS | MDS定义中组件依赖的optional字段语法正确性检查 | MDS的组件依赖配置中,optional字段为选填,可配置为true或false。 | 一般 | 组件(1%)中组件依赖(required)的第(2%)个配置元素的optional取值(3%)配置错误。 | 影响依赖治理中对强弱依赖正确性的判断。 | 将组件(1%)的required配置中options取值改为true或false。true表示弱依赖,即运行时接口不存在不会影响本组件运行,默认为false。 | |||
| rule_mds_016 | MDS | MDS定义中组件依赖的stage字段语法正确性检查 | MDS的组件依赖配置中,stage字段为选填,可配置枚举值:starting、running。 | 一般 | 组件(1%)中组件依赖(required)的第(2%)个配置元素的stage取值(3%)配置错误。 | 影响依赖治理中对依赖生效阶段的判断。 | 将组件(1%)的required配置中stage取值改为starting或running。starting表示初始化阶段依赖,running表示运行阶段依赖。 | |||
| rule_mds_017 | MDS | MDS定义中codeGenPolicy配置正确性检查 | MDS配置中,codeGenPolicy为对象类型,其下存在version字段,字段取值为大于0的数字。 | 一般 | 组件(1%)的codeGenPolicy字段配置存在如下问题:1、应配置为对象类型,当前为(2%)类型。2、其下缺少version属性的配置。3、version字段的取值(3%)配置错误。 | 影响组件的自动生成代码策略,代码生成工具将基于生成策略指定的版本生成配套的代码。 | 对组件(1%)的codeGenPolicy字段配置做如下修改:1、将该字段配置为对象类型。2、补充该字段下version属性的配置。3、version字段的取值须为大于0的数字。 | |||
| rule_mds_018 | MDS | MDS中service.json定义文件格式正确性检查 | service.json定义文件须为正确的json格式文件 | 严重 | 组件服务模型文件(1%)不是正确的json格式文件。 | 组件无法启动,注册。 | 将组件服务模型文件(1%)改成正确的json格式文件。 | |||
| rule_mds_019 | MDS | MDS类定义类名有效性检查 | MDS类中若管理了资源树对象,则该类的名称与被管理的资源树对象名称一致。MDS的类名定义全局唯一。 | 严重 | 组件(1%)的类(2%)管理了资源树对象(路径:3%,对象名:4%),类名和资源树对象名不一致。 | 资源树对象不能被组件正常管理。 | 修改组件(1%)的类名(2%),或修改资源树对象名(3%),确保二者名称一致。 | |||
| rule_mds_020 | MDS | MDS类定义parent字段有效性检查 | MDS类定义中parent字段为选填,若存在此字段,则取值为定义在本组件MDS中的其它类名。 | 严重 | 组件(1%)的类(2%,3%)定义中parent字段引用的父类(4%,5%)在本组件中未定义。 | 类管理的资源树无法正常解析,资源树管理失败。 | 组件(1%)中若类(2%,3%)不涉及与其它类的父子关系,则删除parent字段的配置,并补充完整的path定义,否则补充父类(4%,5%)的定义。 | |||
| rule_mds_021 | MDS | MDS类定义path字段正确性检查 | MDS类定义中path字段为选填,若存在此字段,则取值为有效的资源树路径。若该类中存在parent字段,则path可表示为以“:parent”开头的字符串,且计算出的真实路径须为有效的资源树路径定义。 | 严重 | 组件(1%)的类(2%)中path字段定义存在如下问题:1、管理的(3%)路径未在资源树对象中定义。2、该类存在父类配置关系,path字段的配置(4%)不符合格式要求。3、该类存在父类配置关系,计算出的path(5%)未在资源树对象中定义。 | 资源树无法被正常管理,对应的业务功能无法生效。 | 对组件(1%)的类(2%)中path字段做如下处理:1、在资源树对象中补充(3%)路径的定义,否则删除该类对此路径的管理关系。2、该类存在父类配置关系,path字段应配置为以"":parent""开头的样式。3、在资源树对象中补充(4%)路径的定义。 | |||
| rule_mds_022 | MDS | MDS权限配置一致性检查 | MDS类管理的资源树属性或方法,若在接口映射配置中被引用,则须在MDS中配置权限,包括如下两种方式:1、所在Path配置了权限。2、所在Path未配置权限,但对应的属性和方法配置了权限。 | 严重 | 组件(1%)的类(2%)管理的资源树对象(3%),其所实现的接口(4%)下定义的(5%,6%)属性和(7%,8%)方法在MDS中未配置权限,上述属性和方法在接口映射(Uri:%9,Type:10%)中被引用。 | 权限漏配置,引入安全问题。 | 在(1%)组件的类(2%)中补充(3%)接口的属性(4%,5%)和方法(6%,7%)的权限配置。 | MDS若管理了资源树对象,则该MDS管理了该对象下的所有接口,包括接口下的属性和方法。接口、属性和方法无须显示定义出来。 | ||
| rule_mds_023 | MDS | MDS类定义privilege字段正确性检查 | MDS类定义中若存在path字段,则可配置privilege字段,该字段为字符串数组类型,数组元素取值范围:UserMgmt,BasicSetting,KVMMgmt,VMMMgmt,SecurityMgmt,PowerMgmt,DiagnoseMgmt,ReadOnly,ConfigureSelf。 | 严重 | 组件(1%)的类(2%)权限配置存在如下问题:1、类未管理资源树对象,但配置了privilege字段。2、类中配置的privilege字段数据类型(3%)错误。3、类中配置的privilege字段存在非法数据(4%,5%)。 | 组件对资源访问的权限管控无法达到预期效果。 | 对组件(1%)的类(2%)权限配置做如下修改:1、删除类中privilege字段的配置。2、类中privilege字段应为数组类型。2、privilege字段的有效配置数据:UserMgmt,BasicSetting,KVMMgmt,VMMMgmt,SecurityMgmt,PowerMgmt,DiagnoseMgmt,ReadOnly,ConfigureSelf。 | |||
| rule_mds_024 | MDS | MDS类定义tableName字段正确性检查 | MDS类定义中tableName字段为选填,若存在此字段,则取值为“t_”开头snake风格的非空字符串,字符串中只能存在下划线和小写字母。 | 一般 | 组件(1%)的类(2%)中tableName字段(3%)配置风格存在问题。 | 标准化规范定义。 | 组件(1%)的类(2%)中tableName字段配置风格应为:“t_”开头snake风格的非空字符串,字符串中只能存在下划线和小写字母。 | |||
| rule_mds_025 | MDS | MDS类定义tableName字段唯一性检查 | MDS类定义中tableName的取值要确保全局唯一(例外场景:仅当两个类中tableLocation字段取值不同时,tableName才可重名) | 严重 | 组件(1%)的类(2%,3%,4%)中存在相同的tableName配置(5%)。 | 持久化的数据错误,引起业务异常。 | 修改组件(1%)的类(2%,3%,4%)中tableName配置,确保取值唯一。 | |||
| rule_mds_026 | MDS | MDS类定义tableName字段有效性检查 | MDS类定义中若存在tableName字段,则需同步配置tableType字段或至少存在一个该类管理的资源树属性或私有属性的usage被设置为数据持久化,持久化可设字段包含:PermanentPer, PoweroffPer, ResetPer, TemporaryPer, PoweroffPerRetain, ResetPerRetain, TemporaryPerRetain。 | 一般 | 组件(1%)的类(2%)配置了tableName字段(3%),但未配置tableType字段同时不存在任意资源树属性或私有属性被设置为持久化字段。 | 无效配置,影响模型的维护与理解。 | 若确定组件(1%)的类(2%)的表名(3%)不用于内存数据库(在组件的gen/{组件名}/orm_classes.lua中无引用)则可删除。 | |||
| rule_mds_027 | MDS | MDS类定义tableType字段正确性检查 | MDS类定义中tableType字段为选填,当tableName字段存在时才可配置此字段,字段取值包含:PermanentPer, PoweroffPer, ResetPer, TemporaryPer, PoweroffPerRetain, ResetPerRetain, TemporaryPerRetain、Memory,SHM。 | 严重 | 组件(1%)的类(2%)所管理的资源树或私有属性(3%,4%)配置存在如下问题:1、属性配置了tableType字段,但类未配置tableName。2、tableType字段取值(5%,6%)配置错误。 | 属性无法达到数据持久化效果。 | 对组件(1%)的类(2%)所管理的资源树或私有属性(3%)配置做如下修改:1、删除该属性tableType字段的配置或补充类tableName字段的配置。2、tableType字段取值范围:PermanentPer, PoweroffPer, ResetPer, TemporaryPer, PoweroffPerRetain, ResetPerRetain, TemporaryPerRetain、Memory,SHM | |||
| rule_mds_028 | MDS | MDS类定义tableLocation字段正确性检查 | MDS类定义中若存在tableLocation字段,则该字段取值只能为Local。 | 严重 | 组件(1%)的类(2%)的tableLocation字段配置(3%)错误。 | 无法达到本地持久化效果。 | 将组件(1%)的类(2%)的tableLocation字段配置为Local,或删除此字段的配置。 | |||
| rule_mds_029 | MDS | MDS类定义tableLocation字段有效性检查 | MDS类定义中若存在tableLocation字段,则该类须配置tableName字段。 | 一般 | 组件(1%)的类(2%)配置了tableLocation字段,但未配置tableName字段。 | 无法达到本地持久化效果。 | 补充组件(1%)的类(2%)的tableName字段配置,或删除tableLocation字段。 | |||
| rule_mds_030 | MDS | MDS类所管理接口正确性检查 | MDS类定义中若存在path字段,则可配置interfaces字段,该字段为对象类型,可存在0到多个元素,每个元素的key为有效定义的资源树接口,key值不能重复,该资源树接口被path实现,每个元素的value为对象类型,对象中只能存在properties和methods的定义。 | 严重 | 组件(1%)的类(2%)配置存在如下问题:1、该类配置了interface字段,但未配置path字段。2、interface字段应为对象类型,当前为(3%)类型。3、interface中存在重复的接口(4%,5%)配置。4、interface中的接口(6%,7%)未定义。5、interface中的接口(8%,9%)未被资源树对象(path:10%)实现。6、interface中的接口(11%,12%)存在非法字段(13%,14%,15%)的配置。 | 资源树接口无法达到预期的管理效果,影响对应的业务功能。 | 对组件(1%)的类(2%)配置做如下修改:1、补充path字段的配置,或删除interface字段。2、将interface字段配置为对象类型。3、删除interface中重复的接口(3%,4%)配置。4、补充资源树接口(5%,6%)的定义。5、补充资源树对象(path:7%)对接口(8%,9%)的实现关系。6、interface中的接口(9%,10%)下只能配置properties和methods字段。 | |||
| rule_mds_031 | MDS | MDS类所管理接口有效性检查 | 在MDS中管理的资源树接口会被MDS(包含本APP的MDS)或接口映射配置引用,或该接口下存在属性在CSR中被其它对象引用。 | 一般 | 组件(1%)的类(2%)中管理的资源树接口(3%,4%)未被引用,需检查此是否为无效配置。 | 无效配置,影响模型的维护与理解。 | 组件(1%)的类(2%)中管理的资源树接口(3%,4%)至少需满足如下一种使用方式:1、存在组件(本组件亦可)的service.json中依赖该接口。2、存在接口映射配置中引用该接口。3、存在CSR文件中引用了该接口的属性。 | MDS若管理了资源树对象,则该MDS管理了该对象下的所有接口,包括接口下的属性和方法。接口、属性和方法无须显示定义出来。 | ||
| rule_mds_032 | MDS | MDS类所管理资源树属性配置正确性检查 | MDS类所管理的接口,其下可有0到多个属性配置,属性名需在接口下定义,不能重复,属性配置只可存在如下字段:privilege、usage、default、alias、primaryKey、uniqueKey、notAllowNull、deprecated。 | 严重 | 1、组件(1%)的类(2%)中管理的资源树接口(3%)下存在重复的属性(4%)配置。2、组件(1%)的类(2%)中管理的资源树接口(3%)下的属性(4%,5%)存在非法字段(6%,7%,8%)配置。 | 资源树接口下的部分属性无法达到预期的管理效果,影响对应业务功能。 | 1、删除组件(1%)的类(2%)中管理的资源树接口(3%)下的重复属性(4%)。2、类管理的资源树属性允许配置的字段:privilege、usage、default、alias、primaryKey、uniqueKey、notAllowNull、deprecated。 | |||
| rule_mds_033 | MDS | MDS类所管理资源树属性的privilege字段正确性检查 | MDS类管理的资源树属性中,privilege字段为选填,对象类型,若存在此字段,则须包含read和write的权限配置,可配权限为:UserMgmt,BasicSetting,KVMMgmt,VMMMgmt,SecurityMgmt,PowerMgmt,DiagnoseMgmt,ReadOnly,ConfigureSelf。 | 严重 | 组件(1%)的类(2%)中管理的资源树接口(3%)下的属性(4%)的privilege字段配置存在如下问题:1、该字段应为对象类型,当前为(5%)类型。2、该字段下缺少(6%,7%)的配置。3、该字段下的(8%,9%)中配置了无效的权限(10%,11%,12%)。 | 组件对属性访问的权限管控无法达到预期效果,存在安全风险。 | 对组件(1%)的类(2%)中管理的资源树接口(3%)下的属性(4%)的privilege字段做如下修改:1、将该字段的配置改为对象类型。2、该字段下补充(5%,6%)的配置。3、有效权限:UserMgmt,BasicSetting,KVMMgmt,VMMMgmt,SecurityMgmt,PowerMgmt,DiagnoseMgmt,ReadOnly,ConfigureSelf。 | 1、6%,7%,8%,9%取值为read和write。2、10%,11%,12%取的并集,和8%,9%并非一一对应。 | ||
| rule_mds_034 | MDS | MDS类所管理资源树属性的usage字段正确性检查 | MDS类管理的资源树属性中,usage字段为选填,字符串数组类型,数组元素可取值:CSR、PermanentPer, PoweroffPer, ResetPer, TemporaryPer, PoweroffPerRetain, ResetPerRetain, TemporaryPerRetain,SHM。 | 严重 | 组件(1%)的类(2%)中管理的资源树接口(3%)下的属性(4%)的usage字段配置存在如下问题:1、该字段应为数组类型,当前为(5%)类型。2、该字段中存在无效配置(6%,7%)。 | 资源树属性无法进行数据持久化。 | 对组件(1%)的类(2%)中管理的资源树接口(3%)下的属性(4%)的usage字段进行如下修改:1、将该字段配置为数组类型。2、字段中可配数据范围:CSR、PermanentPer, PoweroffPer, ResetPer, TemporaryPer, PoweroffPerRetain, ResetPerRetain, TemporaryPerRetain,SHM。 | |||
| rule_mds_035 | MDS | MDS类所管理资源树属性的default字段正确性检查 | MDS类管理的资源树属性中,default字段为选填,默认值取值类型与对应属性类型一致,取值范围符合业界常规预期,比如U8类型取值范围为0-255,字符串类型长度不大于64(可为空串),若资源树属性配置了校验规则,默认值取值满足该校验规则的配置。 | 严重 | 组件(1%)的类(2%)中管理的资源树接口(3%)下的属性(4%)的default字段配置存在如下问题:1、默认值(5%)的数据类型与对应属性的定义类型(6%)不一致。2、默认值(7%)不在该属性允许的取值范围[8%,9%]内。 | 默认值无法生效,影响对应业务的默认行为。 | 对组件(1%)的类(2%)中管理的资源树接口(3%)下的属性(4%)的default字段配置做如下修改:1、修改默认值为(5%)类型。2、修改默认值在[8%,9%]范围内。 | |||
| rule_mds_036 | MDS | MDS类所管理资源树属性的alias字段正确性检查 | MDS类管理的资源树属性中,alias字段为选填,取值为长度不大于64的非空字符串,大驼峰风格。 | 一般 | 组件(1%)的类(2%)中管理的资源树接口(3%)下的属性(4%)的alias字段配置(5%)风格存在问题。 | 标准化规范定义。 | 组件(1%)的类(2%)中管理的资源树接口(3%)下的属性(4%)的alias字段配置应为:长度不大于64的非空字符串,大驼峰风格。 | |||
| rule_mds_037 | MDS | MDS类所管理资源树属性的alias字段唯一性检查 | MDS类管理的资源树属性中,alias字段的取值在类中唯一,且不能和该类管理的资源树属性/私有属性重名。 | 严重 | 组件(1%)的类(2%)管理的资源树属性的alias配置存在如下问题:1、接口(3%,4%,5%)下存在相同的alias配置(6%)。2、alias配置(7%,8%)与(9%,10%)下的属性重名。 | 属性重命名影响该属性所承载的CSR内容是否能正常上树。 | 对组件(1%)的类(2%)管理的资源树属性的alias配置做如下修改:1、确保接口(3%,4%,5%)下属性的alias配置在类中唯一。2、确保alias的配置不与类所管理接口的属性或私有属性重名。 | 1、9%,10%取值可为资源树接口和“私有属性”,参数位置分别和7%,8%参数对应。2、该条规则所述的资源树接口和属性并非是在MDS中显示声明的,而是类管理的path所实现的在mdb_interface中定义的全量接口和属性。 | ||
| rule_mds_038 | MDS | MDS类所管理资源树属性的alias字段有效性检查 | MDS类管理的资源树属性若配置了alias字段,则至少存在一个被该类管理的其它接口的属性名与该属性重名。 | 一般 | 组件(1%)的类(2%)管理的接口(3%)下的属性(4%,5%)配置了alias字段,但不存在该类管理的其它接口的属性与上述属性重名。 | 无效配置,影响模型的维护与理解。 | 删除组件(1%)的类(2%)管理的接口(3%)下的属性(4%,5%)配置的alias字段。 | 属性(4%,5%)要和该类管理的path所实现的在mdb_interface中定义的全量接口和属性比较,而不是显示定义在MDS中的属性比较。 | ||
| rule_mds_039 | MDS | MDS类所管理不同接口下属性命名冲突检查 | MDS类所管理不同接口若存在同名属性,且属性在CSR中配置或被其它属性引用,则最多允许一个同名属性不配置alias字段。 | 严重 | 组件(1%)的类(2%)所管理的资源树接口(3%,4%,5%)存在同名属性(6%),该属性在CSR中被使用,所以须配置alias字段。 | CSR数据和资源树属性的交互错乱。 | 对组件(1%)的类(2%)所管理的资源树接口(3%,4%,5%)存在同名属性(6%)进行alias字段配置。 | 3%,4%,5%不包含存在同名属性但配置了alias字段的接口。 | ||
| rule_mds_040 | MDS | MDS类数据持久化主键约束检查 | MDS类若配置了tableName字段,则至少存在一个资源树属性或私有属性的primaryKey字段被设置为true。 | 严重 | 组件(1%)的类(2%)配置了tableName字段,但该类管理的资源树属性或私有属性未配置主键。 | 数据库范式管理。 | 组件(1%)的类(2%)管理的资源树属性/私有属性至少要有一个配置primaryKey字段。 | |||
| rule_mds_041 | MDS | MDS类管理的属性数据持久化配置有效性检查 | MDS类管理的资源树属性或私有属性若配置了持久化字段,则该类需存在tableName字段的配置。 | 一般 | 组件(1%)的类(2%)管理的属性配置了持久化字段,但该类未配置tableName字段。 | 配置持久化的属性无法达到持久化的效果。 | 在组件(1%)的类(2%)中增加tableName的配置,或删除属性的持久化配置。 | |||
| rule_mds_042 | MDS | MDS类所管理属性的primaryKey字段正确性检查 | MDS类所管理的资源树或私有属性的primaryKey字段取值只能为true。 | 严重 | 组件(1%)的类(2%)管理的属性(3%,4%)配置的primaryKey字段取值(5%,6%)错误。 | 数据库属性的主键约束失效。 | 将组件(1%)的类(2%)管理的属性(3%,4%)配置的primaryKey字段值改成true,若配置值为false则可删除该字段的配置。 | 3%,4%可为资源树属性和私有属性。 | ||
| rule_mds_043 | MDS | MDS类所管理属性的uniqueKey字段正确性检查 | MDS类所管理的资源树或私有属性的uniqueKey字段取值只能为true或false。 | 严重 | 组件(1%)的类(2%)管理的属性(3%,4%)配置的uniqueKey字段取值(5%,6%)错误。 | 数据库属性的唯一性约束失效。 | 将组件(1%)的类(2%)管理的属性(3%,4%)配置的uniqueKey字段值改成true,若配置值为false则可删除该字段的配置。 | 3%,4%可为资源树属性和私有属性。 | ||
| rule_mds_044 | MDS | MDS类所管理属性的uniqueKey字段有效性检查 | MDS类管理的资源树属性或私有属性若配置了uniqueKey字段,则该属性须被设置为数据持久化。 | 一般 | 组件(1%)的类(2%)管理的属性(3%,4%)配置了uniqueKey字段,但属性未被设置为持久化。 | 无效配置,影响模型的维护与理解。 | 在组件(1%)的类(2%)管理的属性(3%,4%)的usage字段中补充持久化类型的配置,若上述属性不涉及持久化则删除属性中uniqueKey字段的配置。 | 3%,4%可为资源树属性和私有属性。 | ||
| rule_mds_045 | MDS | MDS类所管理属性的notAllowNull字段正确性检查 | MDS类所管理的资源树或私有属性的notAllowNull字段取值只能为true或false。 | 严重 | 组件(1%)的类(2%)管理的属性(3%,4%)配置的notAllowNull字段取值(5%,6%)错误。 | 数据库属性的非空约束失效。 | 将组件(1%)的类(2%)管理的属性(3%,4%)配置的notAllowNull字段值改成true或false。 | 3%,4%可为资源树属性和私有属性。 | ||
| rule_mds_046 | MDS | MDS类所管理属性的notAllowNull字段有效性检查 | MDS类管理的资源树属性或私有属性若配置了notAllowNull字段,则该属性须被设置为数据持久化。 | 一般 | 组件(1%)的类(2%)管理的属性(3%,4%)配置了notAllowNull字段,但属性未被设置为持久化。 | 无效配置,影响模型的维护与理解。 | 在组件(1%)的类(2%)管理的属性(3%,4%)的usage字段中补充持久化类型的配置,若上述属性不涉及持久化则删除属性中notAllowNull字段的配置。 | 3%,4%可为资源树属性和私有属性。 | ||
| rule_mds_047 | MDS | MDS类所管理属性的deprecated字段正确性检查 | MDS类所管理的资源树或私有属性的deprecated字段取值只能为true。 | 严重 | 组件(1%)的类(2%)管理的属性(3%,4%)配置的deprecated字段取值(5%,6%)错误。 | 属性废弃标记失效,影响标准化管理。 | 将组件(1%)的类(2%)管理的属性(3%,4%)配置的deprecated字段值改成true,若配置值为false则可删除该字段的配置。 | 3%,4%可为资源树属性和私有属性。 | ||
| rule_mds_048 | MDS | MDS类所管理属性的deprecated字段有效性检查 | MDS类管理的资源树属性或私有属性若配置了deprecated字段,则该属性须被设置为数据持久化,且不能为主键或唯一键,若notAllowNull被设置为true,则该属性必须配置了默认值(若为资源树属性,在属性定义时配置默认值亦可)。 | 严重 | 组件(1%)的类(2%)管理的属性(3%)配置了deprecated字段,存在如下问题:1、该属性不是数据持久化字段。2、该属性不能为数据持久化的主键和唯一键。3、该属性notAllowNull被设置为true,但未配置默认值。 | 不符合要求的持久化属性被废弃,会引起不同版本的数据库兼容问题。 | 组件(1%)的类(2%)管理的属性(3%)若不为持久化属性,废弃时可直接删除无需标记,若为持久化属性,废弃时不可直接删除需通过deprecated字段标记,且只有满足特定条件(详见规则rule_mds_051描述)的字段才允许标记。 | 3%可为资源树属性和私有属性。 | ||
| rule_mds_049 | MDS | MDS类所管理属性critical字段正确性检查 | MDS类所管理属性若配置了critical字段,则该字段取值只能为true。 | 严重 | 组件(1%)的类(2%)管理的属性(3%,4%)配置的critical字段取值(5%,6%)错误。 | 属性critical标记失效,影响标准化管理。 | 将组件(1%)的类(2%)管理的属性(3%,4%)配置的critical字段值改成true,若配置值为false则可删除该字段的配置。 | 3%,4%可为资源树属性和私有属性。 | ||
| rule_mds_050 | MDS | MDS类所管理属性critical字段有效性检查 | MDS类管理的资源树属性或私有属性若配置了critical字段,则该属性须被设置为数据持久化。 | 一般 | 组件(1%)的类(2%)管理的属性(3%,4%)配置了critical字段,但属性未被设置为持久化。 | 无效配置,影响模型的维护与理解。 | 在组件(1%)的类(2%)管理的属性(3%,4%)的usage字段中补充持久化类型的配置,若上述属性不涉及持久化则删除属性中critical字段的配置。 | 3%,4%可为资源树属性和私有属性。 | ||
| rule_mds_051 | MDS | MDS类所管理属性sensitive字段正确性检查 | MDS类所管理属性若配置了sensitive字段,则该字段取值只能为true。 | 严重 | 组件(1%)的类(2%)管理的属性(3%,4%)配置的sensitive字段取值(5%,6%)错误。 | 属性sensitive标记失效,影响标准化管理。 | 将组件(1%)的类(2%)管理的属性(3%,4%)配置的sensitive字段值改成true,若配置值为false则可删除该字段的配置。 | 3%,4%可为资源树属性和私有属性。 | ||
| rule_mds_052 | MDS | MDS类所管理属性sensitive字段有效性检查 | MDS类管理的资源树属性或私有属性若配置了sensitive字段,则该属性须被设置为数据持久化。 | 一般 | 组件(1%)的类(2%)管理的属性(3%,4%)配置了sensitive字段,但属性未被设置为持久化。 | 无效配置,影响模型的维护与理解。 | 在组件(1%)的类(2%)管理的属性(3%,4%)的usage字段中补充持久化类型的配置,若上述属性不涉及持久化则删除属性中sensitive字段的配置。 | 3%,4%可为资源树属性和私有属性。 | ||
| rule_mds_053 | MDS | MDS类所管理方法配置正确性检查 | MDS类管理的资源树接口下若配置了methods字段,则该字段为对象类型,其下可存在0或多个元素,每个元素的key为方法名,需在对应接口下存在定义,value为对象类型,value对象内只能配置privilege属性。 | 严重 | 组件(1%)的类(2%)管理的资源树接口(3%)配置的methods字段存在如下问题:1、该字段应为对象类型,实为(4%)类型。2、其下配置的(5%,6%)方法未在上述接口中定义。3、其下配置的(7%,8%)方法存在非法字段(9%,10%,11%)的配置。 | 组件对资源树方法的管理无法达到预期效果。 | 对组件(1%)的类(2%)管理的资源树接口(3%)配置的methods字段做如下修改:1、校正字段配置,将其改为对象类型。2、删除该字段下(4%,5%)方法的配置,或在接口(6%)中定义上述方法。3、删除(7%,8%)方法中(9%,10%,11%)的配置。 | 9%,10%,11%取的并集,和7%,8%并非一一对应。 | ||
| rule_mds_054 | MDS | MDS类所管理方法的权限配置正确性检查 | MDS类所管理方法的privilege字段为字符串数组类型,数组元素取值范围:UserMgmt,BasicSetting,KVMMgmt,VMMMgmt,SecurityMgmt,PowerMgmt,DiagnoseMgmt,ReadOnly,ConfigureSelf。 | 严重 | 组件(1%)的类(2%)中管理的资源树接口(3%)下的方法(4%)的privilege字段配置存在如下问题:1、该字段应为数组类型,当前为(5%)类型。2、该字段下配置了无效的权限(6%,7%)。 | 组件对方法访问的权限管控无法达到预期效果,存在安全风险。 | 对组件(1%)的类(2%)中管理的资源树接口(3%)下的方法(4%)的privilege字段做如下修改:1、将该字段的配置改为数组类型。2、有效权限:UserMgmt,BasicSetting,KVMMgmt,VMMMgmt,SecurityMgmt,PowerMgmt,DiagnoseMgmt,ReadOnly,ConfigureSelf。 | |||
| rule_mds_055 | MDS | MDS类所管理私有属性baseType正确性检查 | 私有属性的baseType字段为必填,可取类型包括基础类型、自定义类型及上述两种类型的数组类型,基础类型包括:U8、U16、U32、U64、S8、S16、S32、S64、Boolean、Double、String;自定义类型可从本组件或资源树接口定义中引用,包括Dictionary、Struct、Enum;基础类型的数组类型在对应类型后加[],例如U8[],自定义类型的数组类型用Array表示,在items关键字中引用本组件或资源树接口中存在的自定义类型。 | 严重 | 1、组件(1%)的类(2%)中管理的私有属性(3%,4%)缺少baseType字段的定义。2、组件(1%)的类(2%)中管理的私有属性(3%,4%)的baseType字段取值(5%,6%)配置错误。 | 属性无法正常管理,影响对应的业务功能。 | 1、补充组件(1%)的类(2%)中管理的私有属性(3%,4%)的baseType字段的定义。2、修改组件(1%)的类(2%)中管理的私有属性(3%,4%)的baseType字段定义,使其满足规范要求,有效类型包括:U8、U16、U32、U64、S8、S16、S32、S64、Boolean、Double、String、自定义类型,上述类型的数组类型。 | |||
| rule_mds_056 | MDS | MDS类所管理私有属性default字段正确性检查 | 默认值取值类型与对应私有属性类型一致,取值范围符合业界常规预期,比如U8类型取值范围为0-255,字符串类型长度不大于64(可为空串),若私有属性配置了校验规则,默认值取值满足该校验规则的配置。 | 一般 | 1、组件(1%)的类(2%)中管理的私有属性(3%)的default字段取值类型与属性的定义类型不一致。2、组件(1%)的类(2%)中管理的私有属性(3%)的default字段取值不在预期范围内。 | 私有属性的默认值不能生效,影响对应业务的默认状态。 | 1、将组件(1%)的类(2%)中管理的私有属性(3%)的默认值设置为(4%)类型。2、将组件(1%)的类(2%)中管理的私有属性(3%)的默认值设置在[4%,5%]范围内。 | |||
| rule_mds_057 | MDS | MDS类所管理私有属性refInterface字段正确性检查 | MDS类所管理私有属性若配置了refInterface字段,则该字段的取值为有效的资源树接口定义。 | 严重 | 组件(1%)的类(2%)中管理的私有属性(3%,4%)的refInterface字段配置的(5%,6%)接口未定义。 | 组件无法访问定义在refInterface中的资源树接口。 | 修改组件(1%)的类(2%)中管理的私有属性(3%,4%)的refInterface定义,或补齐资源树接口(5%,6%)的定义。 | |||
| rule_mds_058 | MDS | MDS类所管理私有属性refInterface字段有效性检查 | MDS类所管理私有属性配置的refInterface字段取值需在该组件的service.json中被依赖。 | 严重 | 组件(1%)的类(2%)中管理的私有属性(3%,4%)的refInterface字段配置了(5%,6%)接口,本组件须配置对上述接口的依赖。 | 配置的refInterface字段无效。 | 在组件(1%)的service.json中配置对接口(2%,3%)的依赖。 | |||
| rule_mds_059 | MDS | MDS自定义类型循环依赖检查 | 自定义类型之间不能存在循环依赖,包含结构体与结构体、结构体与字典、字典与字典之间的循环依赖。 | 严重 | 组件(1%)中(2%,3%,4%)自定义类型间存在循环依赖关系:1、结构体(5%)的成员(6%)类型依赖结构体(7%)。2、结构体(8%)的成员(9%)类型依赖字典(10%)。3、字典(11%)的值类型依赖结构体(12%)。 | 自定义类型之间循环依赖,会造成业务功能异常。 | 对组件(1%)中的自定义类型进行合理设计,消除(2%,3%,4%)间的循环依赖。 | |||
| rule_mds_060 | MDS | MDS中model.json定义文件格式正确性检查 | model.json定义文件须为正确的json格式文件 | 严重 | 组件(1%)数据模型定义文件不是正确的json格式文件。 | 组件数据模型加载异常,对资源树的管理失败。 | 将组件(1%)的数据模型定义文件改成正确的json格式文件。 | |||
| rule_mds_061 | MDS | MDS中types.json定义文件格式正确性检查 | types.json定义文件须为正确的json格式文件 | 严重 | 组件(1%)自定义类型文件不是正确的json格式文件。 | 组件的自定义类型均无法加载,影响对应业务功能。 | 将组件(1%)的自定义类型文件改成正确的json格式文件。 |