-
管理代码检查任务 CodeArts Check支持批量管理代码检查任务。 在代码检查任务列表页,勾选任务名称前的复选框。 在弹出的窗口中可对选中的任务进行移动分组,修改配置,删除和导出任务告警的操作。 其中, “修改配置”支持修改规则集,质量门禁,定时执行,MR检查模式,检查目录,自定义镜像,配置私有依赖仓扩展点,检查前置命令,新问题起始时间,源文件编码,问题责任人精准匹配,
消息通知 ,企业微信通知,钉钉通知,飞书通知。 “导出任务告警”最多支持20个代码检查任务。 图1 批量管理代码检查任务
-
批量创建代码检查任务 仅自定义模板的创建方式,支持批量创建代码检查任务。单次最多可以创建10个代码检查任务。 通过项目入口方式访问CodeArts Check服务首页。 在代码检查页面,单击“新建任务”,在“新建任务”页面,参考表3配置参数。 表3 批量任务参数说明 参数 说明 所属项目 需要使用的模板所属项目。 以项目入口方式访问CodeArts Check服务时默认填写,无需手动填写。 以服务入口访问时需根据实际情况选择新建项目中创建的项目。 新建方式 选择使用的模板,可选择“项目模板”或“租户模板”。 项目模板:使用当前项目下自定义的任务模板。 租户模板:使用当前租户自定义的任务模板。 租户模板和项目模板的差异如下: 通知管理:不展示接受者角色、自定义成员,基于租户级模板创建任务不复制该信息。 检查范围:不展示忽略文件,基于租户级模板创建任务不复制该信息。 自定义环境:不展示配置私有依赖仓扩展点,基于租户级模板创建任务不复制该信息。 租户模板不支持修改模板信息。 模板 选择对应的自定义模板。若无模板,可参考自定义代码检查模板新建模板。 代码源 选择检查的代码来源。 选择“Repo”,检查托管在Repo代码仓中的代码质量。 选择“GitHub”,检查托管在GitHub代码仓中的代码质量。 创建GitHub代码源检查任务前,需将Github仓库设置成公开。 选择“GitCode”,检查托管在GitCode代码仓中的代码质量。 选择“通用Git”。对于托管在其他服务上的代码,可以使用通用Git连接实现代码拉取。 选择“码云”,检查托管在码云代码仓中的代码质量。 任务信息 项目:选择代码检查任务的所属项目。 服务扩展点:代码源选择非Repo代码仓时需要配置。如果没有服务扩展点,可参考新建服务扩展点创建对应代码仓的服务扩展点。 代码仓:选择代码检查任务使用的代码仓。 默认分支:选择代码检查任务需要检查的仓库分支。 任务名称:填写代码检查任务的名称。支持中英文,数字,点,下划线“_”和连接符“-”,字符长度范围为3~128。 单击“增加任务”,可创建新的代码检查任务,单次最多可创建10个代码检查任务。 单击“确定”。
-
约束与限制 关于自定义规则集的限制: 代码检查规则集提供了代码安全检查增强包功能,使用前请务必按需购买。购买了代码安全检查增强包后,Java、C++、Go和Python语言可以使用安全度更高的缺陷扫描规则。 自定义规则集中“检查语言”不支持修改。 自定义规则集中,规则数量上限为3000。 te_admin账号、租户空间管理员、租户空间所有者和规则集创建者可以修改自定义规则集。 te_admin账号、租户空间管理员、租户空间所有者和规则集创建者可以删除自定义规则集。 系统规则集和已被使用的自定义规则集无法删除。 如果需要删除已被使用的规则集,需将关联使用该规则集的代码检查任务删除或将代码检查任务关联到其他规则集。 关于自定义规则的限制: 支持的自定义规则数量可参考规格与限制。 使用自定义规则扫描代码最多支持扫描10万行。仅适用于使用的规则集中只包含自定义规则。 使用自定义规则扫描10万行代码行最多时长1.5小时。仅适用于使用的规则集中只包含自定义规则。 te_admin账号、租户空间管理员、租户空间所有者和规则创建者可以编辑和删除自定义规则。 同项目下账号之间进行资源移交之后,被移交的账号具有移交账号创建的规则集和规则的管理权限。 关于批量导入规则的限制: 批量导入规则为受限功能,如需使用,需联系技术支持。 导入文件大小不大于1MB。 每次上传的规则条数不大于100。
-
创建自定义检查规则集 通过项目入口方式访问CodeArts Check服务首页。 单击“规则集”页签,进入规则集列表页面。 单击“新建规则集”,在弹出的“新建规则集”窗口设置规则集名称、描述、检查语言和新建方式。 其中新建方式有三种: 直接新建:新建一个空的规则集,所有规则需逐一勾选。 复制:选择“复制”,在下拉框选择复制于已有的规则集,基于复制的规则集配置使用的规则。 继承:选择“继承”,在下拉框中选择已有的规则集,继承其中的规则。单击可以添加规则集,最多支持继承5个规则集。 如果继承的多个规则集间有冲突,则以优先级高的准。数值越小,优先级越高。比如,添加的第二个规则集中的规则和第一个规则集中的冲突,那么以第一个规则集的规则为准。 单击“确定”。 根据需要勾选规则名称、设置规则级别、适用范围(版本级、门禁级)和延迟时间,单击右上角“保存”。 门禁级:MR扫描和CR扫描属于门禁级,其适用场景如下: secbrella和SQLGuardian引擎规则不支持门禁级检查,规则集配置界面无门禁级选项。 sonarqube java的编译规则,若配置了编译命令,且选择了增量MR检查模式,可能会因为编译失败而导致任务执行失败。可以在规则列表中查看是否为编译型的规则。 版本级:除MR扫描和CR扫描外均属于版本级,所有规则都支持版本级检查。 延迟时间:自定义规则集支持设置规则的延迟告警开始时间和延迟告警结束时间。规则集延迟时间设置后重新扫描任务,当告警发现时间在设置的延迟时间范围内时,告警会被标识为延迟上线问题。延迟上线问题不会被统计为正式问题,因此不会影响质量门禁。 如果系统预置的规则不满足用户的使用要求,可自定义规则使用。
-
自定义规则 支持的自定义规则数量可参考规格与限制。 使用自定义规则扫描代码最多支持扫描10万行。仅适用于使用的规则集中只包含自定义规则。 使用自定义规则扫描10万行代码行最多时长1.5小时。仅适用于使用的规则集中只包含自定义规则。 te_admin账号、租户空间管理员、租户空间所有者和规则创建者可以编辑和删除自定义规则。 如果需要支持扫描更多行数的代码或需要创建更多数量的规则,可咨询华为技术支持。 单击“规则”页签。 单击“新建规则”,参考表1配置参数。 表1 自定义规则参数配置说明 参数 说明 是否必填 规则名称 创建的规则名称,可自定义。 支持中英文,数字,点,下划线“_”和连接符“-” 字符长度范围为1~255 是 工具规则名称 根据上传的规则源码名称自动填充,不可手动修改。 是 检查工具 该检查规则使用的检查工具,当前仅支持SecBrella。 是 语言 该规则检查的编译语言,当前仅支持Java和ArkTS语言。 是 规则源码 该规则的源码文件。 由用户创建“.kirin”文件编写dsl规则,然后通过运行本地插件在“OutputReport”目录下生成“SecH_自定义规则名.json”的源码文件,上传JSON文件即可。使用插件生成规则文件可参考插件使用指南。 是 严重级别 该规则检查出的代码问题的严重级别,分为致命、严重、一般和提示。 是 标签 为该规则设置标签,便于使用时区分该规则使用场景。 添加多个标签时,需使用英文逗号分隔。 否 描述 对该规则的使用描述。如果描述的内容需要粘贴代码,代码内容支持MarkDown格式。字符数限制为0~10000。 是 正确示例 该规则对应的正确代码示例。代码内容支持使用MarkDown格式呈现。字符数限制为0~10000。 否 错误示例 不满足该规则的错误代码示例。代码内容支持使用MarkDown格式呈现。字符数限制为0~10000。 否 修复建议 对于该规则检查出的问题修改建议。如果修复建议中需要粘贴代码,代码内容支持MarkDown格式。字符数限制为0~10000。 否 单击“新建规则”,完成创建。
-
购买CodeArts Check 代码检查服务采用包年/包月计费模式,提供基础版、专业版套餐,以满足不同规模用户的使用需求。套餐详情介绍请参见包年/包月套餐说明。 进入购买CodeArts Check套餐页面。 参考表1根据实际需要进行购买。 表1 套餐包配置 配置项 配置详情 计费模式 包年/包月。 区域 选择需要使用的区域。不同区域购买的资源不能跨区使用,需慎重选择。 产品 CodeArts Check套餐 规格 可选择“基础版”或“专业版”,差异如下。 基础版 支持Java/C++/JavaScript/Go/Python/C#/TypeScript/
CSS /HTML/PHP/LUA/RUST/Shell/KOTLIN/SCALA/ArkTS/SQL/CANGJIE10+种语言。 支持质量类、安全类规则。 检查并发:5个任务并发数。 专业版 基础版所有特性 提供增强的代码安全检查规则,深度识别代码安全风险和漏洞 检查并发:10个任务并发数。 购买时长 可选择1个月~3年。 自动续费 勾选后将开启自动续费。自动续费规则请参考自动续费规则说明。 建议根据您业务所在物理区域就近选择,以减少网络延时。购买的套餐只在对应的区域生效,不能跨区域使用。 确认套餐信息,勾选我已经阅读并同意《CodeArts服务使用声明》,单击“下一步”。 图1 确认套餐信息 若确认无误,继续根据页面提示完成支付。
-
配置代码检查服务钉钉通知 将“钉钉”开关设置为状态,参考表1配置参数。 表1 配置钉钉群 配置项 是否必填 说明 Webhook URL 是 输入钉钉机器人Webhook地址,长度不超过256个字符。 获取钉钉机器人Webhook地址的方式,请参考钉钉开放平台官网。 密钥 否 如果钉钉机器人的安全设置中开启了加签,需输入加签密钥,长度不超过256个字符。 获取钉钉机器人加签密钥的方式,请参考钉钉开放平台官网。 事件类型 是 勾选事件类型。 全部:所有事件均发送通知。 门禁通过:仅门禁通过的事件发送通知。 门禁不通过:仅门禁未通过的事件发送通知。 通知内容 是 勾选需要通知内容,包括检查结果,门禁结果,问题数,跳转链接,执行人和完成时间。 @user_id 否 输入被@成员的钉钉user_id,多个user_id之间使用“,”隔开,长度不超过1024个字符。 配置完成后,单击“保存”。当开关状态为“开启”且任务运行结果满足事件类型设置集时,代码检查服务会发送消息到指定的钉钉群并@到指定用户。
-
配置代码检查服务企业微信通知 在企业微信群群里添加群机器人。(以手机客户端为例,详细指导请参考如何设置群关系机器人。) 运行企业微信客户端,选中需要接受消息推送的群聊,单击右上角三个点按钮。 单击“群机器人”。 单击“添加”。 单击“新建”。 填写机器人名字,单击“添加”。 单击Webhook文本框旁的“复制”获取企业微信Webhook地址。 在代码检查任务中配置企业微信群通知服务。 将“企业微信”开关设置为状态。 选择“企业微信”,参考表2配置参数。 表2 配置企业微信 配置项 是否必填 说明 Webhook URL 是 填写步骤1中获取到的Webhook地址。长度不超过256个字符。 事件类型 是 勾选事件类型。 全部:所有事件均发送通知。 门禁通过:仅门禁通过的事件发送通知。 门禁不通过:仅门禁未通过的事件发送通知。 通知内容 是 勾选需要通知内容,包括检查结果,门禁结果,问题数,跳转链接,执行人和完成时间。 @user_id 否 输入被@成员的企业微信user_id,多个user_id之间使用“,”隔开,长度不超过1024个字符。 配置完成后,单击“保存”。当开关状态为“开启”且任务运行结果满足事件类型设置集时,代码检查服务会发送消息到指定的企业微信群并@到指定企业微信名。
-
配置飞书通知 选择“飞书”,开关设置为状态,参考表3配置参数。 表3 配置飞书 配置项 是否必填 说明 Webhook URL 是 输入飞书机器人Webhook地址,长度不超过256个字符。 获取飞书机器人Webhook地址的方式,请参考飞书开放平台官网。 密钥 否 如果飞书机器人的安全设置中开启了加签,需输入加签密钥,长度不超过256个字符。 获取飞书机器人加签密钥的方式,请参考飞书开放平台官网。 事件类型 是 勾选事件类型。 全部:所有事件均发送通知。 门禁通过:仅门禁通过的事件发送通知。 门禁不通过:仅门禁未通过的事件发送通知。 通知内容 否 勾选需要通知内容,包括检查结果,门禁结果,问题数,跳转链接,执行人和完成时间。 @user_id 否 输入被@成员的企业微信user_id,多个user_id之间使用“,”隔开,长度不超过1024个字符。 配置完成后,单击“保存”。当开关状态为“开启”且任务运行结果满足事件类型设置集时,代码检查服务会发送消息到指定的飞书用户。
-
设置忽略的文件集合 代码检查服务支持用户以任务为单元,设置代码检查的文件范围。 不勾选文件路径时,则检查所选仓库分支的所有代码。 勾选指定文件路径时,则该指定路径下的文件将排除检查。 在“忽略的文件集合”区域,勾选无需进行检查的文件路径。设置完成后,执行代码检查任务,将按照设置排除选中的文件路径执行检查。 勾选的忽略文件对需要编译的文件和不需要编译的文件均生效。 不需要编译的文件:勾选忽略文件后,被忽略的文件不参与检查。 需要编译的文件:例如A文件与B文件互为依赖,即使把A文件忽略,但A文件依然会参与检查前的编译过程,编译完成后不参与检查。
-
设置检查目录 支持检查代码仓指定目录。 不配置检查目录时,检查代码仓中所有目录下的代码文件。 配置检查目录时,只检查配置目录中的文件。 支持配置多个检查目录,多个目录需要用英文逗号分隔。例如: 如果要检查dir1和dir2,检查目录配置为“dir1,dir2”。 如果要检查dir1目录下的dir3,检查目录配置为“dir1/dir3”。 配置项为目录且不支持文件,默认检查代码仓中所有代码。 配置的目录层级中不能包含“.”开头的目录。 如果检查目录输入框路径为空,则默认全部检查。如果有指定检查目录,则只检查检查目录中的文件,如果指定的检查目录中有勾选设置忽略文件,则被忽略的文件不参与检查。 检查目录只生效于不需要编译的文件。例如,A文件编译后产生了B文件,则不会输出B文件上的告警。
-
约束与限制 多个编译语言的规则集不能选择一起同时检查。例如:C#语言规则集不可与其他语言规则集进行混合检查。 系统预置规则集不支持编辑,如果系统预置规则集不满足用户的需求,可基于预置规则集创建自定义检查规则集,自定义规则集可进行编辑。 用户购买了代码安全检查增强包后,使用代码安全检查增强包规则集必须设置编译脚本检查参数。 如果是ARM类型机器,请在“编译配置”页面的“执行机”中选择对应架构类型。 选中的规则集使用了secbrella检查引擎时,必须要设置“编译配置”并开启配置开关,代码检查扩展参数请根据实际情况进行配置。 选中的规则集使用了oat检查引擎时,必须要设置“编译配置”并开启配置开关(默认已开启)。其中仓库地址为oat工具-n参数,用于匹配默认策略,可以使用默认值或根据实际情况进行配置。详见oat开源项目。 查看规则集被任务使用情况时,查看到的任务数超过10000,且该规则集使用情况变化,任务数变化有1小时的延迟。首次查看规则集的代码检查任务列表时, 不存在延迟问题。
-
预置规则集清单 表1 预置规则集 语言 系统规则集类型 默认规则集 支持扫描文件后缀 扩展参数支持的编译工具版本 C++ 支付卡行业数据安全标准(PCI DSS) 3.2.1 支付卡行业数据安全标准(PCI DSS) 4.0 MISRA C 2012规则集 AUTOSAR C++14规则集 华为C编程规则集 华为C增强编程规则集 华为C++增强编程规则集 华为C++编程规则集 CodeArts Check C推荐规则集 CodeArts Check C++推荐规则集 华为C编码规范规则集 华为CPP编码规范规则集 华为C/C++编码规范规则集 全面检查规则集 关键检查规则集 鸿蒙C/C++语言推荐内容检查规则集 通用检查规则集 通用检查规则集 .c/.cc/.cpp/.cxx/.cp/.c++/.inc/.inl/.mm/.h/.hh/.hpp/.hxx/.h++ cmake3.15.5-gcc7.5.0 cmake3.15.5-gcc8.3.0 cmake3.10.1-gcc4.8.5 cmake3.10.1-gcc5.5.0 cmake3.10.1-gcc6.4.0 cmake3.10.1-gcc7.3.0 cmake2.8.12-gcc4.8.5 cmake2.8.12-gcc5.5.0 cmake2.8.12-gcc6.4.0 cmake2.8.12-gcc7.3.0 gfortran-gcc4.8.5-cmake2.8.12.2 Java 支付卡行业数据安全标准(PCI DSS) 4.0 支付卡行业数据安全标准(PCI DSS) 3.2.1 P3C规范JAVA推荐规则集 华为Java编程规则集 华为Java增强编程规则集 CodeArts Check JAVA推荐规则集 华为编码规范规则集 DevCloud推荐规则集 安全检查规则集 移动领域-Android规则集 通用检查规则集 关键检查规则集 Google编码规范规则集 全面检查规则集 鸿蒙C/C++语言推荐内容检查规则集 通用检查规则集 .java maven3.5.3-jdk1.7 maven3.5.3-jdk1.8 maven3.5.3-jdk1.9 maven3.5.3-jdk1.11 gradle2.13-jdk1.8 gradle2.14.1-jdk1.8 gradle3.3-jdk1.8 gradle4.1-jdk1.8 gradle4.2-jdk1.8 gradle4.3-jdk1.8 gradle4.4-jdk1.8 gradle4.5-jdk1.8 gradle4.6-jdk1.8 gradle4.7-jdk1.8 gradle4.8-jdk1.8 gradle4.9-jdk1.8 gradle4.8-jdk1.9 gradle4.9-jdk1.9 Go CodeArts Check GO推荐规则集 华为编码规范规则集 关键检查规则集 通用检查规则集 全面检查规则集 通用检查规则集 .go go-1.10.3 go-1.11.6 go-1.12.1 Python CodeArts Check PYTHON推荐规则集 华为编码规范规则集 关键检查规则集 通用检查规则集 通用检查规则集 .py / JavaScript 华为JS编程规则集 华为编码规范规则集 关键检查规则集 通用检查规则集 全面检查规则集 鸿蒙JAVASCRIPT语言推荐内容检查规则集 通用检查规则集 .js/.jsx / C# 关键检查规则集 通用检查规则集 全面检查规则集 通用检查规则集 .cs dotnetcore2.2 dotnetcore3.0 dotnetcore3.1 dotnetcore5.0 dotnetcore6.0 msbuild15-dotnetframework3.5 msbuild15-dotnetframework4.7.2 msbuild16-dotnetframework4.8 TypeScript 关键检查规则集 通用检查规则集 全面检查规则集 通用检查规则集 .ts/.tsx /
CS S 通用检查规则集 通用检查规则集 .css / HTML 通用检查规则集 通用检查规则集 .html / PHP 关键检查规则集 通用检查规则集 通用检查规则集 .php / LUA 通用检查规则集 通用检查规则集 .lua / RUST 通用检查规则集 通用检查规则集 .rs / Shell 通用检查规则集 通用检查规则集 .sh / KOTLIN 通用检查规则集 通用检查规则集 .kt / SCALA 通用检查规则集 通用检查规则集 .scala / ArkTS 通用检查规则集 通用检查规则集 .ets /
-
查看代码检查详情 通过项目入口方式访问CodeArts Check服务首页。 进入代码检查页面,搜索目标任务。在任务列表页,可以查看检查任务的状态。 新问题:表示本次代码检查任务执行后新增的问题。 未解决:表示该代码检查任务未解决的问题。 已解决:表示该代码检查任务已解决的问题。 单击检查任务名称,进入代码检查详情概览页,可查看的信息如下: 原始代码行数。 门禁结果:检查结果分为“通过”和“不通过”,同时会展示“致命问题数”和“严重问题数”。 代码检查是否通过是由设置的质量门禁值判断,门禁值设置请参考配置代码检查任务质量门禁。 问题数:检查出来的代码质量问题数。 延迟上线问题数:由于检查引擎的能力提升,出现的新问题数。 未解决新问题数:当前的代码检查结果中,未解决的问题个数。 已解决问题数:当前的代码检查结果中,已解决的问题个数 代码平均圈复杂度:代码的平均圈复杂度。 代码重复率:代码的重复率。 NBNC代码行:非空非注释的代码行数。 问题数最多Top10检查规则:问题数Top10的检查规则以及每条规则对应的问题数。 未闭环问题级别:未处理的各个等级问题数量分布情况。 问题指派分配:检查出来的代码问题修改分配情况。如果已指派的数量与问题数不一致,说明存在某代码问题还未分配修改责任人。 历史趋势:默认展示近一个月内该代码检查任务的检查结果变化趋势,包括问题数、圈复杂度和重复率。
-
查看代码度量 代码度量可准确的反映提交代码的质量,助力用户及时发现并修改问题,提升研发效能。代码度量包括以下两种类型的问题: 圈复杂度:代码的复杂度。 扫描Shell语言代码时,度量结果不支持圈复杂度计算。 单击文件名称进入文件详情页面,单击可进入到对应的代码仓修改代码。 重复率:代码检查服务通过重复块、重复行、重复率来识别被测代码的重复情况。 修改重复率问题操作指导如下: 单击文件名称进入文件详情页面。 文件详情页面左侧的竖线标识了重复的代码块,单击标识竖线,将会显示与该段代码重复的文件列表。 单击文件名称,可对比查看两个文件的重复代码块。 单击可进入到对应的代码仓修改代码。