Version: Unity 6.0 (6000.0)
语言 : 中文
创建与使用源代码生成器
Additional files for Roslyn analyzers and source generators

安装和使用现有的分析器或源生成器

以下示例使用 ErrorProne.NET.CoreAnalyzers 库演示如何从 NuGet 安装代码分析器或源代码生成器:

  1. 使用 Download package 按钮将库下载为 .zip 文件。
  2. 提取 .zip 文件的内容。
  3. 在提取的文件夹中,找到包含分析器的 .dll 文件。在此示例中,导航到 errorprone.net.coreanalyzers<version-number>\analyzers\dotnet\cs。所需文件应位于此文件夹中,名为 ErrorProne.NET.Core.dllErrorProne.Net.CoreAnalyzers.dllRuntimeContracts.dll
  4. 将这些文件移动到 Unity 项目中的 Assets 文件夹,或 Assets 文件夹内嵌套的任何文件夹中。为此,请转到资源 (Assets) > 导入新资源 (Import new asset) 并为三个文件分别选择 .dll,或通过设备的文件浏览器将它们复制到项目的 Assets 文件夹中。
  5. 单击 Unity 中的资源浏览器 (Asset Browser) 中的 .dll 文件以打开 插件检视面板 (Plugin Inspector) 窗口。
  6. 在插件检视面板窗口中:
    • Select platforms for plugin 标题下,禁用 Any Platform
    • Include platforms 下方,禁用编辑器Standalone 平台。
  7. 在插件检视面板窗口中的 Asset Labels 标题下,单击蓝色标签图标以打开 Asset Labels 子菜单。
  8. 创建并分配一个名为 RoslynAnalyzer 的新标签。为此,请在 Asset Labels 子菜单中的文本输入窗口中输入 RoslynAnalyzer,然后按 Return。此标签必须与示例完全一致,并区分大小写。创建第一个分析器的标签后,该标签将出现在 Asset Labels 子菜单中的可用标签列表中。您可以通过单击菜单中的标签名称,将其分配给其他分析器。

Unity 会识别 RoslynAnalyzer 标签,并将带有此标签的资源视为 Roslyn Analyzer 或源生成器。分配标签后,Unity 会重新编译分析器作用域内的脚本,并根据分析器的规则分析这些脚本中的代码。与分析器位于同一程序集定义内的任何脚本都属于该分析器的作用域。对于位于 Assets 文件夹根级别的分析器,Unity 会将项目中的所有文件视为其作用域内的文件。更多关于作用域的信息,请参阅上方的 Analyzer 范围

要测试您的分析器是否正常工作,请遵循以下示例。如果您正确安装了分析器,ErrorProne.NET 分析器在分析示例中的代码时会发出警告。

创建一个名为 RethrowError.cs 的新脚本文件。将以下代码复制到此脚本中并保存文件:

using System;
using UnityEngine;

public class RethrowError : MonoBehaviour
{
    void Update()
    {
        try
        {
            DoSomethingInteresting();
        }
        catch (Exception e)
        {
            Debug.Log(e.Message);
            throw e;
        }
    }

    private void DoSomethingInteresting()
    {
        throw new System.NotImplementedException();
    }
}

保存文件时,Unity 会重新编译脚本并对脚本的代码运行适用的分析器。如果 ErrorProne.NET Analyzer 安装正确,它会在控制台窗口中针对上述代码发出以下警告:

Assets\RethrowError.cs(14,23): warning EPC12: Suspicious exception handling: only e.Message is observed in exception block.

Assets\RethrowError.cs(15,19): warning ERP021: Incorrect exception propagation. Use throw; instead.

其他资源

创建与使用源代码生成器
Additional files for Roslyn analyzers and source generators