Существует ли автоматический способ поиска неиспользуемых представлений в MVC? - PullRequest
9 голосов
/ 21 ноября 2011

Кто-нибудь знает способ узнать неиспользуемые представления в проекте? с Решарпером или без него. приветствуется любая идея, которая проще, чем записывать все виды, проходить через все контроллеры и проверять вручную :) Спасибо

Ответы [ 2 ]

8 голосов
/ 21 ноября 2011

С помощью ReSharper вы можете щелкнуть правой кнопкой мыши на представлении Razor и Найти использование , но вам придется пройти вручную и повторить для всех представлений (если только вы не можете подключиться к API ReSharper и автоматизировать его).

Проблема с представлениями, конечно же, заключается в том, что они связаны с поздним связыванием на основе соглашения, определенного в механизме представления, в случае значения по умолчанию RazorViewEngine оно ищет соответствующее представление в ~/Views/{Controller}/{Action} и~/Views/Shared/{Action}.Поэтому во время разработки или компиляции сложно сказать, какие представления, партиалы и шаблоны никогда не используются.

Возможно, вы подойдете к нему с противоположной стороны: найдите, какие виды используются.Затем сравните этот список со всеми представлениями в проекте, оцените результаты (вручную и с помощью ReSharper Find Usages) и подтвердите, что они действительно не используются, прежде чем окончательно удалить их.

Чтобы найти используемые представления, вы можетенастройте RazorViewEngine на ведение журнала каждый раз при загрузке представления с помощью CreateView и FindPartialView, например,

public class LoggingRazorViewEngine : RazorViewEngine
{
    protected override IView CreateView(
        ControllerContext controllerContext,
        string viewPath,
        string masterPath)
    {
        LogManager.GetLogger("").Debug(viewPath);
        return base.CreateView(controllerContext, viewPath, masterPath);
    }
}

Настройте его в global.asax.cs

ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new LoggingRazorViewEngine());

Затем извлекитесписок зарегистрированных уникальных путей просмотра для сравнения с представлениями вашего проекта.Немного усилий, но, возможно, стоит, если у вас есть много неиспользуемых представлений, загромождающих проект.

0 голосов
/ 21 ноября 2011

Вы можете переименовать одно из подозрительных представлений и скомпилировать ... если какой-то контроллер использует его, вы получите ошибки:)

Не знаю никакой «встроенной» функции для поиска неиспользуемых видов.

...