# 配置代码检查任务自定义规则集
代码检查服务除了可以使用预置规则集外，用户还可以根据实际需要自定义代码检查规则集，每个规则集中最少设置一条规则。
目前仅支持配置单语言的规则集，即一个规则集只能配置同一种语言类型的检查规则。
 #### 约束与限制
**关于自定义规则集的限制：**
- 代码检查规则集提供了代码安全检查增强包功能，使用前请务必按需购买。购买了代码安全检查增强包后，Java、C++、Go和Python语言可以使用安全度更高的缺陷扫描规则。
- secbrella和SQLGuardian引擎规则不支持门禁级检查，规则集配置界面无门禁级选项。
- 自定义规则集中"检查语言"不支持修改。
- 自定义规则集中，规则数量上限为3000。
- te_admin账号、租户空间管理员、租户空间所有者和规则集创建者均可以**修改** 或**删除**自定义规则集。
- 预置规则集和已被使用的自定义规则集无法删除。
- 如果需要删除已被使用的自定义规则集，需将关联使用该规则集的代码检查任务删除或将代码检查任务关联到其他规则集。
- 同项目下账号之间进行资源移交之后，被移交的账号具有移交账号创建的规则集的管理权限。
**关于自定义规则的限制：**
- 支持的自定义规则数量可参考[规格与限制](https://support.huaweicloud.com/productdesc-codecheck/codecheck_07_0001.html#section2)。
- 使用自定义规则扫描代码最多支持扫描10万行。仅适用于使用的规则集中只包含自定义规则。
- 使用自定义规则扫描10万行代码行最多时长1.5小时。仅适用于使用的规则集中只包含自定义规则。
- te_admin账号、租户空间管理员、租户空间所有者和规则创建者均可以**编辑** 或**删除**自定义规则。

- 同项目下账号之间进行资源移交之后，被移交的账号具有移交账号创建的规则的管理权限。
**关于批量导入规则的限制：**
- 批量导入规则为受限功能，如需使用，请[提交工单](https://support.huaweicloud.com/usermanual-ticket/zh-cn_topic_0127038618.html)联系技术支持工程师。
- 导入文件大小不大于1MB。
- 每次上传的规则条数不大于100。
 
#### 操作视频
以下呈现的分别是"规则"和"规则集"的视频操作。
本视频为您演示使用自定义规则集检查Repo代码仓中代码质量的操作。
<video controls="controls" preload="none" id="object14513134613126" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/codecheck/1717066146415522742.mp4" title="自定义规则集" poster="https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000002328536876.jpg" height="300.0000" width="600.0000"></video>
本视频为您演示使用自定义规则检查Repo代码仓中代码质量的操作。
<video controls="controls" preload="none" id="object1374625217370" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/codecheck/1750644860583102046.mp4" title="自定义规则" poster="https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000002384317821.jpg" height="300.0000" width="600.0000"></video>
 #### 创建自定义检查规则集
1. [访问CodeArts Check服务首页](https://support.huaweicloud.com/usermanual-codecheck/devcloud_hlp_00101.html#devcloud_hlp_00101__section125631532175013)。
2. 单击"规则集"页签，进入规则集列表页面。
3. 单击"新建规则集"，在弹出的"新建规则集"窗口设置规则集名称、描述、检查语言和新建方式。 
   其中新建方式有三种：
   - **直接新建：**新建一个空的规则集，所有规则需逐一勾选。
   
   - **复制：**选择"复制"，在下拉框选择复制于已有的规则集，基于复制的规则集配置使用的规则。
   
   - **继承：** 选择"继承"，在下拉框中选择已有的规则集，继承其中的规则。单击![](https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000002177801594.png)可以添加规则集，最多支持继承5个规则集。
     如果继承的多个规则集间有冲突，则以优先级高的为准。数值越小，优先级越高。比如，添加的第二个规则集中的规则和第一个规则集中的冲突，那么以第一个规则集的规则为准。
     
   
   
   
   
4. 单击"确定"。
5. 根据需要勾选规则名称、设置规则级别、适用范围（版本级、门禁级）和延迟时间，单击右上角"保存"。 
   - **门禁级：** MR扫描和CR扫描属于门禁级，其适用场景如下。
     - secbrella和SQLGuardian引擎规则不支持门禁级检查，规则集配置界面无门禁级选项。
     
     - sonarqube java的编译规则，若配置了编译命令，且选择了增量MR检查模式，可能会因为编译失败而导致任务执行失败。可以在规则列表中查看是否为编译型的规则。
      
   
   - **版本级：**除MR扫描和CR扫描外均属于版本级，所有规则都支持版本级检查。
   
   - **延迟时间：**自定义规则集支持设置规则的延迟告警开始时间和延迟告警结束时间。规则集延迟时间设置后重新扫描任务，当告警发现时间在设置的延迟时间范围内时，告警会被标识为延迟上线问题。延迟上线问题不会被统计为正式问题，因此不会影响质量门禁。
   
   
   在"选项"列中，部分规则可设置参数值，不同配置项可设置的参数类型不同，主要包括INTEGER，FLOAT，STRING和BOOLEAN，用户只能填写对应类型的值，[图2]以INTEGER型为例，表示参数值仅能输入INTEGER型。
   图1可设置参数值的配置项   
   ![](https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000002268549064.png "点击放大")
   图2INTEGER型参数值   
   ![](https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000002303132253.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-codecheck/public_sys-resources/note_3.0-zh-cn.png)
   - **门禁级：** MR扫描和CR扫描属于门禁级，其适用场景如下。
     - secbrella和SQLGuardian引擎规则不支持门禁级检查，规则集配置界面无门禁级选项。
     
     - sonarqube java的编译规则，若配置了编译命令，且选择了增量MR检查模式，可能会因为编译失败而导致任务执行失败。可以在规则列表中查看是否为编译型的规则。
      
   
   - **版本级：**除MR扫描和CR扫描外均属于版本级，所有规则都支持版本级检查。
   
   - 延迟时间：自定义规则集支持设置规则的延迟告警开始时间和延迟告警结束时间。规则集延迟时间设置后重新扫描任务，当告警发现时间在设置的延迟时间范围内时，告警会被标识为延迟上线问题。延迟上线问题不会被统计为正式问题，因此不会影响质量门禁。
    
   如果系统预置的规则不满足用户的使用要求，可[自定义规则]使用。
   
   
 
#### 查看自定义规则集
1. 在"我创建的规则集"页签下，单击规则集名称，进入规则集详情页面可规则集中使用的规则详情。 
   - **在线查看**
     其中，规则使用的检查引擎默认不显示，如果需要查看参考[配置代码检查显示引擎](https://support.huaweicloud.com/usermanual-codecheck/codecheck_ug_0109.html)。
     规则集列表支持按照"检查规则数量"和"修改时间"进行排序。两者之间相互排斥，例如，通过"修改时间"进行排序后，按照"检查规则数量"的排序会失效。
     
   
   
   
   - **离线查看**
     单击"导出"，可导出该规则集中已启用的规则到本地查看规则详情。
     
   
   
   
   
2. 在规则集详情页面，单击"修改基本信息"，可修改规则集名称、描述信息和规则集所有者。 
   - 自定义规则集中"检查语言"不支持修改。
   
   - 系统预置规则集无法修改。
   
   - te_admin账号、租户空间管理员、租户空间所有者和规则集创建者均可以修改自定义规则集。
   
   
   
   
3. 在规则集详情页面，单击![](https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000002245599624.png)，选择"被任务使用的情况"，可以查看使用该规则集的代码检查任务列表（包括模板任务）。
   
   当查看到的任务数超过10000，且该规则集使用情况变化时，任务数变化有1小时的延迟。首次查看规则集的代码检查任务列表时， 不存在延迟问题。
   
   
 
#### 删除自定义规则集
- **服务下删除** ：
  1. 通过服务入口方式[访问CodeArts Check服务首页](https://support.huaweicloud.com/usermanual-codecheck/devcloud_hlp_00101.html#devcloud_hlp_00101__section125631532175013)。
  
  2. 依次单击"规则集 \> 我创建的规则集"。
  
  3. 单击规则集所在行的![](https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000002366770985.png)，即可删除自定义检查规则集
   
- **项目下删除** ：
  在自定义规则集列表页，单击规则集所在行的![](https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000002131428168.png)，选择"删除"即可删除自定义检查规则集。
  - te_admin账号、租户空间管理员、租户空间所有者和规则集创建者可以删除自定义规则集。
  
  - 预置规则集和已被使用的自定义规则集无法删除。
  
  - 如果需要删除已被使用的自定义规则集，需将关联使用该规则集的代码检查任务删除或将代码检查任务关联到其他规则集。
    
 
#### 配置代码检查服务使用自定义规则集
1. 在代码检查任务详情页选择"设置 \> 规则集"。
2. 如果创建代码检查任务后，代码仓的代码有修改，则需单击"已包含语言"所在行![](https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000001958884685.png)重新获取代码仓语言，将目标语言的开关设置为开启状态。
3. 单击![](https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000001931605920.png)，选择已创建的自定义规则集。
 
 #### 自定义规则
规则应用于检查某类代码问题，提供规则说明，如代码缺陷影响、修改建议。
- 支持的自定义规则数量可参考[规格与限制](https://support.huaweicloud.com/productdesc-codecheck/codecheck_07_0001.html#section2)。
- 使用自定义规则扫描代码最多支持扫描10万行。仅适用于使用的规则集中只包含自定义规则。
- 使用自定义规则扫描10万行代码行最多时长1.5小时。仅适用于使用的规则集中只包含自定义规则。
- te_admin账号、租户空间管理员、租户空间所有者和规则创建者可以编辑和删除自定义规则。
如果需要支持扫描更多行数的代码或需要创建更多数量的规则，请[提交工单](https://support.huaweicloud.com/usermanual-ticket/zh-cn_topic_0127038618.html)联系技术支持工程师。
1. 单击"规则"页签。
2. 单击"新建规则 \> 新建自定义规则"，参考[表1]配置参数。
   
    表1自定义规则参数配置说明 
   | **参数** | **说明**                                                                                                                                                                                                                                                                                                                                                                                  |
   |:---|:---|
   | 规则名称    | 创建的规则名称，可自定义。 - 支持中英文，数字，点，下划线"_"和连接符"-"  - 字符长度范围为1\~255                                                                                                                                      |
   | 检查工具      | 该检查规则使用的检查工具，使用检查工具需参考[配置代码检查显示引擎](https://support.huaweicloud.com/usermanual-codecheck/codecheck_ug_0109.html)打开"显示检查引擎"的开关。当前仅支持SecBrella。                                                                                                                                                                                                                                            |
   | 语言       | 该规则检查的编译语言，当前支持Java、C/C++和ArkTS语言。                                                                                                                                                                                                                                                                                                                                                        |
   | 规则源码    | 该规则的源码文件。 由用户创建".kirin"文件编写dsl规则，然后通过运行本地插件在"OutputReport"目录下生成"SecH_自定义规则名.json"的源码文件，上传JSON文件即可。使用插件生成规则文件可参考[插件使用指南](https://bbs.huaweicloud.com/blogs/429843)。 **注意：**上传的文件名称必须以"SecH_"开头。                                                                                                                      |
   | 工具规则名称  | 根据上传的规则源码文件名称自动填充，不可手动修改。                                                                                                                                                                                                                                                                                                                                                                |
   | 支持范围  | 版本级或门禁级 - **ArkTS语言**可选择支持"门禁级"或者"版本级"，或同时选择支持"版本级"和"门禁级"。  - **Java和C/C++语言** 不支持选择，默认为"版本级"。 **注意：**当"支持范围"仅选择"版本级"时，在规则集中针对这条规则的适用范围也只能选择"版本级"。当"支持范围"仅选择"门禁级"时，在规则集中针对这条规则的适用范围也只能选择"门禁级"。    |
   | 严重级别    | 该规则检查出的代码问题的严重级别，分为致命、严重、一般和提示。                                                                                                                                                                                                                                                                                                                                                             |
   | 标签       | 为该规则设置标签，便于使用时区分该规则使用场景。 添加多个标签时，需使用英文逗号分隔。                                                                                                                                                                                                                                                                                                            |
   | 描述         | 对该规则的使用描述。如果描述的内容需要粘贴代码，代码内容支持MarkDown格式。字符数限制为0\~10000。                                                                                                                                                                                                                                                                                                                                  |
   | 正确示例   | 该规则对应的正确代码示例。代码内容支持使用MarkDown格式呈现。字符数限制为0\~10000。                                                                                                                                                                                                                                                                                                                                          |
   | 错误示例    | 不满足该规则的错误代码示例。代码内容支持使用MarkDown格式呈现。字符数限制为0\~10000。                                                                                                                                                                                                                                                                                                                                       |
   | 修复建议   | 对于该规则检查出的问题修改建议。如果修复建议中需要粘贴代码，代码内容支持MarkDown格式。字符数限制为0\~10000。                                                                                                                                                                                                                                                                                                                          |
      
   
   
3. 单击"新建规则"，完成创建。
 
#### 批量导入自定义规则
批量导入规则为受限功能，如需使用，请[提交工单](https://support.huaweicloud.com/usermanual-ticket/zh-cn_topic_0127038618.html)联系技术支持工程师。
1. 单击"规则"页签。
2. 依次单击"新建规则 \> 批量导入规则"，在弹出的窗口中，下载批量导入规则模板。 
   图3批量导入规则   
   ![](https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000002278048025.png)
   
   
3. 按照模板要求填写完规则信息后，单击![](https://support.huaweicloud.com/usermanual-codecheck/zh-cn_image_0000002243169182.png)，选择本地填写完成的批量导入规则文件。
4. 单击"确定"，完成导入。
 
#### 相关文档
- 关于规则集的相关API接口可参考[规则管理](https://support.huaweicloud.com/api-codecheck/topic_300000002.html)。
- 关于自定义规则以及规则集的最佳实践可参考[使用自定义规则检查CodeArts Repo代码仓中的代码质量](https://support.huaweicloud.com/bestpractice-codecheck/codeartscheck_14_1001.html)。
 
