Потискане на предупреждение за всички проекти в Visual Studio

Виждал съм отговори, показващи как да потискам предупреждение за конкретен ред код или за конкретен проект. не искам това

Искам да премахна конкретно предупреждение за всички мои проекти.

(Ако има значение, предупреждението е IDE0044. И аз използвам C#.)


person ispiro    schedule 17.05.2018    source източник
comment
Можете да създадете изходен файл в директорията на решението с атрибута [SuppressMessage] в него. След това го включете във всеки проект с Add Existing File... Add As Link.   -  person Ron Beyer    schedule 17.05.2018
comment
@RonBeyer Това не е точно това, което търся, но благодаря за заобиколното решение.   -  person ispiro    schedule 17.05.2018


Отговори (6)


Скорошна актуализация на Visual Studio 2017 (15.7.1) има опция за това сега. В менюто Tools->Options изберете раздела TextEditor->C#->Code Style->General. Под Field preferences има опция Prefer readonly. Задайте това на No.

„Изображение

Има и настройка editorconfig, която можете да зададете, ако искате да проверите това предпочитание заедно с вашия код, така че другите, които използват вашия код, да не получават предупреждението, но това трябва да се направи на базата на решение. Стойността editorconfig, която бихте задали, ще бъде:

 dotnet_style_readonly_field = false:none
person John Koerner    schedule 17.05.2018

Можете да използвате атрибута SuppressMessage, присъстващ под System.Diagnostics.CodeAnalysis пространство от имена като

[SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "args")]

Добре, както сте редактирали, казвайки Искам да премахна конкретно предупреждение за всички мои проекти

Не можете да направите това за цял проект според AFAIK. Но проверете свързаната публикация веднъж, ако това помага

Как да потисна съобщенията за анализ на код за всички видове членове?

person Rahul    schedule 17.05.2018
comment
Благодаря. Но това работи само за един проект. Моля, поправете ме, ако греша. (Аз обаче не гласувам против.) - person ispiro; 17.05.2018
comment
@ispiro да, както казахте конкретен ред код вижте свързаната документация за повече информация - person Rahul; 17.05.2018
comment
@Rahul той каза конкретен ред код, но имате грешен контекст. - person mxmissile; 17.05.2018
comment
@mxmissile, не изцяло както OP казва как да потисна предупреждение за конкретен ред код или за конкретен проект - person Rahul; 17.05.2018
comment
Благодаря. Но @mxmissile е прав. Просто имах предвид, че вече съм ги виждал и че това не е това, което търся. Редактирах въпроса, за да бъде малко по-ясен. - person ispiro; 17.05.2018
comment
@ispiro не смята, че можете да потиснете съобщението по същия начин и редактира публикацията със същото изявление - person Rahul; 17.05.2018
comment
Вижте моя отговор за това как да деактивирате това във VS. - person John Koerner; 18.05.2018

За да потиснете предупрежденията за всички проекти, трябва да създадете .editorconfig файл в директория от най-високо ниво. Например, аз имам моя в багажника и го предавам на контрол на източника, така че колегите ми да споделят същото настройки.

Настройките в този файл се прилагат за всички проекти в ствола и подпапките, освен ако не бъдат заменени от друг .editorconfig файл по-надолу в дървото на папките, напр. може да имате файл EditorConfig за специфичен проект в подпапка, която има различни настройки. Вижте Файлова йерархия и приоритет за повече подробности.

Създаване на EditorConfig файл

Можете да използвате текстов редактор за това, ако просто искате да промените една конкретна настройка. Visual Studio обаче може да създаде .editorconfig файл с разумни настройки по подразбиране за .NET вместо вас. От MSDN:

  • Създайте нов проект

  • От лентата с менюта изберете Проект > Добавяне на нов елемент; или натиснете Ctrl+Shift+A

  • Изберете шаблона editorconfig File (.NET), за да добавите файл EditorConfig, предварително попълнен със стил на .NET код по подразбиране, форматиране и конвенции за именуване

въведете описание на изображението тук

  • По желание изтрийте проекта - всъщност не ни трябва

Visual Studio 2019 - Създаване на EditorConfig файл от текущите настройки

Във Visual Studio 2019 можете вместо това да създайте файл EditorConfig от вашите текущи настройки. Просто щракнете върху следния бутон в диалоговия прозорец Опции под Text Editor > C# > Code Style > General:

въведете описание на изображението тук

Ако създавате в текстов редактор, вероятно ще имате нужда от това в горната част на файла, коригирано според нуждите:

# Remove the line below if you want to inherit .editorconfig settings from higher directories
root = true

# C# files
[*.cs]

Деактивиране на IDE0044 в конфигурационния файл на редактора

За да деактивирате конкретно IDE0044, добавете или променете следната настройка във файла .editorconfig:

dotnet_style_readonly_field = false:none

(В Visual Studio 2019 можете да зададете опцията Prefer readonly на No под TextEditor-> C# -> Code Style-> General в Опции и след това да натиснете бутона Generate .editorconfig file from settings, както е описано по-горе).

person Stephen Kennedy    schedule 20.10.2019

Можете да опитате да използвате Directory.Build.props добавяне на свойството NoWarn за конкретни предупреждения. Не съм го проверил обаче.

И както се казва в друг отговор, по-добре е да коригирате първопричината, вместо да я игнорирате.

person Uladzislau    schedule 17.05.2018

Бих искал да добавя към публикацията на Стивън, че неговото решение с файла .editorconfig не проработи за мен, без да уточня файловете, към които искам да приложа правилото. Например и като се има предвид, че искам да приложа правило към всички тестови файлове и че следвам конвенция за именуване, при която те завършват с „Tests.cs“, успях да игнорирам правилото CA1707 в тези файлове, като използвам следното правило:

[*Tests.cs]
dotnet_diagnostics.CA1707.severity = none

Повече информация за моя отговор тук

person ccoutinho    schedule 08.04.2020
comment
Не публикувах пълния си файл, тъй като го направих с VS и е голям, но наистина имам нещо подобно в горната част ([*.cs]). Оказва се, че е важно! Добавих информацията към моя отговор за хора, които правят конфигурационния файл ръчно. Благодаря за обратната връзка. - person Stephen Kennedy; 09.04.2020

IDE0044 е „добавяне на модификатор само за четене“, така че защо просто не добавите модификатора?

Предупрежденията ви казват, че правите нещо нередно, но приложението ще се компилира.

Най-добре е да нямате предупреждения в един идеален свят.

person BlythMeister    schedule 17.05.2018
comment
Тъй като в някои ситуации readonly не е най-добрият модификатор за използване (при масиви, например, защото масивите могат да бъдат модифицирани, дори ако тази конкретна препратка не може). Освен това има някои ситуации, при които е напълно легитимно и желателно да се преназначават полета и IDE0044 все още се отчита за тях. - person sjcaged; 28.05.2018
comment
Не съм съгласен. Дори в масив, настройката само за четене означава, че няма да се отървете от целия масив. Ако получите това предупреждение, то ви казва, че е напълно безопасно. По отношение на смяната на масиви. Въпреки че масив от списък е страхотен вътре в клас, трябва да връщате само колекция само за четене, за да защитите своя масив - person BlythMeister; 28.05.2018
comment
Разбира се, ако тръгнете по пътя на превръщането на всеки достъп до полето в правилен достъп. Съществуват и не-масивни причини за потискане на съобщението; независимо дали сте съгласни с тях, концепцията е, че това е предупреждение за стил, а не предупреждение за компилатор. Това е предупреждение IDExxxx, а не предупреждение CSxxxx. Може основателно да не сте съгласни с моето оспорване на неговата необходимост и аз може основателно да не съм съгласен с вашето възприятие за универсалната му уместност. Хората могат разумно да не са съгласни и разумно да желаят да деактивират предупреждението; този въпрос е за правенето на това като въпрос на тяхната собствена политика. - person sjcaged; 28.05.2018
comment
В един неидеален, т.е. реален свят, е много лесно да се забиете с проект с почти 2k предупреждения, предимно неизползвани променливи и т.н. Не ги поправям всички и те могат безопасно да бъдат потиснати. - person ProfK; 07.09.2018
comment
Ами много хора използват VS за Unity C# програмиране. В който можете да добавите атрибут SerializeField за показване и модифициране на променливи в инспектора, които VS не може да открие и това предупреждение става наистина досадно. - person ; 28.02.2019
comment
Трябва ли всяка конструкция на превключвател да има раздел по подразбиране? Сигурен ли си? - person nim; 22.04.2019