文档首页/ 代码检查 CodeArts Check/ 最佳实践/ 基于第三方引擎执行代码检查
更新时间:2026-06-12 GMT+08:00
分享

基于第三方引擎执行代码检查

应用场景

如果CodeArts Check当前提供的检查引擎不满足用户的使用需求,可使用第三方引擎检查工具执行代码检查任务。

约束限制

资源与成本规划

本实践需购买ECS作为自定义执行机,关于ECS的购买费用可参考价格计算器

前提条件

  • 已联系技术支持获取UCCP插件的代码开发样例包,如需帮助请提交工单联系技术支持工程师。
  • 已参考自定义购买ECS购买本实践使用的EulerOS 7操作系统弹性云服务器。推荐配置如下:
    • CPU:8U,内存:32G,系统盘:100G,数据盘:250G。(使用该执行机规格时,需要执行挂载云硬盘操作。)
    • CPU:8U,内存:32G,系统盘:250G。(使用该执行机规格时,无需执行挂载云硬盘操作。)
  • 已在接入的自定义执行机中已安装Git-lfs,若未安装,可在执行机上参考以下命令安装Git-lfs。
    # 下载
    wget -O  git-lfs.tar.gz https://github.com/git-lfs/git-lfs/releases/download/v3.4.1/git-lfs-linux-amd64-v3.4.1.tar.gz
    # 解压
    tar -zxvf git-lfs.tar.gz
    # 进入解压后的目录
    cd  git-lfs-3.4.1
    # 执行安装脚本
    sh install.sh
    # 验证
    git lfs version

操作流程

表1 操作流程

序号

流程

说明

1

新建项目

为本实践新建项目。

2

新建自定义执行机资源池

为本实践新建所需的自定义执行机资源池。

3

开发UCCP插件

开发UCCP插件,用于导入自定义规则。

4

将第三方引擎和插件导入执行机

将第三方引擎和插件导入执行机。

5

上传自定义规则

在CodeArts Check服务中上传自定义规则。

6

新建CodeArts Repo代码仓

为本实践新建存储代码的代码仓。

7

创建代码检查任务

为本实践创建代码检查任务。

8

配置代码检查任务

配置代码检查任务使用自定义执行机和自定义规则。

9

查看检查结果

查看代码检查结果。

新建项目

  1. 使用华为云账号登录华为云控制台页面
  2. 单击页面左上角,在服务列表中选择开发与运维 > 代码检查 CodeArts Check
  3. 单击“前往代码检查”,进入CodeArts Check服务首页。
  4. 在导航栏切换到“首页”页签,依次单击新建 > 新建项目,选用“Scrum”项目模板。
  5. 填写项目名称,例如“check-bestpractice”,其他参数保持默认即可。
  6. 单击“确定”后,进入到“check-bestpractice”项目下。

新建自定义执行机资源池

  1. 在导航栏中单击用户名,选择“租户设置”
  2. 选择资源池管理 > 资源池
  3. 单击“新建资源池”,在弹出的窗口中参考表2配置参数后,单击“保存”

    表2 资源池配置参数说明

    参数名称

    参数说明

    资源池名称

    资源池的名称,根据需要自定义。例如:custom_pool。

    资源池类型

    选择LINUX_DOCKER。执行任务时将拉起一个Linux docker容器,任务在容器中运行。

    资源池描述

    根据需要输入资源池描述。可不填写。

    资源池可以被租户下所有子用户使用

    勾选后,此资源池可以被当前租户下所有子用户使用。可不勾选。

  4. 单击新建的资源池名称“custom_pool”,进入到资源池配置页面。
  5. 单击“新建代理”,在弹出的窗口中,参考表3配置代理信息,其他参数项保持默认即可。

    表3 新建代理参数说明

    参数

    说明

    是否安装Docker

    勾选此项,需要安装Docker。

    自动安装Docker

    打开开关,自动安装Docker。

    AK

    参考获取AK/SK获取。

    SK

    参考获取AK/SK获取。

    代理名称

    自定义代理名称。例如:agent_test_custom。

    代理工作空间

    填写代理工作空间,需符合标准的linux目录格式。例如:/opt/agent_test_custom。

  6. 勾选协议,依次单击“生成命令”“复制命令”,然后单击“关闭”

    图1 新建代理

  7. 根据“步骤三”提示,在弹性云服务器列表页,单击前提条件中购买的服务器所在行的“远程登录”,执行6中复制的命令。
  8. 在代理列表页面,单击“刷新列表”,后台自动同步信息后,代理列表中会增加一条代理执行机信息。代理执行机的代理别名为“agent_test_custom-mwlye1NlLG”

    图2 代理执行机

开发UCCP插件

  1. 前提条件中获取到的开发样例包“PluginExtensionPointDemo.zip”解压至本地。
  2. 找到工程根目录下的“pom.xml”文件,将“<plugin.name>DemoEngine</plugin.name>”修改为新接入的引擎名称“<plugin.name>cmetrics</plugin.name>”
  3. 找到类“ThirdPartyToolsPlugin.java”,将名称更改为2中新接入的引擎名称,例如“CmetricsToolsPlugin”

    注意更改构造函数名称需与文件名保持一致。

  4. 修改“settings”文件,更改为外部可下载依赖的仓库。

  5. 实现“CmetricsToolsPlugin”“execute”方法。

    入参说明如下:

    返回一个缺陷列表文件即可,缺陷字段说明见下图:

  6. 建议在“execute”中间调用引擎脚本,直接由引擎生成“defect”缺陷列表文件。

将第三方引擎和插件导入执行机

  1. 在执行机“/opt/cloud/”目录下,执行以下命令,创建“third_party_tools/v1/plugins”目录。

    mkdir -p /opt/cloud/third_party_tools/v1/plugins

  2. 在自定义执行上将开发完成的UCCP插件放入工具插件路径“/opt/cloud/third_party_tools/v1/plugins”,然后执行以下命令更改权限。

    chmod -R 777 [所换包的路径] &
    chown -R slave1:slave1 [所换包的路径] &

  3. 将工具包放入工具路径“/opt/cloud/third_party_tools/v1/tools”,然后执行以下命令更改权限。

    chmod -R 777 [所换包的路径] &
    chown -R slave1:slave1 [所换包的路径] &

上述插件路径和工具路径中的“v1”代表“版本号”。可以同时存在多个版本,例如“/opt/cloud/third_party_tools/v1/plugins”“/opt/cloud/third_party_tools/v2/plugins”“/opt/cloud/third_party_tools/v3/plugins”。在执行任务时,会选择最大的版本号执行任务。例如在这里会选择/opt/cloud/third_party_tools/v3/plugins下的插件来执行任务。此规则同样适用于“tools”

上传自定义规则

  1. 进入代码检查首页,在“规则”页面,单击“新建规则”,选择“批量导入规则”

    批量导入规则可以导入任一引擎,任一语言的规则。

    图3 批量导入规则

  2. 代码检查服务提供了固定的表格模板,必须按照模板填写规则信息,才能成功导入。

    图4 上传规则文件

  3. 导入成功后,在左边选择“自定义规则”,就可以看到1中导入的规则。

    自定义规则可由创建者进行编辑和删除。单击“管理”,可以修改规则信息,或者删除此条规则。

新建CodeArts Repo代码仓

  1. 在导航栏中选择服务 > 代码托管,进入代码托管服务首页。
  2. 在代码托管页面,单击“新建仓库”
  3. 在新建仓库页面,选择“按模板新建”
  4. 单击“下一步”,搜索并选择“Java Maven Demo”模板。
  5. 单击“下一步”,仓库名称填写“custom_repo”“自动创建代码检查任务”参数需要去除勾选。其他参数保持默认即可。
  6. 单击“确定”,完成代码仓的创建。

    创建完成后的代码仓文件目录如图5所示。

    图5 代码仓文件目录

创建代码检查任务

  1. 在代码检查任务列表页,单击“新建任务”,按照如表4配置参数。

    表4 代码检查任务参数说明

    参数

    说明

    归属项目

    创建代码检查任务所属项目中创建的项目名称“check-bestpractice”。默认填写,无需配置。

    代码源

    选择需要检查的代码来源。选择“Repo”

    任务名称

    代码检查任务名称,可自定义。例如:CheckTask01。

    仓库

    选择新建CodeArts Repo代码仓中创建的代码仓“custom_repo”

    分支

    保持默认“master”即可。

    检查语言

    选择“Java”

  2. 单击“确定”,完成代码检查任务的创建。

创建自定义规则集

  1. 在代码检查任务列表页,单击“规则集”页签,进入规则集列表页面。
  2. 单击“新建规则集”,在弹出的窗口设置“规则集名称”“RuleList”“检查语言”“Java”
  3. 单击“确定”,进入到“规则集配置”页面。
  4. 勾选上传自定义规则中规则,单击右上角“保存”。

配置代码检查任务

  1. 在代码检查任务列表页单击代码检查任务名称,进入代码检查任务详情页。
  2. 单击“设置”
  3. 单击“规则集”,在右侧区域单击,选择创建自定义规则集中创建的规则集“RuleList”
  4. 单击右上角“执行检查”

查看检查结果

  1. 在代码检查页面任务列表中,搜索创建代码检查任务创建的任务名称“CheckTask01”
  2. 单击任务名称,查看代码检查详情,包括概览、代码问题、代码度量、检查日志等。

相关文档