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

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

В этой статье описан процесс использования устаревшего анализа для анализа сборок управляемого кода .NET для соответствия рекомендациям по проектированию .NET.

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

  1. Откройте Visual Studio и создайте проект из шаблона библиотеки классов (платформа .NET Framework).

  2. Присвойте проекту имя CodeAnalysisManagedDemo.

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

  4. Замените существующий текст в 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; } }
        }
    }
    
  5. Сохраните файл Class1.cs.

Анализ проекта для дефектов кода

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

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

    Отображается страница свойств CodeAnalysisManagedDemo.

  3. Выберите вкладку "Анализ кода".

  4. Убедитесь, что в разделе "Двоичные анализаторы" выбрано выполнение сборки.

  5. В раскрывающемся списке "Активные правила " выберите "Все правила Майкрософт".

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

  7. В меню "Сборка" щелкните "Создать кодAnalysisManagedDemo".

    Предупреждения о сборке проекта CodeAnalysisManagedDemo отображаются в окнах списка ошибок и выходных данных .

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

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

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

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

  3. Разверните узел свойств и откройте файл AssemblyInfo.cs .

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

    CA1014: пометьте сборки с помощью CLSCompliantAttribute: добавьте код [assembly: CLSCompliant(true)] в конец файла AssemblyInfo.cs.

    CA1032: реализуйте стандартные конструкторы исключений: добавьте конструктор public demo (String s) : base(s) { } в класс demo.

    CA1032: реализуйте стандартные конструкторы исключений: добавьте конструктор public demo (String s, Exception e) : base(s, e) { } в класс demo.

    CA1032: реализуйте стандартные конструкторы исключений: добавьте конструктор protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } в демонстрацию класса. Вам также потребуется добавить инструкцию using для System.Runtime.Serialization.

    CA1032: реализуйте стандартные конструкторы исключений: добавьте конструктор public demo () : base() { } в класс demo.

    CA1709: идентификаторы должны регистрироваться правильно: измените регистр пространства testCodeTestCodeимен на .

    CA1709: идентификаторы должны регистрироваться правильно: измените имя члена Demoна .

    CA1709: идентификаторы должны регистрироваться правильно: измените имя члена Itemна .

    CA1710: идентификаторы должны иметь правильный суффикс: измените имя класса и его конструкторов DemoExceptionна .

    CA2237: mark ISerializable types with SerializableAttribute: Добавление атрибута [Serializable ()] в класс demo.

    CA2210: сборки должны иметь допустимые строгие имена: подпись CodeAnalysisManagedDemo с ключом строгого имени:

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

      Отображаются свойства проекта.

    2. Перейдите на вкладку Подписывание .

    3. Выберите пункт "Подписать сборку " проверка box.

    4. В списке "Выбор файла ключа имени строки" нажмите кнопку< "Создать>".

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

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

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

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

    После завершения всех изменений файл 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; } }
        }
    }
    
  5. Выполните повторную сборку проекта.

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

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

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

    2. В меню правой кнопкой мыши (контекстное меню) выберите "Отключить>в файле подавления".

  2. Выполните повторную сборку проекта.

    Проект выполняет сборку без предупреждений или ошибок.

Анализ кода для управляемого кода