Поделиться через


Пошаговое руководство. Проверка управляемого кода на наличие дефектов

В данном пошаговом руководстве описывается процесс проверки управляемого проекта на наличие дефектов кода при помощи средства анализа кода.

Данное руководство содержит пошаговые инструкции по процессу анализа кода для проверки сборок управляемого кода .NET на соответствие правилам разработки решений Microsoft .NET.

В данном пошаговом руководстве:

  • Анализ предупреждений о дефектах кода и устранение их причины.

Обязательные компоненты

  • Visual Studio Premium.

Создание библиотеки классов

Создание библиотеки классов

  1. В меню Файл среды Visual Studio последовательно выберите пункты Создать и Проект.

  2. В диалоговом окне Новый проект в области Типы проектов выберите Visual C#.

  3. В списке Шаблоны выберите Библиотека классов.

  4. В текстовом поле Имя введите CodeAnalysisManagedDemo и нажмите кнопку ОК.

  5. После создания проекта откройте файл Class1.cs.

  6. Замените имеющийся текст в файле Class1.cs на следующий:

    //CodeAnalysisManagedDemo
    //Class1.cs
    using System;
    namespace testCode
    {
        
        public class demo : Exception
        {
            
            public static void Initialize(int size) { }
            protected static readonly int _item;
            public static int item { get { return _item; } }
        }
    }
  7. Сохраните файл Class1.cs.

Анализ проекта

Проверка управляемого проекта на наличие дефектов в коде

  1. Выберите проект CodeAnalysisManagedDemo в обозревателе решений.

  2. В меню Проект выберите пункт Свойства.

    На экран будет выведена страница свойств проекта CodeAnalysisManagedDemo.

  3. Выберите АнализКода.

  4. Убедитесь, что выбрана опция ВключитьАнализ Кода в Построении (определяет константу CODE_ANALYSIS).

  5. В раскрывающемся списке выберите команду Запустить этот набор правил и выберите Все правила Майкрософт.

  6. Выберите пункт Сохранить выбранные элементы в меню Файл, затем закройте страницу свойств проекта ManagedDemo.

  7. Выберите пункт Построить ManagedDemo в меню Построение.

    В окнах Анализ Кода и Вывод отобразятся предупреждения построения проекта CodeAnalysisManagedDemo.

    Если окно Анализ кода не отображается, в меню Анализировать выберите Окна, а затем N/A.

Исправление проблем анализа кода

Исправление нарушений правил анализа кода

  1. В меню Вид выберите пункт Список ошибок.

    В зависимости от выбранного профиля разработчика, возможно, понадобится навести указатель на пункт Другие окна в меню Вид и затем выбрать пункт Список ошибок.

  2. Выберите пункт Показать все файлы в обозревателе решений.

  3. После этого разверните узел "Свойства" и откройте файл AssemblyInfo.cs.

  4. Используйте сведения из следующей таблицы для устранения причины предупреждений:

Предупреждения

Устранение причины

CA1014: помечайте сборки атрибутом CLSCompliantAttribute: Microsoft.Design. Проект "demo" должен быть помечен атрибутом CLSCompliantAttribute и иметь значение "true".

  1. Добавьте код usingSystem; в файл AssemblyInfo.cs.

  2. Затем добавьте код [assembly: CLSCompliant(true)] в конец файла AssemblyInfo.cs.

  3. Постройте проект заново.

CA1032: реализуйте стандартные конструкторы исключения: Microsoft.Design. Добавьте следующий конструктор в данный класс: public demo(String)

  • Добавьте конструктор public demo (String s) : base(s) { } в класс demo.

CA1032: реализуйте стандартные конструкторы исключения: Microsoft.Design. Добавьте следующий конструктор в данный класс: public demo(String, Exception)

  • Добавьте конструктор public demo (String s, Exception e) : base(s, e) { } в класс demo.

CA1032: реализуйте стандартные конструкторы исключения: Microsoft.Design. Добавьте следующий конструктор в данный класс: protected demo(SerializationInfo, StreamingContext)

  1. Добавьте код using System.Runtime.Serialization; в начало файла Class1.cs.

  2. Затем добавьте конструктор protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } в класс demo.

  3. Постройте проект заново.

CA1032: реализуйте стандартные конструкторы исключения: Microsoft.Design. Добавьте следующий конструктор в данный класс: public demo()

  1. Добавьте конструктор public demo () : base() { } в класс demo.

  2. Постройте проект заново.

CA1709: идентификаторы должны иметь правильный регистр: Microsoft.Naming. Исправьте регистр имени пространства имен "testCode", заменив его на "TestCode".

  • Измените регистр пространства имен testCode на TestCode.

CA1709: идентификаторы должны иметь правильный регистр: Microsoft.Naming. Исправьте регистр имени типа "demo", заменив его на "Demo".

  • Измените имя члена на Demo.

CA1709: идентификаторы должны иметь правильный регистр: Microsoft.Naming. Исправьте регистр имени элемента "item", заменив его на "Item".

  • Измените имя члена на Item.

CA1710: идентификаторы должны иметь правильные суффиксы: Microsoft.Naming. Измените имя "testCode.demo" на имя, заканчивающееся на "Exception".

  • Измените имя класса и его конструкторов на DemoException.

CA2210: сборки должны иметь допустимые строгие имена: Подпишите "ManagedDemo" ключом строгого имени.

  1. Выберите пункт Свойства ManagedDemo в меню Проект.

    На экран будут выведены свойства проекта.

  2. Нажмите кнопку Подписывание.

  3. Установите флажок Подписать сборку.

  4. Выберите в списке Выберите файл ключей строгого имени значение <Новый…>.

    Появится диалоговое окно Создание ключа строгого имени.

  5. В поле Имя файла ключей введите "TestKey".

  6. Введите пароль и нажмите кнопку OK.

  7. Выберите пункт Сохранить выбранные элементы в меню Файл, затем закройте страницы свойств.

  8. Постройте проект заново.

CA2237: пометьте типы ISerializable атрибутом SerializableAttribute: Microsoft.Usage. Добавьте атрибут [Serializable] в тип "demo", поскольку данный тип реализует ISerializable.

  1. Добавьте атрибут [Serializable ()] в класс demo.

  2. Постройте проект заново.

После выполнения изменений, файл Class1.cs должен выглядеть следующим образом:

//CodeAnalysisManagedDemo
//Class1.cs
using System;
using System.Runtime.Serialization;


namespace TestCode
{

    [Serializable()] 
    public class DemoException : Exception
    {
        public DemoException () : base() { }
        public DemoException(String s) : base(s) { }
        public DemoException(String s, Exception e) : base(s, e) { }
        protected DemoException(SerializationInfo info, StreamingContext context) : base(info, context) { }

        public static void Initialize(int size) { }
        protected static readonly int _item;
        public static int Item { get { return _item; } }
    }
}

Исключение предупреждений анализа кода

Исключение предупреждений о дефектах кода

  1. Для каждого из оставшихся предупреждений выполните следующие действия:

    1. В окне анализа кода выберите предупреждение.

    2. Выберите Действия, затем выберите Подавить сообщение, затем выберите N/A.

    Дополнительные сведения см. в разделе Практическое руководство. Отключение предупреждений при помощи пункта меню.

  2. Постройте проект заново.

    Построение проекта теперь будет проходить без предупреждений и ошибок.