Проверка кода по схеме слоев

Чтобы убедиться, что код не конфликтует со своей структурой, можно проверить код с помощью схем слоев в Visual Studio Ultimate и Visual Studio Premium.Это может помочь:

  • Найти конфликтующее между зависимостями в коде и зависимостями на схеме слоев.

  • Найти зависимости, на которые могут повлиять предложенные изменения.

    Например, можно изменить схему слоев для отображения потенциальных изменений архитектуры, а затем проверить код, чтобы увидеть зависимости, на которые повлияли эти изменения.

  • Выполнить рефакторинг или миграцию кода в другую структуру.

    Найти код или зависимости, выполнить определенные действия даже после перемещения кода в другую архитектуру.

Можно проверить код вручную из обозревателя схемы слоев в Visual Studio или из командной строки.Также можно проверить код автоматически, локальные или построения Team Foundation.В Видео канала 9: Разработка и проверка свою архитектуру с использованием схем слоев разделе.

Требования

  • Visual Studio Ultimate или Visual Studio Premium

  • Решения, содержащего проект моделирования со схемой слоев.Эта схема слоев необходимо связать с артефактами в проектах Visual C#, visual basic .NET или Visual Basic .NET, которые необходимо проверить.Дополнительные сведения см. в разделе Создание схем слоев из кода.

Целевой тип

  • В. если элемент поддерживает проверку

  • Включить другие сборки и проекты .NET для проверки

  • Проверьте код вручную

  • Проверьте код автоматически

  • Диагностика проблемы проверки слоев

  • Понимание и устранение ошибок проверки при помощи слоев

В. если элемент поддерживает проверку

  1. На схеме слоев выделите один или несколько уровней, щелкните правой кнопкой мыши в выделение, а затем щелкните Просмотр ссылок.

  2. В Обозревателе слоев просмотрите столбец Поддержка проверки.Если указано значение false, то элемент не поддерживает проверку.

Можно документы office веб-сайта, ссылки и файлы обычного текста со слоями, но процесс проверки не содержит их.Ошибки проверки не будут отображаться для ссылок на проекты или сборки, связанные с отдельными слоями при отсутствии не отображаются зависимости между слоями.Эти ссылки считаются зависимостями, только если используются в коде.

Включить другие сборки и проекты .NET для проверки

При перетаскивании элементов на схему слоев ссылки на соответствующие сборки или проекты .NET автоматически добавляются в папку Ссылки слоя в проекте моделирования.Эта папка содержит ссылки на сборки и проекты, которые анализируются во время проверки.Можно включить другие сборки и проекты .NET для проверки вручную, перетаскивая их на схему слоев.

  1. В Обозревателе решений щелкните правой кнопкой мыши проект моделирования или папку Ссылки слоя и нажмите кнопку Добавить ссылку.

  2. В диалоговом окне Добавление ссылки выберите сборки или проекты и нажмите кнопку ОК.

Проверьте код вручную

При наличии открытой схемы слоев, связанной с элементами решения, можно выполнить команду Проверить напрямую из схемы.Также можно использовать командную строку для выполнения команды msbuild с пользовательским свойством /p:ValidateArchitecture со значением True.Например, при внесении изменений в код, регулярно выполняйте проверку при помощи слоев, что позволит обнаруживать конфликты зависимостей заранее.

Проверка кода из открытой схемы слоев

  1. Щелкните правой кнопкой мыши поверхность схемы и выберите пункт Проверить архитектуру.

    ПримечаниеПримечание

    По умолчанию свойству Действие построения в файле схемы слоев (LAYEDIAGRAM-файл) присвоено значение Проверить, т. е. схема включена в процесс проверки.

    В окне Список ошибок выводятся происходящие ошибки.Дополнительные сведения об ошибках проверки см. в разделе Анализ и разрешение ошибок проверки слоев.

  2. Чтобы просмотреть источник каждой ошибки, дважды щелкните ошибку в окне Список ошибок.

    ПримечаниеПримечание

    Visual Studio может вместо источника ошибки показывать граф зависимостей.Это происходит, если код имеет зависимость в сборке, не заданной схемой слоев, либо в коде отсутствует зависимость, заданная схемой слоев.Просмотрите граф зависимостей или код, чтобы определить, должна ли существовать зависимость.Дополнительные сведения о графах зависимостей см. в разделе Визуализация зависимостей кода на графах зависимостей.

  3. Способы устранения ошибок см. в разделе Управление ошибками проверки.

Проверка кода в командной строке

  1. Откройте командную строку Visual Studio.

  2. Выберите один из следующих вариантов.

    • Чтобы проверить код на соответствие конкретному проекту моделирования в решении, запустите MSBuild со следующим пользовательским свойством.

      msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true
      

      - или -

      Откройте папку, в которой находится файл проекта моделирования (MODELPROJ-файл) и схема слоев, и запустите MSBuild со следующим пользовательским свойством.

      msbuild /p:ValidateArchitecture=true
      
    • Чтобы проверить код на соответствие всем проектам моделирования в решении, запустите MSBuild со следующим пользовательским свойством.

      msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true 
      

      - или -

      Откройте папку решения, в которой должен находиться проект моделирования со схемой слоев, и запустите MSBuild со следующим пользовательским свойством.

      msbuild /p:ValidateArchitecture=true 
      

    Отобразятся любые возникающие ошибки.Дополнительные сведения о MSBuild см. в разделах MSBuild и Задача MSBuild.

Дополнительные сведения об ошибках проверки см. в разделе Анализ и разрешение ошибок проверки слоев.

Dd409395.collapse_all(ru-ru,VS.110).gifУправление ошибками проверки

В процессе разработки может понадобиться подавить некоторые конфликты, выявленные в ходе проверки.Например, можно подавлять ошибки, над которыми уже ведется работа, а также ошибки, не имеющие отношения к конкретному сценарию.При подавлении ошибки рекомендуется фиксировать рабочий элемент в журнале в Team Foundation.

Создание рабочего элемента для ошибки проверки

  • В окне Список ошибок щелкните правой кнопкой мыши ошибку, подведите указатель к команде Создать рабочий элемент, а затем щелкните тип рабочего элемента, который требуется создать.

Для управления ошибками проверки в окне Список ошибок воспользуйтесь следующими процедурами.

Целевой тип

Выполните следующие действия

Подавить выбранные ошибки во время проверки

Щелкните одну или несколько выбранных ошибок правой кнопкой мыши и последовательно выберите Управление ошибками проверки и Подавление ошибок.

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

Подавленные ошибки отслеживаются в SUPPRESSIONS-файле, относящемся к соответствующему файлу схемы слоев.

Остановить подавление выбранных ошибок

Щелкните выбранную подавленную ошибку или ошибки правой кнопкой мыши и последовательно выберите Управление ошибками проверки и Отменить подавление ошибок.

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

Восстановить все подавленные ошибки в окне Список ошибок.

Щелкните правой кнопкой мыши в любом месте окна Список ошибок и последовательно выберите Управление ошибками проверки и Показать все подавленные ошибки.

Скрыть все подавленные ошибки в окне Список ошибок.

Щелкните правой кнопкой мыши в любом месте окна Список ошибок и последовательно выберите Управление ошибками проверки и Скрыть все подавленные ошибки.

Проверьте код автоматически

Можно выполнять проверку при помощи слоев при каждом запуске локального построения.Если команда использует Team Foundation, можно выполнить проверку слоев в условные возвраты, которые можно задать, создав пользовательскую задачу MSBuild и использовать отчеты построения для сбора ошибок проверки. Для создания построения с условным возвратом см. раздел Определение процесса построения с условным возвратом для проверки изменений.

Автоматическая проверка кода во время локального построения

  • Откройте файл проекта моделирования (.modelproj) в текстовом редакторе и включите следующее свойство.
<ValidateArchitecture>true</ValidateArchitecture>

- или -

  1. В Обозревателе решений щелкните правой кнопкой мыши проект моделирования, который содержит схему или схемы слоев, и выберите пункт Свойства.

  2. В окне Свойства свойству Проверка архитектуры проекта моделирования необходимо задать значение True.

    Это позволяет включить проект моделирования в процесс проверки.

  3. В Обозревателе решений щелкните файл схемы слоев (LAYERDIAGRAM-файл), который нужно использовать для проверки.

  4. Убедитесь, что свойство схемы Действие построения в окне Свойства имеет значение Проверить.

    Это позволяет включить схему слоев в процесс проверки.

Для управления ошибками проверки в окне списка ошибок см. Управление ошибками проверки.

Автоматическая проверка кода во время построения Team Foundation Build

  1. В Командном обозревателе дважды щелкните определение построения и выберите Обработать.

  2. В разделе Параметры процесса построения разверните блок Компиляция и в параметре Аргументы MSBuild введите следующее.

    /p:ValidateArchitecture=true

Дополнительные сведения об ошибках проверки см. в разделе Анализ и разрешение ошибок проверки слоев.Дополнительные сведения о Team Foundation Build см. в разделах:

Диагностика проблемы проверки слоев

Следующая таблица описывает проблемы проверки слоев и способы их устранения.Эти проблемы отличаются от ошибок, возникающих из-за несоответствия между кодом и структурой.Дополнительные сведения об этих ошибках см. в разделе Анализ и разрешение ошибок проверки слоев.

Проблема

Возможная причина

Решение

Ошибки проверки не возникают так, как это ожидается.

Проверка не работает на схемах слоев, которые скопированы из других схем слоев в обозревателе решений и находятся в том же проекте моделирования.Скопированные таким образом схемы слоев содержат те же ссылки, что и исходная схема слоев.

  1. Добавьте новую схему слоев в проект моделирования.

  2. Скопируйте элементы из исходной схемы слоев в новую схему.

Понимание и разрешение ошибок проверки при помощи слоев

Во время проверки кода со схемой слоев, если структура кода конфликтует с архитектурой, будут происходить ошибки проверки.Например, ошибки проверки могут происходить по следующим причинам:

  • Артефакт назначен неправильному слою.В этом случае следует переместить артефакт.

  • Способ использования артефактом (например, классом) другого класса конфликтует с имеющейся архитектурой.В этом случае необходимо выполнить рефакторинг кода, чтобы устранить зависимость.

Для устранения этих ошибок следует обновлять код до тех пор, пока в процессе проверки не перестанут происходить ошибки.Эту процедуру можно выполнить методом итераций.

Следующий раздел описывает синтаксис, используемый в этих ошибках, объясняет значение этих ошибок и предлагает пути решения или управления ими.

Синтаксис

Описание

АртефактN(Тип_артефактаN)

АртефактN – это артефакт, связанный со слоем на диаграмме слоев.

Тип_артефактаN – это тип АртефактN, например Class или Method, например:

MySolution.MyProject.MyClass.MyMethod(Method)

NamespaceNameN

Имя пространства имен.

LayerNameN

Название слоя на диаграмме слоев.

DependencyType

Тип отношения зависимости между Артефакт1 и Артефакт2.Например, Артефакт1 связан отношением Вызовы с Артефакт2.

Синтаксис ошибки

Описание ошибки

AV0001: Недопустимая зависимость: Артефакт1(Тип_артефакта1) --> Артефакт2(Тип_артефакта2)

   Слои: Имя_слоя1, Имя_слоя2 | Зависимости: Тип_зависимости

Артефакт1 в Имя_слоя1 не должен зависеть от Артефакт2 в Имя_слоя2, поскольку Имя_слоя1 не зависит непосредственно от Имя_слоя2.

AV1001: Недопустимое пространство имен: Артефакт

   Слой: Имя_слоя | Требуемое пространство имен: Имя_пространства_имен1 | Текущее пространство имен: Имя_пространства_имен2

Артефакты, связанные с Имя_слоя, должны принадлежать Имя_пространства_имен1.Артефакт находится в Имя_пространства_имен2, а не в Имя_пространства_имен1.

AV1002: Использование запрещенного пространства имен: Артефакт1(Тип_артефакта1) | Артефакт2(Тип_артефакта2)

   Слой: Имя_слоя | Запрещенное пространство имен: Имя_пространства_имен | Зависимости: Тип_зависимости

Артефакты, связанные с Имя_слоя, не должны зависеть от Имя_пространства_имен.Артефакт1 не может зависеть от Артефакт2, поскольку Артефакт2 находится в Имя_пространства_имен.

AV1003: Запрещенное пространство имен: Артефакт(Тип_артефакта)

   Слой: Имя_слоя | Запрещенное пространство имен: Имя_пространства_имен

Артефакты, связанные с Имя_слоя, не могут принадлежать Имя_пространства_имен.Артефакт принадлежит Имя_пространства_имен.

AV3001: Отсутствует ссылка: Слой "Имя_слоя" содержит ссылку на объект "Артефакт", который не удается найти.Отсутствует ссылка на сборку?

Имя_слоя связано с артефактом, который не удается найти.Например, связь с классом может отсутствовать из-за отсутствия в проекте моделирования ссылки на сборку, содержащую этот класс.

AV9001: при проверке архитектуры обнаружены внутренние ошибки.Результат может быть неполным.Для получения дополнительных сведений см. подробный журнал событий построения или окно вывода.

Для получения дополнительных сведений см. подробный журнал событий построения или окно вывода.

См. также

Основные понятия

Проверка системы в ходе разработки