web-dev-qa-db-ja.com

名前空間全体の「SuppressMessage」

読みやすさを向上させるためにテストメソッドにアンダースコアを使用し、テスト名前空間全体のFxCopエラー/警告を抑制したいと考えています。

どうすればこれを達成できますか? GlobalSuppressions.csで遊んだのですが、何も機能しませんでした。

[module: System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
    Scope = "namespace", Target = "Company.Product.Tests")]

[Assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
    Scope = "namespace", Target = "Company.Product.Tests")]
31
timmkrause

Harlam357がすでに言ったように、それは不可能だと思います。

2
timmkrause

Visual Studio 2019以降、名前空間とそのすべての子孫シンボルに対するコード分析警告の抑制が可能です。

[Assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
    Justification = "Test methods require underscores for readability."
    Scope = "namespaceanddescendants", Target = "Company.Product.Tests")]

スコープ-警告が抑制されているターゲット。ターゲットが指定されていない場合は、属性のターゲットに設定されます。サポートされているスコープは次のとおりです。

---(コード分析の警告を抑制します#SuppressMessage属性@ MSドキュメント

7
Leniaal

はい、それはFxCop <= 10.0では不可能です。

できることは、カスタムルールファイルを使用してCA1707を無効にすることです(おそらくテストプロジェクトのためだけに)。

2
ulrichb

すでに述べたように、箱から出してそれは不可能です。イムホ、抑制は一元的に行わなければならないので意図されています。

FXCop 10機能を使用してCopy As > Module-level SuppressMessageを介してこれを手動で行う回避策があります。

短所、名前空間が変更されるたびにこれを繰り返す必要がありますが、すでに述べたように、グローバル抑制は分離する必要があります。

  1. FXCop 10(System.Xml here)でアセンブリを開き、分析を実行します
  2. 名前空間を選択します(System.Xmlここで)
  3. 違反したルールをすべて選択してください
  4. 右クリックしてCopy As > Module-level SupressMessage
  5. 次に、たとえばGlobalSuppressions.csに貼り付けます

注:これは、アセンブリ、名前空間、またはタイプレベルで実行できます。

Module-level SuppressMessage

2
JoeBilly