Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
Visual Studio 2019 |Visual Studio 2022
Visual Studio My Work 和 Code Review 功能支持从一个工作线程切换到另一个线程的上下文。 此外,团队成员可以轻松交换有关代码建议的更改的消息。 本文阐释了这些功能,继续学习 Devops 开发人员一生中的“一天”教程:为用户情景编写新代码。
注释
Visual Studio My Work 和 Code Review 功能适用于以下版本:
- Visual Studio 2022:Visual Studio Community、Visual Studio Professional 和 Visual Studio Enterprise
- Visual Studio 2019:Visual Studio Professional 和 Visual Studio Enterprise
本教程介绍如何暂停当前任务的工作,以立即修复阻止其他工作项中的团队成员的 bug。 修复 bug 后,可以要求同事查看修复程序,并在评审通过后,签入修复并恢复原始任务的工作。
暂停当前工作
在处理积压工作项时,你可能会发现另一个阻止队友的项目中的 bug。 如果它是你熟悉的区域,则可以创建一个任务来修复 bug 并将其分配给自己,以便立即处理。
在开始处理新 bug 之前,需要确保当前工作放在团队服务器上的安全位置。 在 Visual Studio 团队资源管理器的 “我的工作 ”页上,选择 “挂起 ”以在服务器上保存:
完成的所有工作,包括对代码、测试和其他文件的更改。
打开解决方案、窗口、断点、监视窗口变量和其他 Visual Studio 状态位。
现在工作区已清理,请将新任务从“可用工作项”拖动到“正在进行工作”。 你已准备好研究并编写修补程序。
注释
工作上下文链接到“我的工作”页上显示为“正在进行”的工作项。 通过使用 “暂停 ”和 “恢复”,可以在不同的任务之间快速切换。 打开的解决方案和文件、代码更改和 Visual Studio 布局全部切换在一起。
暂停当前工作并开始处理其他任务
切换工作上下文:
如果尚未连接到要处理的项目, 请连接到项目。
在团队资源管理器的主页中,选择“我的工作”。
在“ 我的工作 ”页上的“ 正在进行中工作 ”部分中,选择“ 挂起”。
在出现的框中,根据需要更改要为这组挂起的工作指定的名称,然后选择“ 挂起”。 该项显示在 “挂起的工作”下。
将工作项从可用工作项拖到正在进行的工作。 或者,可以通过从 “挂起的工作”中拖动它切换到之前挂起的工作项。
如果要自行分配的工作项未显示在 “可用工作项”下,可以:
- 通过选择“ 新建”创建新任务或其他工作项。
- 通过选择 “打开查询”选择其他查询。
小窍门
“正在进行的工作”项链接到当前代码更改和 Visual Studio 状态。 若要允许 Visual Studio 帮助你组织工作,请确保从一个任务切换到另一个任务时,相应的项处于 “正在进行工作 ”状态。
调查 bug
打开新的 bug 并阅读说明。 在此示例中,测试团队的成员的说明指出,付费发票有时被错误地标记为未付款。 实验室环境快照附加到 bug 工作项。 打开运行测试的虚拟机(VM),查看错误的发票,并单步执行 IntelliTrace 日志。 可以将错误跟踪到以下方法:
public class LocalMath
{
public static bool EqualTo(double a, double b)
{
return a == b;
}
从 IntelliTrace 日志中可以看到,有时该方法返回 false,因为参数的差别极小。 你知道,这种舍入错误在浮点算术中是不可避免的,并且测试浮点数是否相等是错误的做法。
增加测试以显示错误
发现 bug 时,它显示单元测试中存在差距,或者测试与用户的实际需求不匹配。 因此,在修复 bug 之前,请添加一个测试来演示此错误是否存在:
// Added 2022-02-02 for bug 654321:
/// <summary>
/// Make sure that number equality test allows for
/// small rounding errors.
/// </summary>
[TestMethod]
public void TestDoublesEqual()
{
// Allow a rounding error of 1 in 1000000:
TestEqual(1, 1e-7, true); // Less than allowed error
TestEqual(1, 1e-5, false); // More than allowed error
TestEqual(1000, 1e-7, true); // Less than allowed error
TestEqual(1000, 1e-5, false); // More than allowed error
}
private void TestEqual(double value, double error, bool result)
{
// Try different combinations of error and value:
Assert.IsTrue(result == LocalMath.EqualTo(value + error, value));
Assert.IsTrue(result == LocalMath.EqualTo(value, value + error));
Assert.IsTrue(result == LocalMath.EqualTo(value - error, value));
Assert.IsTrue(result == LocalMath.EqualTo(value, value - error));
}
运行测试,并按预期失败。
使测试通过
修复代码:
public static bool EqualTo(double a, double b)
{
// Allow for rounding errors.
// For example, a == 2.0 and b = 1.99999999999
const double allowedError = 1/1000000;
return System.Math.Abs(a - b) < allowedError;
}
测试现在通过:
请求代码评审
对 bug 的修复感到满意时,请不要签入你的工作。 Teams 使用代码评审来提高总体代码质量,并降低创建更多 bug 的风险。 使用 团队资源管理器 从团队成员请求代码评审。
请求代码评审
在团队资源管理器的“正在进行工作”下的“我的工作”页上,选择“请求审阅”。
此时会显示 “新建代码审阅 ”页。
- 在 “输入审阅者 ”字段的名称中,指定一个或多个审阅者,并在每次选择后按 Enter。
- 在下一个字段中,如果需要,请更改审阅的名称。
- 在下一个字段中,确保显示正确的区域路径。
- 在下一个字段中,键入可选说明。
选择 “提交请求”。
审阅者通过电子邮件通知请求。
还可以请求对挂起的工作、搁置集或变更集进行代码评审。 若要查看更改集的列表,请打开 源代码管理资源管理器 并选择 “历史记录 ”按钮。
执行代码评审
审阅者可以接受代码评审请求。 审阅者审阅代码,在文件和代码块级别编写一些注释,然后将代码评审发送回你。 请求的审阅者太忙,无法审阅代码可能会拒绝评审。
在评论中,审阅者指出测试错误。 允许的错误应是输入值的指定分数,而不是常量。 因此,测试应将错误乘以值。
// We allow a rounding error of 1 in 1000000
// as a fraction of the value:
TestEqual(1, 1e-7, true); // Less than allowed error
TestEqual(1, 1e-5, false); // More than allowed error
TestEqual(1000, 1000*1e-7, true); // Less than allowed error
TestEqual(1000, 1000*1e-5, false); // More than allowed error
小窍门
团队成员使用测试作为讨论的焦点。 如果测试正确且足够,代码也将足够。 与代码不同,每个测试都表示一个单独的事例。 因此,测试通常比代码更容易讨论。
执行代码评审
在团队资源管理器中的“我的工作”页上,右键单击“代码评审”部分中的代码评审,然后选择“打开”。
此时会显示 “代码审阅 ”页。
在 “代码评审 ”页上,可以:
选择 “添加审阅者 ”,将其他审阅者添加到代码评审请求。
选择每个文件链接以查看对此工作项更新的文件所做的更改。
使用 注释 与作者和其他审阅者讨论更改。
添加注释:
- 选择 “添加整体批注 ”以向审阅添加总体批注。
- 查看文件时,选择代码行或代码块,右键单击,然后选择 “添加注释”。
添加每个批注后,选择“ 保存 ”或按 Ctrl+Enter。
输入完批注后,选择“ 发送批注 ”以使你的贡献对作者和其他审阅者可见。
响应代码评审
你从审阅者那里收到并响应代码评审。 你和审阅者可以尽可能频繁地交换评论。 关闭评审时结束。
响应代码评审
在 “团队资源管理器”中,在 “我的工作 ”页上,转到“ 代码评审 ”部分,然后双击该请求,或右键单击该请求并选择“ 打开”。
此时会显示 “代码审阅 ”页。
在“ 批注 ”部分下,阅读批注并根据需要回复。 若要回复批注,请选择“ 回复”,在出现的框中输入批注,然后选择“ 确定”。
若要查看文件并查看包含注释的代码块,或者要编辑或注释文件,请转到 “文件” 子部分。 右键单击该文件,然后选择以下任一项:
- 比较(Read-Only)
- 编辑本地文件,或
- 添加文件注释
还可以选中批注旁边的复选框,以指示批注已处理。
若要发送批注,请选择“ 发送批注”。
当你和其他审阅者完成对彼此的批注的响应并准备好关闭审阅时,请选择“ 关闭审阅”,然后选择:
- 完成 以指示评审已完成,或
- 放弃 以指示你正在取消评审。
修复测试和代码
阅读审阅批注后,可以按建议修复单元测试。 测试现在失败。 这表明代码尚未正确。
修复代码:
/// <summary>
/// Returns true if two numbers are equal.
/// </summary>
public static bool EqualTo(double a, double b)
{
// Allow for rounding errors.
const double allowedErrorMultiple = 1/1000000;
double allowedError = (System.Math.Abs(a) + System.Math.Abs(b)) * allowedErrorMultiple/2;
return System.Math.Abs(a - b) < allowedError;
}
测试再次通过。
小窍门
若要修复 bug,请遵循与代码开发中相同的做法。 编写失败的测试,然后使测试通过。 仅当测试通过时,才签入代码和测试。
现在,你将注意力转向发现 bug 的测试用例。 测试用例工作项中明确描述了重现 bug 的步骤。 按照步骤作,发现发票已正确列出。
签入修补程序
签入固定代码和单元测试。 bug 的状态自动设置为“ 已解决”,“ 已分配的” 值会自动重新分配给发现 bug 的测试团队的成员。 该团队成员将验证 bug 是否已修复并关闭工作项。
签入修补程序
在 “团队资源管理器”的“ 我的工作 ”页上,选择 “签入 ”以打开 “挂起的更改 ”页。
在 “挂起的更改 ”页上,确保:
所有相关更改都列在包含的更改中
所有相关工作项都列在 相关工作项中。
输入 注释 ,以帮助团队了解这些更改的目的,当他们查看已更改文件和文件夹的版本控制历史记录。
选择 “签入”。
继续处理任务的工作
恢复对原始任务的工作。 可以快速恢复工作,因为所有代码更改都还原到工作区,以及打开的窗口、断点和监视窗口变量等重要状态位。
恢复对任务的工作
在 “团队资源管理器”的 “我的工作 ”页上,选择 “挂起的工作 ”下的“原始工作项”,然后选择“ 恢复”。
或者,如果要将挂起的工作与工作区中挂起的更改合并,请选择 “与正在进行的合并”。
恢复工作时,Visual Studio 将还原:
- 打开的解决方案
- 代码更改
- 打开窗口的状态和位置
- Breakpoints
- 监视窗口变量和表达式
- Bookmarks