AI助手来到ReSharper:帮助你优化代码
2023年07月14日 由 Alex 发表
467023
0
JetBrains发布了基于人工智能的 ReSharper 版本,这是针对Microsoft Visual Studio的开发者生产力扩展工具。新版本 ReSharper 2023.2 是首个提供基于人工智能开发辅助功能的版本。
该早期访问计划版本包括 AI 助手的预览版本,这是一个用于编程问题的聊天界面。使用 Visual Studio 和 ReSharper 的.NET开发人员可以使用 AI 助手来解决或重构现有代码、生成代码片段或文档,并咨询关于编程的一般问题。
要使用基于人工智能的功能,用户必须登录 JetBrains AI 服务以启用 AI 助手。当开发人员使用 AI 功能时,一些上下文信息(如文件类型、语言和使用的框架)会与大型语言模型(LLM)的提供者共享。除非开发人员在提示中包含代码片段,否则助手无法访问源代码。JetBrains 还计划支持本地和本地部署模型,以确保不会向基于云的 LLM 提供者发送数据,但功能集将受到一定限制。
如果开发人员在提示中使用了源代码,源代码将被发送给 LLM 提供者,并且 AI 模型将能够生成、解释或文档化代码。例如,当提问:“如何从这个查询中读取值?”并附带以下代码时:
var connection = new SqliteConnection("DataSource=:memory:");
var command = connection.CreateCommand();
command.CommandText = "Select * from Item where value > ?";
command.Parameters.Add(4);
var reader = command.ExecuteReader();
AI助手生成代码来消耗reader对象,并解释它的工作原理:
To read the values from the query, you can use the SqliteDataReader
object that ExecuteReader() returns.
Here's an example of how you can do this:
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Console.WriteLine($"{reader.GetName(i)}: {reader.GetValue(i)}");
}
}
这段代码将遍历查询返回的每一行。对于每一行,它将遍历每个字段并打印字段的名称和值。
助手还注意到在初始的代码片段中,连接(connection)、命令(command)和读取器(reader)没有被释放,因此它重构了代码以确保它们被正确清理:connection command reader
Please note that you should open the connection before executing
the command and close it after you're done.
Here's the complete code:
using (var connection = new SqliteConnection("DataSource=:memory:"))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = "Select * from Item where value > ?";
command.Parameters.AddWithValue("value", 4);
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Console.WriteLine($"{reader.GetName(i)}: {reader.GetValue(i)}");
}
}
}
}
}
这段代码使用using语句来确保在使用完后正确地释放了SqliteConnection、SqliteCommand和SqliteDataReader对象。
ReSharper还支持对提示进行修订:如果原始查询需要修订或提供更多信息,开发人员可以直接编辑,而无需重新输入整个请求。这将创建一个新的与助手的对话,同时保留原始的对话记录。此外,开发人员可以通过创建、复制、重命名或删除对话记录来组织对话记录。
总结
JetBrains AI助手与其他基于人工智能的工具(如GitHub Copilot和Amazon CodeWhisperer)有许多共同之处,但还添加了独特的功能,包括聊天记录和使用ALT+Enter快捷键访问助手,这是一个通用的快捷键。
此次发布还引入了新的快速修复和检查功能,用于处理丢弃变量,并提供了用于LINQ查询的嵌入提示。在调试LINQ查询时,开发人员将会根据嵌入提示,在查询的每个步骤中看到中间输出。
来源:https://www.infoq.com/news/2023/07/ai-assistant-resharper/