ReSharper在处理ASP.NET MVC方面是否存在问题?

4

我正在使用最新版本的resharper。上周刚下载并安装,所以我对它的使用还很陌生。我遇到的问题是,在我的ASP.NET MVC应用程序中,所有的控制器都显示未被使用,控制器内的所有方法也都显示未被使用。

是否有一种方法可以抑制这些消息,或让resharper理解它们实际上是被使用的呢?


是的,这是当前版本Resharper的一个问题。此外,当打开解决方案宽度分析时,Resharper似乎对ASP.NET MVC中的强类型视图有问题。 - Marek
3个回答

9

您可以打开/关闭Resharper给您提供的各种警告和提示。

然而,如果您编写单元测试,它们将会被使用,Resharper也会很高兴。

更新

您可以考虑在控制器类的顶部和底部执行以下操作,告诉Resharper忽略掉您的控制器中未使用的成员...

public class MyController: Controller
{
    // ReSharper disable UnusedMember.Global

    ...        

    // ReSharper restore UnusedMember.Global
}

...或者,至少在控制器的公共方法周围放置这些注释(我使用StyleCop,因此所有公共方法都将被分组在一起)。这样不会太显眼,可以消除Resharper的警告。


单元测试?嗯?那是什么? :) - Mike Roosa
我确实希望在某些东西没有被使用时得到警告,但是控制器是被使用的。我的真正问题是,有没有办法让Resharper知道这一点。 - Mike Roosa
问题在于这些方法是通过反射使用的。Resharper 没有办法知道它们是否会在实际生活中被调用(它无法判断您的路由是否正确)。您是否正在寻找一种方式来表明“停止查看控制器上的公共方法,因为您永远不会得到正确的结果”,或者一些可以告诉您的路由是否会导致使用操作的内容? - Martin Peck
1
是的,我担心有一天重构代码时,Resharper会说某个方法未被使用,然后我就去删除了它。虽然单元测试可以帮我排除这种情况,但仅仅因为一个单元测试使用了该方法并不意味着整个应用程序也在使用它。 - Mike Roosa

6

是的,当前版本的ReSharper不会在MVC控制器上放置引用(不过下一个版本会)。

在此期间,您可以使用ImplicitUse属性标记控制器类和操作方法。 您可以在JetBrains.Annotations程序集中找到它。 如果您不想要外部依赖项,您可以向项目添加必要的注释属性,在ReSharper->选项->代码检查->代码注释->复制默认实现中找到它们。


1

我不知道有什么方法可以强制Resharper“知道”某个方法已被使用(我从未遇到过这个问题与Resharper)。

如果您不想全局开启/关闭各种检查选项,您可以选择使用注释来禁止特定的检查信息。像这样...

// ReSharper disable UnusedPrivateMember
private void NotUsed ()
{
    // ... Code ...
}
// ReSharper restore UnusedPrivateMember

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接