当前位置: 首页 > news >正文

CodeRush AI 助手进驻 Visual Studio:AiGen/AiFind 亮相(二)

CodeRush 是专为 Visual Studio 打造的高效开发插件,通过集成 AI 驱动功能(如自然语言生成代码的 AiGen 和智能搜索逻辑的 AiFind)、语音交互及深度重构工具,直接在 IDE 内无缝完成代码生成、修改与导航,消除窗口切换与手动操作,显著提升编码速度与专注度,让开发者更聚焦核心问题解决。

CodeRush for Visual Studio v25.1已于日前全新发布,此版本新推 AI 双引擎 AiGen(语音/文字生成与修改代码)和 AiFind(智能代码搜索),接下来我们将逐一为大家揭开这些功能的神秘面纱,欢迎下载新版体验!

在上文中(点击这里回顾>>),我们为大家介绍了安装说明、AiGen、调试器显示属性等,本文将继续介绍添加操作符重载、添加测试用例等。

获取CodeRush v25.1正式版下载

添加操作符重载

对于该类中的插入符号,双击并按住Ctrl键,然后说:“我可以获得一些数学运算符重载吗?”

过了一会儿,您应该看到下面的方法插入到您的Fraction类中:

[DebuggerDisplay("{Numerator}/{Denominator}")]
public class Fraction
{
public static Fraction operator +(Fraction a, Fraction b)
{
int numerator = a.Numerator * b.Denominator + b.Numerator * a.Denominator;
int denominator = a.Denominator * b.Denominator;
return new Fraction(numerator, denominator);
}public static Fraction operator -(Fraction a, Fraction b)
{
int numerator = a.Numerator * b.Denominator - b.Numerator * a.Denominator;
int denominator = a.Denominator * b.Denominator;
return new Fraction(numerator, denominator);
}public static Fraction operator *(Fraction a, Fraction b)
{
int numerator = a.Numerator * b.Numerator;
int denominator = a.Denominator * b.Denominator;
return new Fraction(numerator, denominator);
}public static Fraction operator /(Fraction a, Fraction b)
{
if (b.Numerator == 0)
{
throw new DivideByZeroException("Cannot divide by a fraction with zero numerator.");
}
int numerator = a.Numerator * b.Denominator;
int denominator = a.Denominator * b.Numerator;
return new Fraction(numerator, denominator);
}
public int Numerator { get; set; }
public int Denominator { get; set; }public Fraction(int numerator, int denominator)
{
if (denominator == 0)
{
throw new ArgumentException("Denominator cannot be zero.", nameof(denominator));
}Numerator = numerator;
Denominator = denominator;
}
}
新增测试用例

有了新的操作符重载,改进的Fraction类更容易使用。现在让我们用一些测试用例来验证它。双击并按住Ctrl键,然后说一些类似于“一些测试用例怎么样?”

CodeRush v25.1新版图集

在几秒钟内,您应该将一个新的类和文件FractionTests.cs添加到项目中。

在机器上使用已经引用的NUnit框架,AI构建了以下内容:

[TestFixture]
public class FractionTests
{
[Test]
public void TestAddition()
{
var fraction1 = new Fraction(1, 2);
var fraction2 = new Fraction(1, 3);
var result = fraction1 + fraction2;
Assert.AreEqual(5, result.Numerator);
Assert.AreEqual(6, result.Denominator);
}[Test]
public void TestSubtraction()
{
var fraction1 = new Fraction(1, 2);
var fraction2 = new Fraction(1, 3);
var result = fraction1 - fraction2;
Assert.AreEqual(1, result.Numerator);
Assert.AreEqual(6, result.Denominator);
}[Test]
public void TestMultiplication()
{
var fraction1 = new Fraction(1, 2);
var fraction2 = new Fraction(2, 3);
var result = fraction1 * fraction2;
Assert.AreEqual(2, result.Numerator);
Assert.AreEqual(6, result.Denominator);
}[Test]
public void TestDivision()
{
var fraction1 = new Fraction(1, 2);
var fraction2 = new Fraction(3, 4);
var result = fraction1 / fraction2;
Assert.AreEqual(4, result.Numerator);
Assert.AreEqual(6, result.Denominator);
}[Test]
public void TestZeroDenominatorThrowsException()
{
Assert.Throws<ArgumentException>(() => new Fraction(1, 0));
}[Test]
public void TestZeroNumeratorInDivisionThrowsException()
{
var fraction1 = new Fraction(1, 2);
var fraction2 = new Fraction(0, 1);
Assert.Throws<DivideByZeroException>(() => fraction1 / fraction2);
}
}

请注意,在上面高亮显示的行中,我们正在执行新的操作符重载。

遗留代码和新框架

要升级遗留代码或使用新框架,请打开该文件并简单地说明所需内容。例如,在我们刚刚创建的测试类中,可能希望将所有这些Assert.AreEqual调用转换为更流畅的内容。

例如,双击并按住Ctrl键,然后说,“嘿,我们能把所有这些Assert.AreEqual调用转换为Assert.That调用吗?”

在几秒钟内,AiGen将类中的每个方法更改为如下所示:

[TestFixture]
public class FractionTests
{
[Test]
public void TestAddition()
{
var fraction1 = new Fraction(1, 2);
var fraction2 = new Fraction(1, 3);
var result = fraction1 + fraction2;
Assert.That(result.Numerator, Is.EqualTo(5));
Assert.That(result.Denominator, Is.EqualTo(6));
}[Test]
public void TestSubtraction()
{
var fraction1 = new Fraction(1, 2);
var fraction2 = new Fraction(1, 3);
var result = fraction1 - fraction2;
Assert.That(result.Numerator, Is.EqualTo(1));
Assert.That(result.Denominator, Is.EqualTo(6));
}[Test]
public void TestMultiplication()
{
var fraction1 = new Fraction(1, 2);
var fraction2 = new Fraction(2, 3);
var result = fraction1 * fraction2;
Assert.That(result.Numerator, Is.EqualTo(2));
Assert.That(result.Denominator, Is.EqualTo(6));
}[Test]
public void TestDivision()
{
var fraction1 = new Fraction(1, 2);
var fraction2 = new Fraction(3, 4);
var result = fraction1 / fraction2;
Assert.That(result.Numerator, Is.EqualTo(4));
Assert.That(result.Denominator, Is.EqualTo(6));
}[Test]
public void TestZeroDenominatorThrowsException()
{
Assert.Throws<ArgumentException>(() => new Fraction(1, 0));
}[Test]
public void TestZeroNumeratorInDivisionThrowsException()
{
var fraction1 = new Fraction(1, 2);
var fraction2 = new Fraction(0, 1);
Assert.Throws<DivideByZeroException>(() => fraction1 / fraction2);
}
}

更多DevExpress线上公开课、中文教程资讯请上中文网获取

http://www.lryc.cn/news/595068.html

相关文章:

  • 初识网络原理
  • CentOS 7安装 FFmpeg问题可以按照以下步骤进行安装
  • 数据结构:找出字符串中重复的字符(Finding Duplicates in a String)——使用哈希表
  • 使用Python绘制专业柱状图:Matplotlib完全指南
  • 4x4矩阵教程
  • 通过TPLink路由器进行用户行为审计实战
  • 首家!数巅AskBI通过中国信通院数据分析智能体专项测试
  • 基于Python的多传感器融合的障碍物检测与避障演示
  • C++实战案例:从static成员到线程安全的单例模式
  • 基于深度学习的图像分类:使用ResNet实现高效分类
  • python实现接收九数云的异常分析指标推送通知
  • 从env到mm_struct:环境变量与虚拟内存的底层实现
  • stm32mp157f-dk2安装镜像并且部署qt全流程
  • 西门子 WinCC预定义报警控件过滤条件
  • [特殊字符] Java反射从入门到飞升:手撕类结构,动态解析一切![特殊字符]
  • 【PHP安全】免费解密支持:zend52、zend53、zend54好工具
  • 基于 HAProxy 搭建 EMQ X 集群
  • 【正常配置了beast扩展,phpinfo信息也显示了,但是就是不运行】
  • 代码随想录算法训练营第三十八天| 322. 零钱兑换 279.完全平方数 139.单词拆分
  • 数据结构自学Day11-- 排序算法
  • 归并排序:优雅的分治排序算法(C语言实现)
  • 【开源】基于 C# 编写的轻量级工控网关和 SCADA 组态软件
  • 45.sentinel自定义异常
  • C++ Lambda 表达式详解:从基础到实战
  • Leetcode力扣解题记录--第189题(巧思数组翻转)
  • Docker安装Elasticsearch 7.17.0和Kibana 7.17.0并配置基础安全
  • 表单校验--数组各项独立校验
  • 计算机发展史:晶体管时代的技术飞跃
  • Web LLM 安全剖析:以间接提示注入为核心的攻击案例与防御体系
  • WinForm-免费,可商用的WinForm UI框架推荐