Visual Studio: подавить предупреждения для всех файлов в пространстве имен - PullRequest
1 голос
/ 16 мая 2019

В моем проекте есть следующие пространства имен.

enter image description here

Я хочу отключить определенное предупреждение для определенного пространства имен (скажем, Project.ViewModels),Я могу отключить предупреждение для одного файла, выполнив это в GlobalSuppression.cs

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "type", Target = "~T:Project.ViewModels.MainViewModel.cs")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "type", Target = "~T:Project.ViewModels.TreeViewModel.cs")]

Я пытался изменить Scope с type на namespace и namespaceanddescendants, но это не сработало,

[assembly: SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "namespace", Target = "~T:Project.ViewModels")]

Есть идеи, как это можно исправить?Я использую Visual Studio 2017.

Ответы [ 3 ]

0 голосов
/ 18 июля 2019

Вы не должны использовать ~T: для пространства имен, которое, кажется, только для типов.В качестве примера использования вы можете увидеть, как он не используется для пространства имен в коде .NET Core здесь .Кроме того, только из документов namespace:

подавляет предупреждения относительно самого пространства имен.Он не подавляет предупреждения против типов в пространстве имен, как показано ниже:

В зависимости от вашей файловой иерархии, вы потенциально можете использовать namespaceanddescendants, как показано ниже:

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "namespaceanddescendants", Target = "Project.ViewModels")]
0 голосов
/ 18 июля 2019

Вы пытаетесь подавить конкретные предупреждения для всех элементов кода в определенном пространстве имен, но, согласно документации Microsoft, это невозможно. Его можно применять только к конкретным артефактам кода: классам, методам / функциям, свойствам и т. Д. ...

В документации:

SuppressMessageAttribute Class: Подавляет создание отчетов о конкретном нарушении правила инструмента статического анализа, допуская множественные подавления для одиночного артефакта кода .

См .: https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.codeanalysis.suppressmessageattribute?view=netframework-4.8

0 голосов
/ 16 мая 2019

Я думаю, что ваше значение пространства имен неверно .Кажется, что ваше корневое пространство имен - Project, поэтому вы должны попробовать:

[assembly: SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "namespace", Target = "Project.ViewModels")]

Надеюсь, это может вам помочь.

...