代码之家  ›  专栏  ›  技术社区  ›  Josh Kitchens

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

  •  1
  • Josh Kitchens  · 技术社区  · 9 年前

    基本上,我正在寻找与[UsedImplicitly]注释类似的功能,但我有一组方法名/签名,我想在整个解决方案中应用它,而不是到处使用注释。

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

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

    到目前为止,我能找到的唯一选择是总是注释每个方法(因为这些方法被频繁地声明,所以会用大量的注释污染代码库),总是将它们标记为公共的(一个可行的解决方案,但并不总是理想的,并且违反Unity3D约定),或者只是处理Resharper抛出的误报。

    理想情况下,我想做的是在R#设置中配置一些内容,比如“具有此名称的方法应始终标记为UsedImplicitly”或类似的内容。到目前为止,我还没有找到一种方法来做到这一点。任何建议都会有帮助。谢谢

    1 回复  |  直到 9 年前
        1
  •  3
  •   citizenmatt    9 年前

    没有办法让ReSharper为通用代码库做到这一点,但Unity有一个ReSharper扩展,它可以满足您的需求。它识别派生自 MonoBehaviour 并将适当的方法标记为正在使用。目前有一些未决的pull请求来支持更多的方法,我希望这些请求能够很快合并并发布。

    转到ReSharper→ 扩展管理器并搜索“Unity”。