猿问

从未使用过 Resharper 方法

我在一个项目中有一个面向公众的界面,最终将成为一个 nuget 包。这是代码:


public interface MyInterface

{

    void MyMethod();

}

现在这个接口中的每个方法都没有在这个库中使用,而是通过包在其他中使用。然而,这里的每一个方法都有一个警告Method x is never used.


是否有一种简单的方法可以告诉 ReSharper 在我打开的每个解决方案中的每个项目中忽略每个公共方法,以便不在公共方法中执行此检查。


我有几种方法可以解决这个问题,但这太乏味了。


选项 1:[UsedImplicitly]在我班级中的每个方法上。在我看来,这太乏味了。选项 2:[SuppressMessage("ReSharper", "UnusedMember.Global")]不那么乏味,但仍然必须在每个类上实现。


一定有更好的方法?


我还在某处读到只有在Enable solution-wide analysis检查时才会发生这种情况。在我的情况下不是。我在下面找到了这个设置Reshaper Options > Code Inspection > Settings


慕无忌1623718
浏览 309回答 3
3回答

慕尼黑8549860

在您的情况下,由于您提到 SWEA 已禁用,我建议禁用以下复选框ReSharper | Options | Code Inspection | Settings | General | Show unused non-private type members when solution-wide analysis is off。

四季花海

取自@Matthias 对原始问题的评论,对于有意从库中导出的公共方法,请使用包和命名空间中[PublicAPI]的类的属性JetBrains.Annotations:using JetBrains.Annotations;[PublicAPI]public interface MyInterface{    void MyMethod();}这不是原始问题的理想答案,因为它与应用于[UsedImplicitly]每个类一样乏味。然而,对我来说,它比全面禁用检查更有优势,因为它会指出我在公开方法或类时出错的地方。它也有一个优势,[UsedImplicitly]因为它是对该类应该由库的使用者使用的意图的积极声明。[UsedImplicitly],相比之下,会向我表明该方法/类以某种方式(例如反/序列化)与当前解决方案的上下文一起使用。
随时随地看视频慕课网APP
我要回答