Отключение / исправление предупреждений анализа кода из файлов .Designer.cs - PullRequest
13 голосов
/ 08 августа 2011

Я широко использую DataVisualization.Charting.Chart, и по большей части это работает.Тем не менее, я часто запускаю анализ кода и позаботился обо всех своих предупреждениях.Но в файлах * .Designer.cs, использующих диаграммы, есть около 30 CA2000 (объект расположен не по всем путям исключений).Файлы Designer генерируют практически весь код диаграммы, и почти все элементы диаграммы реализуют IDisposable.Я установил флажок «Подавить результаты из сгенерированного кода» в настройках проекта, но он все еще делает это.

Есть ли способ исправить это, не создавая объекты диаграммы вручную и не отключая Анализ кода дляостальная часть кода в этом классе?Есть ли способ отключить его для всех файлов .Designer.cs?Или есть решение для правильного удаления этих предупреждений, если код разработчика позаботится об их удалении?

Ответы [ 4 ]

2 голосов
/ 15 августа 2011

Довольно немногие разработчики, похоже, столкнулись с этим без удачи, поэтому +1 за хороший вопрос!

Возможное решение - написать метод, который переопределяет CA2000 и подавляет правило, если обнаруживается предупреждение.в файле конструктора хорошее начало:

Написание пользовательских правил анализа кода в Visual Studio 2010

В противном случае см. комментарии в конце этой темы, инженеры MSFT.упомянуть, чтобы войти в Connect Connect: http://blogs.msdn.com/b/codeanalysis/archive/2010/03/22/what-s-new-in-code-analysis-for-visual-studio-2010.aspx

1 голос
/ 09 апреля 2015

Просто добавьте [SuppressMessage("Microsoft.Usage", "CA2213:DisposableFieldsShouldBeDisposed", MessageId = "..."] к методу Dispose в вашем файле * .Designer.cs.

Я только что это сделал, и я обнаружил, что VS 2012 достаточно умен, чтобы держать его там.даже при перезаписи файла, когда что-то изменилось в конструкторе.

1 голос
/ 27 августа 2014

Я знаю, что опоздал на это, но здесь все.

Я предполагаю, что все эти предупреждения генерируются для кода в методе InitializeComponent?Если да, то рассматривали ли вы вопрос об изменении файлов шаблона, расположенных в папке Common7 \ IDE \ ItemTemplates?Вы можете добавить атрибут GeneratedCode в метод в тех.Поскольку атрибут будет установлен только для него, весь ваш другой код в том же классе все еще будет проверяться анализом кода.

Вот пример для Form файла конструктора:

namespace $rootnamespace$
{
    partial class $safeitemrootname$
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        [System.CodeDom.Compiler.GeneratedCode("Windows Form Designer generated code", "1.0.0.0"), System.Diagnostics.DebuggerNonUserCode()]
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Text = "$safeitemrootname$";
        }

        #endregion
    }
}
0 голосов
/ 09 августа 2011

Вы пытались переключить значение свойства "Подавить результаты из сгенерированного кода" в значение true на странице свойств анализа кода для вашего проекта (-ов)? Эта опция является стандартным механизмом игнорирования проблем в сгенерированном коде.

Тем не менее, сгенерированный код - это код, который будет выполняться, поэтому игнорирование его нарушений не обязательно является хорошей идеей. Учитывая «шумность» CA2000, вы можете вместо этого рассмотреть возможность отключения правила.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...