![Hero background image](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F7efad5bd44bf01c4fa14139632c21893be70c031-1920x1080.jpg&w=3840&q=100)
本文介绍了 Roslyn 分析器如何帮助您调试和提高 Unity 中的游戏代码质量。
Roslyn 分析器是一种代码分析工具,它使用 Roslyn 编译器平台的 API 实时分析 C# 代码。分析器可以根据一组预定义的规则提供代码改进建议、警告或错误。它可以作为 Microsoft Visual Studio 和 Microsoft Visual Studio Code 的插件,补充这两个代码编辑器中的 IntelliSense 功能。
Roslyn 分析器以 IntelliSense 提供的建议、完成和有关可用 API 的信息为基础,并附加工具来分析和识别代码中的潜在问题。此外,您还将获得使用 Roslyn 编译器平台的 API 进行可能修复的建议。
Roslyn 分析器有助于强制执行标准并在您违反代码约定时发出警告。此外,他们通常还可以帮助修复那些代码错误或风格违规。
Visual Studio 附带许多默认分析器,它们是 Roslyn 开放源代码库 的一部分,也是学习使用此方法进行调试的更多信息的良好资源。
注意:本文的大部分内容仅适用于 Windows。Roslyn 分析器也可与适用于 macOS 的 Visual Studio 一起使用,但与适用于 Windows 的分析器相比,对它们的检查支持有限。
![Roslyn 分析器](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F31844bbf14698692c15f2879ceeb995614cd7c3e-1920x1080.jpg&w=3840&q=75)
上图 来自一个视频 ,展示了 Roslyn 分析器的典型用法。在此示例中,代码分析发现了一个未使用的变量。由于变量计数带有绿色波浪线下划线,因此开发人员意识到了这个问题。单击它会显示该问题以及一个带有修复选项的链接。在视频中,开发人员根据建议选择删除未使用的变量。
除了绿色波浪线外,您还可能会看到红色波浪线或灰色圆点。这些不同的符号表示问题的安全级别,或者问题对于您的代码的严重程度。
![分析器严重性级别](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F10d4e9f430c756ab7ab6e4d71b5e4c45794c78a0-1423x954.jpg&w=3840&q=75)
如上表所示,每个分析器都有一个用户可配置的 严重性级别。
![Roslyn 分析器](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Ff135855cef9bd37a566d5c14de5f807ca579aa63-1107x633.jpg&w=3840&q=75)
有几种可用的 Roslyn 分析器,但 Visual Studio 也预装了一些。您可以在两个地方调整这些内置分析器的设置。对于您本地的 Visual Studio 版本,可以通过 工具 > 选项 > 文本编辑器 > C# > 代码样式 > 常规 来调整默认设置。您可以使用上图所示的对话框更改严重性级别。
![Roslyn 分析器](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F81ea57a4e14d86ed9ddc38ff7406074a9b858670-810x435.jpg&w=3840&q=75)
上图是一个简单的代码类。第 7 行 pos 中的字母 p 和 o 下方的省略号(一行中三个点)以及第 11 行的 if 语句表示建议。距离下方的绿色波浪线是警告,第 11 行上两个 xPos 实例下方的红色波浪线是错误。警告和错误也将出现在“错误列表”窗口中。
![显示潜在修复的步骤](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F5765c9dd0228addc9f15124c3505761818efe1b9-1374x603.jpg&w=3840&q=75)
您会注意到,显示内置分析器设置的图像在仅重构和建议之间切换 代码块首选项:更喜欢牙套。重构只会隐藏 if 语句下的省略号。
如果“首选大括号”的设置是一个 建议 ,并且您将鼠标悬停在省略号上,那么您将看到一个显示潜在修复 链接的面板。单击此按钮将显示另一个带有可用选项的面板。在这种情况下,只有一个选项可用,那就是在代码中添加花括号。上图显示了这个序列。
如果您想确保特定项目的代码风格,那么您可以添加项目附带的 .editorconfig 文件。这可以成为在由众多开发人员组成的大型团队中强制执行一致同意的代码风格规则的有效方法。
.editconfig 文件允许您通过 “工具”>“选项”>“文本编辑器”>“C#”覆盖您所用 Visual Studio 版本中的设置。如果需要,您甚至可以嵌套多个 .editorconfig 文件,将一个文件放在根文件夹中,将另一个文件放在子文件夹中。子文件夹中的文件将覆盖根文件夹中的文件。
下一节概述如何添加 .editorconfig 文件。
![Roslyn 分析器](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F8e40521e643bdf745718fda79b1ba816f0c23fa2-953x223.jpg&w=3840&q=75)
更改代码文本窗口中包含的分析器的严重性级别。
![Roslyn 分析器](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F100ab107c6c354981a23bbd319e1adf8fc9d8f71-810x629.jpg&w=3840&q=75)
右键单击解决方案资源管理器并选择新建项。在下一个面板中,选择 “已安装”>“C#”>“常规 editorconfig 文件(默认)”。
另一个选项是从 工具 > 选项 > 文本编辑器 > C# 面板中的设置中选择 生成 .editorconfig 文件 (如配置内置分析器下的图像所示)。
![Roslyn 分析器](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2Fbe1f5eaea04062beec4982e139084c642ff87f0d-826x682.jpg&w=3840&q=75)
现在您有一个 .editorconfig 文件,Visual Studio(Windows 版本)会在后台显示该文本文件的可编辑视图。对此文件的更改将影响保存 .editorconfig 的文件夹及其任何子文件夹中的 C# 脚本。
![使用包管理器控制台](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F83d5a45f89acef11b0dbe1ed4873e4e4325ad3ea-1445x1274.jpg&w=3840&q=75)
您可以通过添加预装的 Roslyn 分析器来扩展功能。分析器以 NuGet 包或 Visual Studio 扩展(VSIX 文件)的形式安装。请访问 www.nuget.org 了解 NuGet 包安装过程。一个流行的工具是 StyleCop.Analyzers,它可以查找代码库中的样式问题。
通过 “工具”>“NuGet 包管理器”>“包管理器控制台”使用包管理器控制台在 Visual Studio 中安装包。每个分析器包的 www.nuget.org 页面都会向您显示要粘贴到包管理器控制台的命令。甚至还有一个方便的按钮可以将文本复制到剪贴板。
![Roslyn 分析器](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F82d5d592671a55c5523b3602eb2471a93022b41f-810x714.jpg&w=3840&q=75)
分析器程序集已安装并出现在解决方案资源管理器中的 “引用”>“分析器”下。
![Roslyn 分析器](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F738e1faaea046e32fb3284b5a780c2bae3d0c0b5-941x653.jpg&w=3840&q=75)
另一种选择是安装作为 VSIX 扩展提供的分析器。在 Visual Studio 中,选择 “扩展”>“管理扩展”。
如果您知道扩展的名称,请使用搜索字段来找到它或者直接搜索“分析器”。上图显示已选择 评论分析器 。单击“下载”以安装分析器扩展,选择“确定”关闭对话框,然后关闭 Visual Studio 的所有实例以启动 VSIX 安装程序。
选择 修改 以开始安装。安装完成后,选择 关闭 并重新打开 Visual Studio。
![Roslyn 分析器](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F732e759671074a223e3669f2df34d2a52f445367-810x205.jpg&w=3840&q=75)
如果您想检查扩展是否已安装,请选择 扩展 > 管理扩展。在管理扩展对话框中,选择左侧的已安装类别,然后按名称搜索扩展。
![编写干净的代码](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Ffuvbjjlp%2Fproduction%2F6860fe4502abf3d50a653ddb717c5a1ab1e01b3c-810x453.jpg&w=3840&q=75)
本文重点介绍 Visual Studio 中提供的内置 Roslyn 分析器,但您也可以构建自己的分析器。使用 .NET 编译器平台构建的分析器可以显著提高团队代码的质量。
随着您在创建分析器方面经验丰富,您会注意到它们如何帮助您的团队更有效地解决语法、重复编辑、使用新库进行指导等编码问题。
微软提供的一些不错的附加资源包括有关如何创建自己的 C# Roslyn 分析器 的教程 和有关 Roslyn 分析器的 YouTube 视频 。
Unity中的调试
从这些文章中获取有关调试 Unity 项目的更多技巧:
高级技术电子书
Unity提供了许多高级指南来帮助专业开发人员优化游戏代码。创建 C# 样式指南:编写更简洁、可扩展的代码 汇编行业专家关于如何创建代码样式指南的建议,以帮助您的团队开发干净、可读且可扩展的代码库。
另一个受我们用户欢迎的指南是 《70多条关于如何提高 Unity 生产力的技巧》。它包含了许多节省时间的技巧,可帮助您通过 Unity 2020 LTS 改善日常工作流程 - 这些技巧甚至经验丰富的开发人员都可能会错过。
在 Unity 最佳实践中心查找 Unity 的所有高级电子书和文章。