Я использую StyleCop и хочу подавить некоторое предупреждение, которое не удовлетворяет моему стилю. Я предпочитаю иметь решение для
1) подавление встроенного кода
2) глобальное подавление установки
Я искал Интернет, но все еще не уверенный, как сделать подавление.
Для метода 1), Они сказали для добавления строк:
[блок: SuppressMessage ("Microsoft. Дизайн", "закрытые методы SA1202:All должны быть помещены после всех открытых методов", Объем = "пространство имен", Цель = "Consus. Клиент. ClientVaultModule. Сервисы. OnlineDetection")]
Но они не говорят где и который пространство имен использоваться.
Для метода 2), они сказали для использования файла GlobalSuppress, но кажется не легким искать практическое руководство, делают это в данный момент.
Помогите.
[Отредактированный] В моем случае, у меня есть предупреждение о SA1202: Все закрытые методы должны быть помещены после всех открытых методов, который беспокоится, так как я группирую свои связанные коды в регионы. Я хочу подавить тех, которые предупреждают для просто некоторых определенных методов.
Не можете просто удалить правило вместо того, чтобы испортить код?
То же самое и с FxCop ...
Пример встроенного подавления будет похож на этот - посмотрите на пространства имен в коде по сравнению с подавлением
namespace Soapi
{
///<summary>
///</summary>
///<param name = "message"></param>
///<param name = "statusCode"></param>
///<param name = "innerException"></param>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object)")]
public ApiException(string message, ErrorCode statusCode, Exception innerException)
: base(String.Format("{0}\r\nStatusCode:{1}", message, statusCode), innerException)
{
this.statusCode = statusCode;
}
Глобальный файл подавления - это файл в корне вашего проекта с именем GlobalSuppressions.cs
, который может выглядеть так:
// This file is used by Code Analysis to maintain SuppressMessage
// attributes that are applied to this project.
// Project-level suppressions either have no target or are given
// a specific target and scoped to a namespace, type, member, etc.
//
// To add a suppression to this file, right-click the message in the
// Error List, point to "Suppress Message(s)", and click
// "In Project Suppression File".
// You do not need to add suppressions to this file manually.
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object,System.Object)", Scope = "member", Target = "Soapi.ApiException.#.ctor(System.String,Soapi.ErrorCode,System.String,System.Exception)")]
И вы можете сгенерировать этот код автоматически, щелкнув правой кнопкой мыши на предупреждении.
Если вы установили StyleCop, вы можете щелкнуть правой кнопкой мыши на своем проекте, и там будет опция StyleCop. Щелкните ее, и вы увидите, что можете предотвратить выполнение определенных правил в вашем проекте. Более того, вы можете создать отдельный файл правил для совместного использования в разных проектах. Это означает, что вы можете один раз настроить правила так, как вам нужно, а затем поделиться этой конфигурацией между всеми вашими проектами.
Для индивидуальных переопределений подойдет SuppressMessage
.
Вот что вам нужно:
[SuppressMessage("Microsoft.StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess")]
В качестве альтернативы вы можете переместить код из регионов в частичные классы. Тогда проблема с правилом stylecop исчезнет.