图片来源:开源中国 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++、Java、Python、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/通过支付宝登录,提交申请,等申请通过后就可以进行登录使用啦!」
代码补全功能基于海量数据提供实时地代码补全服务,包括行内补全(单行补全)和片段补全(多行补全)。目前该功能支持 Java、Python、TypeScript、JavaScript、Go 等 5 种主流编程语言的多行和单行代码补全,以及其他 40 种编程语言的单行代码补全。
1、在 IDE 编辑器中创建一个 PHP 文件
2、在 PHP 文件中,CodeFuse 将能够根据代码上下文,为您键入的内容给出补全提示。例如键入以下函数名称并按下回车键,插件将给出代码补全提示。
3、如需接受代码补全建议,请按 Tab 键。
插件还支持输入注释文本完成多行代码补全。例如键入以下注释内容并按下回车键。CodeFuse 会根据注释内容自动生成多行代码,生成的代码以灰色文本展示。
键入内容并按下回车键后,您可以在编辑器右下角看到内容生成的状态。
自动触发代码补全功能默认开启,支持在插件面板的设置中关闭此功能,以禁止自动触发单行或多行代码补全。
说明:关闭自动触发代码补全后,您仍然可以使用 Alt/Option + \ 快捷键手动触发代码补全。
注:目前模型的生成注释功能对整个函数级别的支持较为完善,因此推荐您优先针对函数级别生成注释。
PHP
文件。PHP
文件内选中需要解释的代码片段。注:目前模型的生成注释功能对整个函数级别的支持较为完善,因此推荐您优先针对函数级别生成注释。
PHP
文件。PHP
文件内选中需要解释的代码片段。PHP
文件。PHP
文件内选中需要生成单测的代码片段。例如为以下代码片段生成单测:以下是生成的单元测试代码
<?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 支持对选定的代码片段进行分析理解,提出优化和改进建议,还能直接基于改进建议形成代码补丁,以帮助您写出更好的代码。使用代码优化的步骤如下。
PHP
文件,编写并选中一段需要优化的代码。[|]
,唤起编码建议面板查看代码变更。PS:PHPStrom插件的这里是不是有bug。没有
[|]
这个可替换按钮
「以下是针对建议 1 生成的代码补丁」
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);
}
「完成快速排序算法源代码」
<?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);
}
}