【问题标题】:Resharper warns about unused methods called by Unity3DResharper 警告 Unity3D 调用的未使用方法
【发布时间】:2014-04-14 19:20:24
【问题描述】:

我今天才开始使用 Reshaper,并收到很多关于 Unity3D 提供的未使用方法的警告,例如 Awake(), Start()Update() 等。这些是由 Unity3D 使用反射调用的,Resharper 无法知道这一点,因此发出警告关于他们。
有没有更好的方法来抑制这些,然后只是禁用整个“从不使用类型或方法”警告,或者将 [UsedImplicitly] 属性添加到所有内容?

【问题讨论】:

  • 我不知道,我认为您列出了两种解决方案。

标签: c# unity3d resharper


【解决方案1】:

ReSharper 10 有一个“Unity Support”扩展,可以很好地将 Unity 的隐式 MonoBehaviour 函数和公共变量标记为“已使用”。

https://github.com/JetBrains/resharper-unity

您可以从 Visual Studio 中直接安装它:

ReSharper > Extension Manager... > 搜索“Unity” > 在“Unity Support”上单击“安装”

【讨论】:

    【解决方案2】:

    作为@BlueRaja cmets - 您几乎列出了所有可能的解决方案。最好的解决方案是确实使用 [UsedImplicitly] 属性,它是 ReSharper Annotations 的一部分。但是,最好不要在代码中将其应用于 您的 类型,而最好对基本类型进行注释(我猜是 MonoBehavior?对不起,我不熟悉 Unity3D API )。这样,您实现的每个派生自这些类型的类型都将自动继承 [UsedImplicitly] 属性。

    通过External Annotations 可以做到这一点的最佳且非侵入性方式 - 与代码注释相同,但可通过 XML 在外部应用。

    这里有 3 个选择:要么你自己做(看看 ExternalAnnotations 目录,位于

    %localappdata%\JetBrains\ReSharper\vAny\packages\ReSharper.ExternalAnnotations...

    自 ReSharper 8.2 起,或

    C:\Program Files (x86)\JetBrains\ReSharper\vX.X\ExternalAnnotations

    在以前的版本中)

    您可以找到外部注释 XML 的示例,并按照相同的命名约定自行创建。为了帮助您以正确的格式复制方法名称,您可以使用 ReSharper 中“编辑”菜单下的 Copy XML-Doc ID to Clipboard 选项。

    这样您可以注释 Unity3D 基类,然后将此 XML 作为 ReSharper 扩展分发给他人。

    (您可以做的另外两件事是说服 Unity3D 自己执行此操作,或者在 ReSharper 的错误跟踪器上打开一个问题,也许 JetBrains 会执行此操作。但您最好自己执行此操作)。

    希望这会有所帮助。

    【讨论】:

    • 谢谢,我想我会尝试一下这些注释。
    • 我认为这实际上不会起作用,因为 MonoBehaviour 函数没有在 Unity API 中继承,它们是隐含的,因此它们不存在于库中以附加注释。
    • 实际上可能有更多的运气要求微软添加此功能,因为 Unity3D 不支持开箱即用的 VS。您需要安装 Microsoft 拥有的插件才能获得支持。
    【解决方案3】:

    我通常只是将它们公开,缺点是它们随后会显示在您可以从其他脚本调用的方法列表中。这些方法可能仍会显示为灰色(如未在您的解决方案中的任何地方调用),但至少您不会再收到警告。

    注解对我来说永远不起作用,所以这是我的解决方法。

    【讨论】:

    • 让他们protected 也可以,并且不会将该功能添加到建议列表中。
    猜你喜欢
    • 2014-01-03
    • 2011-02-16
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多