前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >「CodeFuse」如何在PHPStorm中使用CodeFuse完成快速排序算法的编写

「CodeFuse」如何在PHPStorm中使用CodeFuse完成快速排序算法的编写

作者头像
Tinywan
发布于 2023-10-26 11:15:17
发布于 2023-10-26 11:15:17
57100
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

图片来源:开源中国 https://my.oschina.net/u/6942768/blog/10122694

简介

CodeFuse 是一款为国内开发者提供智能研发服务的产品,该产品是基于蚂蚁集团自研的基础大模型进行微调的代码大模型。CodeFuse 具备代码补全、添加注释、解释代码、生成单测,以及代码优化功能,以帮助开发者更快、更轻松地编写代码。

功能特性

CodeFuse 提供多个 IDE 插件版,支持在 10 款 IDE 中使用,包括支付宝小程序云云端研发、Visual Studio Code,以及 JetBrains 系列的 IntelliJ IDEA、PyCharm、WebStorm、GoLand、CLion、DataGrip、PhpStorm 和 RubyMine。此外,CodeFuse 支持 40 多种编程语言,包括 PHP、C++、JavaPython、JavaScript 等,目前 CodeFuse 针对 Java 与 Python 的代码生成质量较高。

「CodeFuse 支持的功能如下表」

功能

说明

代码补全

基于海量数据提供实时地代码补全服务,包括行内补全(单行补全)和片段补全(多行补全)。

添加注释

智能为选定的代码生成注释,目前在整个函数级别的生成注释效果较好。

解释代码

智能解析代码意图,为选定的代码生成解释,辅助阅读并理解代码。

生成单测

在写完业务逻辑后,为选定的代码生成单测,即可智能生成具备业务语义的测试用例,从而提升问题发现的效率。

代码优化

基于大模型的代码理解能力和静态源码分析能力,CodeFuse 支持对选定的代码片段进行分析理解并提出优化、改进建议,还能直接基于改进建议生成代码补丁。

快速开始

以下将在PhpStorm IDE 插件的安装步骤和多个代码场景的使用示例,以帮助您快速使用 CodeFuse。

步骤一

下载 CodeFuse 插件安装包:https://amctats-hz.oss.cloudrun.cloudbaseapp.cn/codefuse/CodeFuse-beta-0.1.0.zip

步骤二

PhpStorm 顶部功能栏,单击 Flie【文件】 > Settings【设置】(Ctrl + Alt + S) 进入设置页面。在 Plugins(插件) 中选择 Install Plugin from Disk(从磁盘安装插件)

安装包进行安装

选择【桌面】选择已经下载好的压缩包 CodeFuse-beta-0.1.0.zip

步骤三

点击 CodeFuse 插件面板,进行用户登录

步骤四

登录成功

「注意:首次开通现需要去官网:https://codefuse.alipay.com/通过支付宝登录,提交申请,等申请通过后就可以进行登录使用啦!」

使用 CodeFuse 插件

使用

代码补全

代码补全功能基于海量数据提供实时地代码补全服务,包括行内补全(单行补全)和片段补全(多行补全)。目前该功能支持 Java、Python、TypeScript、JavaScript、Go 等 5 种主流编程语言的多行和单行代码补全,以及其他 40 种编程语言的单行代码补全。

单行代码补全

1、在 IDE 编辑器中创建一个 PHP 文件

2、在 PHP 文件中,CodeFuse 将能够根据代码上下文,为您键入的内容给出补全提示。例如键入以下函数名称并按下回车键,插件将给出代码补全提示。

3、如需接受代码补全建议,请按 Tab 键。

多行代码补全

插件还支持输入注释文本完成多行代码补全。例如键入以下注释内容并按下回车键。CodeFuse 会根据注释内容自动生成多行代码,生成的代码以灰色文本展示。

键入内容并按下回车键后,您可以在编辑器右下角看到内容生成的状态。

关闭自动代码补全

自动触发代码补全功能默认开启,支持在插件面板的设置中关闭此功能,以禁止自动触发单行或多行代码补全。

  • 单行代码补全:例如在编辑器中键入一个函数名称并按下回车键。
  • 多行代码补全:例如在编辑器中键入一段注释文本并按下回车键。

说明:关闭自动触发代码补全后,您仍然可以使用 Alt/Option + \ 快捷键手动触发代码补全。

解释代码

注:目前模型的生成注释功能对整个函数级别的支持较为完善,因此推荐您优先针对函数级别生成注释。

  1. 在 IDE 编辑器中创建一个 PHP 文件。
  2. PHP 文件内选中需要解释的代码片段。
  3. 单击鼠标右键,选择 「CodeFuse:解释代码」,插件将在右侧的对话窗口中生成代码解释。

添加注释

注:目前模型的生成注释功能对整个函数级别的支持较为完善,因此推荐您优先针对函数级别生成注释。

  1. 在 IDE 编辑器中创建一个 PHP 文件。
  2. PHP 文件内选中需要解释的代码片段。
  3. 单击鼠标右键,选择 「CodeFuse:添加注释」,插件将在右侧的对话窗口中生成添加注释。

生成单测

  1. 在 IDE 编辑器中创建一个 PHP 文件。
  2. PHP 文件内选中需要生成单测的代码片段。例如为以下代码片段生成单测:
  3. 单击鼠标右键,选择 「CodeFuse:生成单测」,插件将在右侧的对话窗口中为选中的代码生成测试用例。

以下是生成的单元测试代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

class QuickSortTest extends PHPUnit_Framework_TestCase {
   public function testQuickSort() {
       // 测试空数组
       $arr = array();
       $result = QuickSort::quickSort($arr);
       $this->assertEquals(array(), $result);

       // 测试只有一个元素的数组
       $arr = array(1);
       $result = QuickSort::quickSort($arr);
       $this->assertEquals(array(1), $result);

       // 测试多个元素的数组
       $arr = array(3, 1, 4, 2, 5);
       // 预期结果
       $expected = array(1, 2, 3, 4, 5);
       $result = QuickSort::quickSort($arr);
       $this->assertEquals($expected, $result);
   }
}

可以看到生成单元测试测试代码自动继承PHP单元测试框架PHPUnit_Framework_TestCase

代码优化

基于大模型的代码理解能力和静态源码分析能力,CodeFuse 支持对选定的代码片段进行分析理解,提出优化和改进建议,还能直接基于改进建议形成代码补丁,以帮助您写出更好的代码。使用代码优化的步骤如下。

  1. 在 IDE 编辑器中创建一个 PHP 文件,编写并选中一段需要优化的代码。
  2. 单击鼠标右键,选择 「CodeFuse:代码优化」,将在插件面板提供多个代码优化建议。
  1. 在插件面板,单击按照以上建议优化选中的代码,生成优化后的代码。
  1. 鼠标放置在生成的代码上,单击[|],唤起编码建议面板查看代码变更。

PS:PHPStrom插件的这里是不是有bug。没有[|]这个可替换按钮

「以下是针对建议 1 生成的代码补丁」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static function quickSort($arr)
{
    if (count($arr) <= 1) {
        return $arr;
    }
    $key = $arr[0];
    $left_arr = array();
    $right_arr = array();
    for ($i = 1; $i < count($arr); $i++) {
        if ($arr[$i] <= $key) {
            $left_arr[] = $arr[$i];
        } else {
            $right_arr[] = $arr[$i];
        }
    }
    $left_arr = self::quickSort($left_arr);
    $right_arr = self::quickSort($right_arr);
    return array_merge($left_arr, array($key), $right_arr);
}

「完成快速排序算法源代码」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

class CodeFuse {
    /**
     * 快速排序算法
     */
    public static function quickSort($arr)
    {
        if (count($arr) <= 1) {
            return $arr;
        }
        $key = $arr[0];
        $left_arr = array();
        $right_arr = array();
        for ($i = 1; $i < count($arr); $i++) {
            if ($arr[$i] <= $key) {
                $left_arr[] = $arr[$i];
            } else {
                $right_arr[] = $arr[$i];
            }
        }
        $left_arr = self::quickSort($left_arr);
        $right_arr = self::quickSort($right_arr);
        return array_merge($left_arr, array($key), $right_arr);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
字节跳动基于 Apache Hudi 的湖仓一体方案及应用实践
目前主流的数仓架构—— Lambda 架构,能够通过实时和离线两套链路、两套代码同时兼容实时数据与离线数据,做到通过批处理提供全面及准确的数据、通过流处理提供低延迟的数据,达到平衡延迟、吞吐量和容错性的目的。在实际应用中,为满足下游的即席查询,批处理和流处理的结果会进行合并。
王知无-import_bigdata
2023/09/18
8850
字节跳动基于 Apache Hudi 的湖仓一体方案及应用实践
农业银行湖仓一体实时数仓建设探索实践
在数字化转型驱动下,实时化需求日益成为金融业数据应用新常态。传统离线数仓“T+N”数据供给模式,难于满足“T+0”等高时效场景需求;依托Storm、Spark Streaming、Flink等实时计算框架提供“端到端”的实时加工模式,无法沉淀实时数据资产,存在实时数据复用性低、烟囱式垂直建设等不足。
ApacheHudi
2023/11/06
1.7K0
农业银行湖仓一体实时数仓建设探索实践
B站基于Hudi+Flink打造流式数据湖的落地实践
上图展示了当前B站实时数仓的一个简略架构,大致可以分为采集传输层、数据处理层,以及最终的AI和BI应用层。为保证稳定性,数据处理层是由以实时为主,以离线兜底的两条链路组成,即我们熟知的批流双链路。
ApacheHudi
2023/09/04
1.3K0
B站基于Hudi+Flink打造流式数据湖的落地实践
尘锋信息基于 Apache Paimon 的流批一体湖仓实践
尘锋信息 (www.dustess.com) 是基于企业微信生态的一站式私域运营管理解决方案供应商,致力于成为全行业首席私域运营与管理专家,帮助企业构建数字时代私域运营管理新模式,助力企业实现高质量发展。
从大数据到人工智能
2023/05/03
4K1
尘锋信息基于 Apache Paimon 的流批一体湖仓实践
Apache Paimon毕业,湖仓架构的未来发展趋势!
恭喜Paimon进入一个新的篇章,这篇文章也是我个人结合当前整个湖仓领域的发展和实践写的一个总结性质的文章。
王知无-import_bigdata
2024/05/07
5580
Apache Paimon毕业,湖仓架构的未来发展趋势!
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
在当今这个数据洪流的信息时代下,数据已跃升为企业不可或缺的核心资产。深度挖掘并提炼数据内在价值,成为支撑企业战略决策的重要依据。在此背景下,快手建立了 OLAP 系统,该系统在快手应用极为广泛,每天承载近 10 亿的查询请求,为内外多个业务场景提供数据服务。具体场景包括:
SelectDB技术团队
2024/09/27
4600
实时数仓:实时数仓3.0的演进之路
传统意义上我们通常将数据处理分为离线数据处理和实时数据处理。对于实时处理场景,我们一般又可以分为两类,一类诸如监控报警类、大屏展示类场景要求秒级甚至毫秒级;另一类诸如大部分实时报表的需求通常没有非常高的时效性要求,一般分钟级别,比如10分钟甚至30分钟以内都可以接受。
Freedom123
2024/03/29
5930
实时数仓:实时数仓3.0的演进之路
腾讯游戏广告流批一体实时湖仓建设实践
腾讯游戏广告业务对数据准确性和实时性均有诉求,因此数据开发团队分别搭建了离线及实时数仓。技术视角下,这是典型的Lambda架构,存在数据口径不一致、开发维护成本高等弊端。在降本增效的大背景下,我们针对结合计算引擎Flink与数据湖技术Iceberg建设流批一体实时湖仓做了较多的探索和实践,已经具备可落地可复制的经验。借助Flink框架支持批处理作业的能力,我们实现了将流处理层和批处理层的计算层面统一于Flink SQL,存储层面统一于Iceberg。
可君
2023/01/10
2K0
湖仓一体
我理解就是各类数据爆发的公司当前数据平台架构遇到了各类各样的问题,寻求一个适配公司、平台的数据架构,一站式解决,但是大家对湖、仓本质的理解可能都不太一样,那又怎么谈湖仓一体呢。
jasong
2024/11/22
3420
湖仓一体电商项目(一):项目背景和架构介绍
湖仓一体实时电商项目是基于某宝商城电商项目的电商数据分析平台,本项目在技术方面涉及大数据技术组件搭建,湖仓一体分层数仓设计、实时到离线数据指标分析及数据大屏可视化,项目所用到的技术组件都从基础搭建开始,目的在于湖仓一体架构中数据仓库与数据湖融合打通,实现企业级项目离线与实时数据指标分析。在业务方面目前暂时涉及到会员主题与商品主题,分析指标有用户实时登录信息分析、实时浏览pv/uv分析、实时商品浏览信息分析、用户积分指标分析,后续还会继续增加业务指标和完善架构设计。
Lansonli
2022/07/30
1.3K0
湖仓一体电商项目(一):项目背景和架构介绍
字节跳动基于 Apache Hudi 构建实时数仓的实践
导读:今天很高兴能与大家分享字节数据平台在实时数仓中的一些实践。目前在数据湖和Hudi相关的一些基本技术原理方面社区已有较多的介绍,所以我们今天的分享主要聚焦于实践部分的内容。
从大数据到人工智能
2022/10/05
2.4K0
字节跳动基于 Apache Hudi 构建实时数仓的实践
字节电商场景基于Apache Hudi的落湖实践
字节跳动早期为了快速支持业务,对于电商流量数据采用Lambda的设计架构,由于当前电商流量数据随着建设的深入和精细化的运营,设计架构的弊端也愈发凸显。
ApacheHudi
2023/09/25
4590
字节电商场景基于Apache Hudi的落湖实践
干货|流批一体Hudi近实时数仓实践
传统意义上的数据集市主要处理T+1的数据。随着互联网的发展,当前越来越多的业务场景对于数据时效性提出了更高的要求,以便及时快速地进行数据分析和业务决策,比如依托实时数据情况开展实时推荐、实时风控、实时营销等。特别是各种新技术的出现、发展和日趋成熟,实时数据分析和处理也成为可能。实时的大规模数据处理成为企业数字化转型过程中需要破解的难题,也是企业当前面临的一个普遍需求。
大数据老哥
2021/08/25
6.5K0
干货|流批一体Hudi近实时数仓实践
Apache Hudi在腾讯的落地与应用
Apache Hudi是一个基于数据库内核的流式数据湖平台,支持流式工作负载,事务,并发控制,Schema演进与约束;同时支持Spark/Presto/Trino/HIve等生态对接,在数据库内核侧支持可插拔索引的更新,删除,同时会自动管理文件大小,数据Clustering,Compaction,Cleanning等
ApacheHudi
2022/12/09
1.9K1
Apache Hudi在腾讯的落地与应用
字节跳动基于Doris的湖仓分析探索实践
导读:Doris是一种MPP架构的分析型数据库,主要面向多维分析、数据报表、用户画像分析等场景。自带分析引擎和存储引擎,支持向量化执行引擎,不依赖其他组件,兼容MySQL协议。
从大数据到人工智能
2022/09/14
1.2K0
字节跳动基于Doris的湖仓分析探索实践
数据湖技术在抖音近实时场景的实践
首先,数据湖可存储海量、低加工的原始数据。在数据湖中开发成本较低,可以支持灵活的构建,构建出来的数据的复用性也比较强。
从大数据到人工智能
2022/11/30
7920
数据湖技术在抖音近实时场景的实践
数据湖|Flink + Iceberg 全场景实时数仓的建设实践
摘要:Apache Flink 是目前大数据领域非常流行的流批统一的计算引擎,数据湖是顺应云时代发展潮流的新型技术架构,以 Iceberg、Hudi、Delta 为代表的解决方案应运而生,Iceberg 目前支持 Flink 通过 DataStream API /Table API 将数据写入 Iceberg 的表,并提供对 Apache Flink 1.11.x 的集成支持。
大数据技术架构
2021/08/25
4.6K0
数据湖|Flink + Iceberg  全场景实时数仓的建设实践
腾讯广告业务基于Apache Flink + Hudi的批流一体实践
广告主和代理商通过广告投放平台来进行广告投放,由多个媒介进行广告展示 ,从而触达到潜在用户。整个过程中会产生各种各样的数据,比如展现数据、点击数据。其中非常重要的数据是计费数据,以计费日志为依据向上可统计如行业维度、客户维度的消耗数据,分析不同维度的计费数据有助于业务及时进行商业决策,但目前部门内消耗统计以离线为主,这种T+1延迟的结果已经无法满足商业分析同学的日常分析需求,所以我们的目标为:建设口径统一的实时消耗数据,结合BI工具的自动化配置和展现能力,满足业务实时多维消耗分析,提高数据运营的效率和数据准确性。
大数据真好玩
2022/06/17
1.4K0
腾讯广告业务基于Apache Flink + Hudi的批流一体实践
Apache Hudi在华米科技的应用-湖仓一体化改造
华米科技是一家基于云的健康服务提供商,拥有全球领先的智能可穿戴技术。在华米科技,数据建设主要围绕两类数据:设备数据和APP数据,这些数据存在延迟上传、更新频率高且广、可删除等特性,基于这些特性,前期数仓ETL主要采取历史全量+增量模式来每日更新数据。随着业务的持续发展,现有数仓基础架构已经难以较好适应数据量的不断增长,带来的显著问题就是成本的不断增长和产出效率的降低。
ApacheHudi
2021/10/21
9900
Flink 数据湖 助力美团数仓增量生产
整个架构图分为三层,从下往上看,最下面一层是数据安全,包括受限域认证系统、加工层权限系统,应用层权限系统,安全审计系统,来保证最上层数据集成与处理的安全;
kk大数据
2020/12/29
1.7K0
Flink 数据湖 助力美团数仓增量生产
推荐阅读
相关推荐
字节跳动基于 Apache Hudi 的湖仓一体方案及应用实践
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 简介
  • 功能特性
  • 快速开始
    • 步骤一
    • 步骤二
      • 安装包进行安装
    • 步骤三
    • 步骤四
      • 登录成功
      • 使用 CodeFuse 插件
  • 使用
    • 代码补全
      • 单行代码补全
      • 多行代码补全
      • 关闭自动代码补全
    • 解释代码
    • 添加注释
    • 生成单测
    • 代码优化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档