Избегание Resharper <location> web.config Предупреждения с MVC и WebAPI

Проверка кода ReSharper 7.1.1 ложно сообщает <location> элементы в файле web.config как избыточные, если они относятся к URL-адресам, которые не соответствуют папкам в исходном дереве. Если вы используете ASP.NET MVC или веб-API, это нормально, если у вас есть пути к URL, которые не соответствуют конкретной физической папке.

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

Во-первых, это предупреждение "Элемент избыточного местоположения". ReSharper исчезает во всей области. Вот пример того, что он будет исчезать:

<location path="FederationMetadata">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

Вам нужна эта конфигурация, если вы используете федеративный вход через ACS, и для этого вы хотите предложить конечную точку метаданных. Но не будет соответствующего пути этого имени.

(Строго говоря, эта особенность не имеет ничего общего с MVC или веб-API. Я привел этот пример, потому что он довольно распространенный. Однако мой проект также имеет несколько элементов <location>, соответствующих путям, управляемым с помощью маршрутизации MVC и веб-API конфигурации, и они имеют одинаковую проблему.Основная причина, похоже, одна и та же: ReSharper не может видеть что-либо, соответствующее этому местоположению в проекте, поэтому он ошибочно ошибочно делает вывод, что он поражает контроллеры MVC и Web API, а также любые пути, доступные из-за таких вещей, как модули.)

Легко избавиться от этого первого предупреждения: вы можете отключить его в настройках серьезности проверки.

Затем вы получите второе предупреждение: "Элемент местоположения не используется: элемент проекта, найденный в федерацииMetadata" (и аналогичные предупреждения для каждого из контроллеров, имеющих соответствующие элементы <location>).

Эта информация появляется только на панели "Результаты проверки", которая появляется при проверке всего решения. Ни один из обычных виджетов проверки не появляется, когда вы смотрите в самом исходном файле. И, как ни странно, у этого нет возможности отключиться.

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

Я нацелен на чистые результаты проверки для всех пользователей, не делая каждого пользователя скрыть результаты. Resharper сообщает об этой проблеме ложно - web.config в порядке, это просто, что R # неправильно понял. Кто-нибудь знает, как я могу заставить это второе предупреждение уйти? (Или, лучше, есть ли способ, которым я могу дать R # возможность знать, что эти "скрытые" местоположения действительно существуют?)

Ответ 1

Кажется, что есть две части:

  • Настройка веб-пути - лучший способ справиться с обеими ошибками.
  • По-видимому, вам нужно перенести настройку из вашего файла DotSettings.user и в файл общей команды вручную

Если вы нажмете на атрибут "Оскорбительный путь" (поместите значение каретки в значение атрибута), а затем дождитесь появления всплывающего окна R #, его меню должно предложить способ создания "сопоставления пути" или для редактирования существующего отображения для сайта. Вы можете использовать это, чтобы сообщить R #, где находится фактический файл, соответствующий пути. Или, поскольку в этом случае такого файла нет, вы можете просто установить действие Ignore для этого пути.

При этом не будет отображаться ни одно из указанных предупреждений.

К сожалению, диалоговое окно "Отображение пути" (например, диалоговое окно "Проблемы с фильтрами" ) является одним из тех, у которого есть только кнопка "Сохранить", и кнопка "Сохранить" не позволяет контролировать, куда будут идти настройки. На практике они, кажется, попадают в файл <project>.DotSettings.user для веб-проекта.

Но оказывается, что он работает только с файлом, если вы открываете этот файл в текстовом редакторе, вырезаете настройки и вставляете их в свои общие параметры решения. Это похоже на то, чтобы избавиться от обоих предупреждений таким образом, который должен применяться ко всем в проекте.

(Вы можете использовать подобный трюк для параметров "Проблемы с фильтрами", хотя вам нужно искать в другом месте. Они заканчиваются в ваших глобальных настройках, но вы можете использовать диалоговое окно "Параметры управления" для экспорта этих, а затем вы можете открыть экспортированные параметры и скопировать их в общие параметры решения для совместной работы.)

Ответ 2

Я просто добавил это:

  <!-- ReSharper disable WebConfig.RedundantLocationTag -->
  <!-- ReSharper disable WebConfig.WebConfigPathWarning -->
  <location path="api">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <!-- ReSharper restore WebConfig.RedundantLocationTag -->
  <!-- ReSharper restore WebConfig.WebConfigPathWarning -->

Ответ 3

Вы можете изменить настройки R # так, чтобы они не были локальными на вашем компьютере.

  • В VS выберите меню RESHARPER, затем нажмите Manage Options...
  • Дважды щелкните элемент team-shared (должен быть средний, между This computer и personal).

Изменив здесь настройки, он создаст файл [ProjectName].csproj.DotSettings в вашем проекте. Если вы проверите этот файл в исходном элементе управления, настройки будут доступны другим пользователям R #, которые разрабатываются в проекте. AFAIK, любой параметр, который вы можете изменить (например, говоря R #, что степень проверки должна отличаться от стандартной), вы должны иметь возможность добавлять к общим настройкам команды.

Что касается вашей ошибки web.config, у меня есть еще больший говядина с R #, потому что когда она включена, я теряю intellisense в файлах web.config и app.config. Вы можете сказать R # игнорировать ошибку со следующим, хотя я не уверен, что это решение, которое вы ищете, потому что оно будет игнорировать все проблемы R # с файлом web.config.

  • После двойного щелчка, чтобы изменить настройки team-shared (описанные выше), щелкните элемент Settings в Code Inspection в меню слева.
  • Нажмите Edit Items to Skip button.
  • В Files and folders to skip when analysing нажмите Add File....
  • Перейдите к файлу web.config и добавьте его.

Это говорит R # игнорировать весь файл web.config при анализе. Опять же, не уверен, что это решение, которое вы хотите, но оно может работать для подавления ложных предложений, которые вы видите.

Обновление (ответ на комментарии)

Фактически вы можете изменить параметры проверки из контекстного меню VS. Когда в диалоговом окне Inspection Options появляются переключатели (Do not show - Error), есть кнопка Save To. Нажмите, чтобы сохранить настройки в общих для DotSettings командах.