Resharper警告Unity3D调用的未使用方法

时间:2014-04-14 19:20:24

标签: c# unity3d resharper

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

3 个答案:

答案 0 :(得分:10)

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

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

您可以从Visual Studio内部安装direclty:

  

ReSharper> Extension Manager ...>搜索'Unity'>点击“Unity支持”

上的“安装”

答案 1 :(得分:4)

作为@BlueRaja评论 - 您已经列出了所有可能的解决方案。最好的解决方案是使用[UsedImplicitly]属性,它是ReSharper Annotations的一部分。但是,不是在代码中将其应用于您的类型,而是最好注释基本类型(我猜测MonoBehavior?我很抱歉,我&# 39;我不熟悉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的bug追踪器上打开一个问题,也许JetBrains会做到这一点。但你最好的选择就是自己这样做)

希望这有帮助。

答案 2 :(得分:1)

我通常只是让它们公开,不足之处在于它们会显示在您可以从其他脚本调用的方法列表中。这些方法可能仍会显示为灰色(如在解决方案中的任何地方都没有调用),但至少您不会再获得警告。

注释事情对我来说永远不会有用,所以这是我的解决方法。