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


Анализ кода MSTest

Правила анализа MSTest ("MSTESTxxxx") проверяют код C# или Visual Basic для обеспечения безопасности, производительности, проектирования и других проблем.

Совет

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

Правила организованы по категориям, таким как использование производительности...

Начиная с MSTest.TestFramework 3.7, пакет NuGet MSTest.Analyzers является зависимостью фреймворка. Для более ранних версий необходимо использовать метапакет MSTest или добавить ссылку на пакет для MSTest.Analyzers явно.

MSTestAnalysisMode

Начиная с MSTest 3.8, свойство MSBuild с именем MSTestAnalysisMode доступно для определения того, какие анализаторы включены при какой серьезности.

Совет

Чтобы узнать, какие правила включены для каждого режима серьезности, можно перейти к пакету интересующей версии кэша NuGet, найти каталог globalconfigs и открыть файл .globalconfig, соответствующий режиму анализа. Дополнительные сведения о поиске каталога кэша NuGet см. в статье Управление глобальными пакетами, кэшем и временными папками. В этом каталоге найдите каталог mstest.analyzers, а затем версию (3.8 и более позднюю), а затем globalconfigs. Кроме того, вы можете скачать пакет NuGet интересующей версии из nuget.org и просмотреть его в обозревателе пакетов NuGet (приложение Windows) или просмотреть непосредственно в версии веб-приложения обозревателя пакетов NuGet.

Доступные значения для этого свойства:

None

Это значение устанавливает степень серьезности none для всех анализаторов, отключая их. Затем можно включить отдельные анализаторы с помощью .editorconfig или .globalconfig файлов.

Default

Этот параметр следует описанию по умолчанию для каждого правила.

  • Правила, включенные по умолчанию, будут использовать уровень серьезности по умолчанию.
  • Правила, отключенные по умолчанию, будут использовать уровень важности none.

Заметка

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

Это режим, который мы ожидаем, что большинство разработчиков будут использовать. Правила, включенные по умолчанию с помощью сведений (suggestion) серьезности, переключаются на предупреждения. Кроме того, в режимах Recommended и All некоторые правила могут быть переквалифицированы в ошибки. Например, MSTEST0003: методы тестирования должны иметь допустимую структуру, которая в режимах Recommended и All повышается до уровня ошибки.

All

Этот режим более агрессивный, чем Recommended. Все правила включены в виде предупреждений. Как упоминалось в режиме Recommended, некоторые правила могут стать ошибками в режимах Recommended и All. Например, MSTEST0003: методы тестирования должны иметь допустимую структуру, которая в режимах Recommended и All повышается до уровня ошибки.

Категории

Правила проектирования

Принципы проектирования помогают создавать и поддерживать наборы тестов, которые соответствуют хорошему проектированию и передовым практикам.

Правила производительности

правила производительности поддерживают высокопроизводительные тесты.

Правила подавления

правила подавления поддерживают подавление диагностических сообщений из других правил.

Правила использования

Правила использования поддерживают правильное использование MSTest.

MSTESTEXP

Некоторые интерфейсы API MSTest аннотированы с помощью ExperimentalAttribute. Этот атрибут указывает, что API является экспериментальным и может быть удален или изменен в будущих версиях MSTest. Атрибут используется для идентификации API, которые еще не стабильны и не подходят для использования в рабочей среде.

Диагностика MSTESTEXP предупреждает о использовании экспериментального API в вашем коде. Чтобы отключить эту диагностику с помощью SuppressMessageAttribute, добавьте в проект следующий код:

using System.Diagnostics.CodeAnalysis;

[assembly: SuppressMessage("MSTESTEXP", "Justification")]

Кроме того, эту диагностику можно отключить с помощью директивы препроцессора, добавив в проект следующий код:

#pragma warning disable MSTESTEXP
        // API that is causing the warning.
#pragma warning restore MSTESTEXP