Как отключить CA1814 с предупреждением #pragma? - PullRequest
0 голосов
/ 24 октября 2018

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

Чтобы исключить некоторые неясные настройки проектаЯ создал простой игрушечный пример.Здесь я использую набор правил «Все правила Microsoft».Следующее все еще дает мне предупреждения, включая CA1814:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
#pragma warning disable 1814 
            var test = new int[0,0,0];
            var b = new Banana();
#pragma warning restore 1814 
            return;
        }
    }

    class Banana : IDisposable
    {
        public void Dispose()
        {
            Console.WriteLine("What a waste");
        }
    }
}

Warnings

Я не уверен, связано ли это как-то, но даже со всеми этимиошибки, я могу нормально построить проект, используя уровень предупреждения: 4, обрабатывать предупреждения как ошибки: «Все».

редактировать: я также пробовал CA1814 вместо 1814

1 Ответ

0 голосов
/ 24 октября 2018

CS1814 само по себе не является предупреждением компилятора;это предупреждение анализа кода.Вы включили статический анализ кода в своем проекте и включили все правила.Возможно, вам не все равно следовать всем им, и вот с чем вы столкнулись.

Возможно, вы захотите настроить свой набор правил.Это можно сделать одним из двух способов:

  1. Выборочно отключить предупреждение с помощью атрибута SuppressMessage
  2. Создать новый набор правил на основе набора «Все правила Microsoft» и настройте его так, чтобы он не включал CS1814.

Для первого подхода добавьте следующий атрибут в начало файла или метода:

[SuppressMessage("Microsoft.Performance", "CA1814:PreferJaggedArraysOverMultidimensional")]
...