基于第三方引擎执行代码检查
应用场景
如果CodeArts Check当前提供的的检查引擎不满足用户的使用需求,可使用第三方引擎检查工具执行代码检查任务。
约束限制
- 自定义执行机功能为受限功能,如需使用,请联系技术支持。
- 需已具备CodeArts Repo服务的操作权限,具体操作可参考授权使用CodeArts Repo服务。
资源与成本规划
本实践需购买ECS作为自定义执行机,关于ECS的购买费用可参考价格计算器。
前提条件
- 已联系技术支持获取UCCP插件的代码开发样例包。
- 已参考自定义购买ECS购买本实践使用的EulerOS 7操作系统弹性云服务器。推荐配置如下:
- 已在接入的自定义执行机中已安装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
操作流程
流程 |
说明 |
---|---|
为本实践新建项目。 |
|
为本实践新建所需的自定义执行机资源池。 |
|
开发UCCP插件,用于导入自定义规则。 |
|
将第三方引擎和插件导入执行机。 |
|
在CodeArts Check服务中上传自定义规则。 |
|
为本实践新建存储代码的代码仓。 |
|
为本实践创建代码检查任务。 |
|
配置代码检查任务使用自定义执行机和自定义规则。 |
|
查看代码检查结果。 |
新建项目
- 使用华为云账号登录华为云控制台页面。
- 单击页面左上角
,在服务列表中选择 。
- 单击“前往代码检查”,进入CodeArts Check服务首页。
- 在导航栏切换到“首页”页签,依次单击 ,选用“Scrum”项目模板。
- 填写项目名称,例如“check-bestpractice”,其他参数保持默认即可。
- 单击“确定”后,进入到“check-bestpractice”项目下。
新建自定义执行机资源池
- 在导航栏中单击用户名
,选择“租户设置”。
- 选择 。
- 单击“新建资源池”,在弹出的窗口中参考表2配置参数后,单击“保存”。
- 单击新建的资源池名称“custom_pool”,进入到资源池配置页面。
- 单击“新建代理”,在弹出的窗口中,参考表3配置代理信息,其他参数项保持默认即可。
- 勾选协议,依次单击“生成命令”和“复制命令”,然后单击“关闭”。
图1 新建代理
- 根据“步骤三”提示,在弹性云服务器列表页,单击前提条件中购买的服务器所在行的“远程登录”,执行6中复制的命令。
- 在代理列表页面,单击“刷新列表”,后台自动同步信息后,代理列表中会增加一条代理执行机信息。代理执行机的代理别名为“agent_test_custom-mwlye1NlLG”。
图2 代理执行机
开发UCCP插件
- 将前提条件中获取到的开发样例包“PluginExtensionPointDemo.zip”解压至本地。
- 找到工程根目录下的“pom.xml”文件,将“<plugin.name>DemoEngine</plugin.name>”修改为新接入的引擎名称“<plugin.name>cmetrics</plugin.name>”。
- 找到类“ThirdPartyToolsPlugin.java”,将名称更改为2中新接入的引擎名称,例如“CmetricsToolsPlugin”。
注意更改构造函数名称需与文件名保持一致。
- 修改“settings”文件,更改为外部可下载依赖的仓库。
- 实现“CmetricsToolsPlugin”中“execute”方法。
入参说明如下:
返回一个缺陷列表文件即可,缺陷字段说明见下图:
- 建议在“execute”中间调用引擎脚本,直接由引擎生成“defect”缺陷列表文件。
将第三方引擎和插件导入执行机
- 在执行机“/opt/cloud/”目录下,执行以下命令,创建“third_party_tools/v1/plugins”目录。
mkdir -p /opt/cloud/third_party_tools/v1/plugins
- 在自定义执行上将开发完成的UCCP插件放入工具插件路径“/opt/cloud/third_party_tools/v1/plugins”,然后执行以下命令更改权限。
chmod -R 777 [所换包的路径] & chown -R slave1:slave1 [所换包的路径] &
- 将工具包放入工具路径“/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”。
上传自定义规则
- 进入代码检查首页,在“规则”页面,单击“新建规则”,选择“批量导入规则”。
批量导入规则可以导入任一引擎,任一语言的规则。
图3 批量导入规则 - 代码检查服务提供了固定的表格模板,必须按照模板填写规则信息,才能成功导入。
图4 上传规则文件
- 导入成功后,在左边选择“自定义规则”,就可以看到1中导入的规则。
自定义规则可由创建者进行编辑和删除。单击“管理”,可以修改规则信息,或者删除此条规则。
新建CodeArts Repo代码仓
- 在导航栏中选择 ,进入代码托管服务首页。
- 在代码托管页面,单击“新建仓库”。
- 在新建仓库页面,选择“按模板新建”。
- 单击“下一步”,搜索并选择“Java Maven Demo”模板。
- 单击“下一步”,仓库名称填写“custom_repo”,“自动创建代码检查任务”参数需要去除勾选。其他参数保持默认即可。
- 单击“确定”,完成代码仓的创建。
创建完成后的代码仓文件目录如图5所示。
创建代码检查任务
- 在代码检查任务列表页,单击“新建任务”,按照如表4配置参数。
表4 代码检查任务参数说明 参数
说明
归属项目
创建代码检查任务所属项目中创建的项目名称“check-bestpractice”。默认填写,无需配置。
代码源
选择需要检查的代码来源。选择“Repo”。
任务名称
代码检查任务名称,可自定义。例如:CheckTask01。
仓库
选择新建CodeArts Repo代码仓中创建的代码仓“custom_repo”。
分支
保持默认“master”即可。
检查语言
选择“Java”。
- 单击“新建任务”,完成代码检查任务的创建。
创建自定义规则集
- 在代码检查任务列表页,单击“规则集”页签,进入规则集列表页面。
- 单击“新建规则集”,在弹出的窗口设置“规则集名称”为“RuleList”,“检查语言”为“Java”。
- 单击“确定”,进入到“规则集配置”页面。
- 勾选上传自定义规则中规则,单击右上角“保存”。
配置代码检查任务
- 在代码检查任务列表页单击代码检查任务名称,进入代码检查任务详情页。
- 单击“设置”。
- 单击“规则集”,在右侧区域单击
,选择创建自定义规则集中创建的规则集“RuleList”。
- 单击右上角“开始检查”。