有没有办法告诉 resharper 忽略整个解决方案的特定方法名称?

Is there a way to tell resharper to ignore a specific method name for an entire solution?

基本上,我正在寻找与他们的 [UsedImplicitly] 注释类似的功能,但我有一组方法 names/signatures 我想将它应用于整个解决方案,而不希望使用注释到处都是。

我在 Unity3D 中的项目中使用 VS2015 和 Resharper 10。对于那些不熟悉的人,Unity3D 允许您从他们提供的 classes 之一继承,以允许您编写的 class 附加到将存在于引擎内世界空间中的对象。然后,您的代码通过一系列与继承的 class 相关的生命周期方法(Awake()、Start()、Update() 等)与继承的 classes 功能相关联。

不幸的是,由于遗留的(糟糕的)设计决策,Unity 不会将这些方法作为虚拟方法或通过接口公开,而是在运行时使用类似于反射的技术来定位您的代码生命周期方法定义。这些意味着在设计时,没有对这些方法的直接引用,R# 将它们标记为未使用。

到目前为止,我能找到的唯一选择是总是注释每个方法(用大量注释污染代码库,因为这些方法声明得非常频繁),总是将它们标记为 public(一个可行的解决方案,但并不总是理想的,并且违背了 Unity3D 惯例),或者只是处理 Resharper 抛出的误报。

理想情况下,我希望能够在 R# 设置中配置一些内容以显示 "methods with this name should always be marked as UsedImplicitly" 或类似内容。到目前为止,虽然我还没有找到一种方法来做到这一点。任何的意见都将会有帮助。谢谢。

没有办法让 ReSharper 为通用代码库执行此操作,但有一个适用于 Unity 的 ReSharper 扩展可以执行您想要的操作。它识别从 MonoBehaviour 派生的 类 并将适当的方法标记为正在使用。目前有未完成的拉取请求以支持更多方法,我希望尽快将它们合并并发布。

转到 ReSharper → Extension Manager 并搜索 "Unity"。