Пошаговое руководство. Использование анализа статического кода для поиска дефектов кода
В этом пошаговом руководстве вы проанализируете управляемый проект для дефектов кода с помощью устаревшего анализа кода.
В этой статье описан процесс использования устаревшего анализа для анализа сборок управляемого кода .NET для соответствия рекомендациям по проектированию .NET.
Создание библиотеки классов
Откройте Visual Studio и создайте проект из шаблона библиотеки классов (платформа .NET Framework).
Присвойте проекту имя CodeAnalysisManagedDemo.
После создания проекта откройте файл Class1.cs .
Замените существующий текст в 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; } } } }
Сохраните файл Class1.cs.
Анализ проекта для дефектов кода
Выберите проект CodeAnalysisManagedDemo в Обозреватель решений.
В меню Проект выберите пункт Свойства.
Отображается страница свойств CodeAnalysisManagedDemo.
Выберите вкладку "Анализ кода".
Убедитесь, что в разделе "Двоичные анализаторы" выбрано выполнение сборки.
В раскрывающемся списке "Активные правила " выберите "Все правила Майкрософт".
В меню "Файл" нажмите кнопку "Сохранить выбранные элементы" и закройте страницы свойств.
В меню "Сборка" щелкните "Создать кодAnalysisManagedDemo".
Предупреждения о сборке проекта CodeAnalysisManagedDemo отображаются в окнах списка ошибок и выходных данных .
Исправление проблем анализа кода
В меню "Вид" выберите "Список ошибок".
В зависимости от выбранного профиля разработчика может потребоваться указать другие окна в меню "Вид ", а затем выбрать список ошибок.
В обозревателе решений выберите Показать все файлы.
Разверните узел свойств и откройте файл AssemblyInfo.cs .
Чтобы исправить предупреждения, используйте следующие советы.
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: идентификаторы должны регистрироваться правильно: измените регистр пространства
testCode
TestCode
имен на .CA1709: идентификаторы должны регистрироваться правильно: измените имя члена
Demo
на .CA1709: идентификаторы должны регистрироваться правильно: измените имя члена
Item
на .CA1710: идентификаторы должны иметь правильный суффикс: измените имя класса и его конструкторов
DemoException
на .CA2237: mark ISerializable types with SerializableAttribute: Добавление атрибута
[Serializable ()]
в классdemo
.CA2210: сборки должны иметь допустимые строгие имена: подпись CodeAnalysisManagedDemo с ключом строгого имени:
В меню "Проект" выберите "Свойства CodeAnalysisManagedDemo".
Отображаются свойства проекта.
Перейдите на вкладку Подписывание .
Выберите пункт "Подписать сборку " проверка box.
В списке "Выбор файла ключа имени строки" нажмите кнопку< "Создать>".
Откроется диалоговое окно Создание ключа строгого имени.
В поле "Имя файла ключа" введите TestKey.
Введите пароль и нажмите кнопку "ОК".
В меню "Файл" выберите "Сохранить выбранные элементы" и закройте страницы свойств.
После завершения всех изменений файл 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; } } } }
Выполните повторную сборку проекта.
Исключение предупреждений анализа кода
Для каждого из оставшихся предупреждений выполните следующие действия:
Выберите предупреждение в списке ошибок.
В меню правой кнопкой мыши (контекстное меню) выберите "Отключить>в файле подавления".
Выполните повторную сборку проекта.
Проект выполняет сборку без предупреждений или ошибок.
Связанный контент
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по