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

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

应用场景

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

约束限制

  • 自定义执行机功能为受限功能,如需使用,请联系技术支持。
  • 需已具备CodeArts Repo服务的操作权限,具体操作可参考授权使用CodeArts Repo服务

资源与成本规划

本实践需购买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 操作流程

流程

说明

新建项目

为本实践新建项目。

新建自定义执行机资源池

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

开发UCCP插件

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

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

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

上传自定义规则

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

新建CodeArts Repo代码仓

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

创建代码检查任务

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

配置代码检查任务

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

查看检查结果

查看代码检查结果。

新建项目

  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. 单击任务名称,查看代码检查详情,包括概览、代码问题、代码度量、检查日志等。

相关文档