Анализ кода 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
.
Заметка
Правила, включенные по умолчанию в качестве предупреждений, являются нарушениями, которые, как ожидается, вызывают проблемы во время выполнения.
Recommended
Это режим, который мы ожидаем, что большинство разработчиков будут использовать. Правила, включенные по умолчанию с помощью сведений (suggestion
) серьезности, переключаются на предупреждения. Кроме того, в режимах Recommended
и All
некоторые правила могут быть переквалифицированы в ошибки. Например, MSTEST0003: методы тестирования должны иметь допустимую структуру, которая в режимах Recommended
и All
повышается до уровня ошибки.
All
Этот режим более агрессивный, чем Recommended
. Все правила включены в виде предупреждений. Как упоминалось в режиме Recommended
, некоторые правила могут стать ошибками в режимах Recommended
и All
. Например, MSTEST0003: методы тестирования должны иметь допустимую структуру, которая в режимах Recommended
и All
повышается до уровня ошибки.
Заметка
Следующие правила являются полностью добровольными и не включены в режимах Default
, Recommended
или All
:
- MSTEST0015. Метод тестирования не должен игнорироваться
- MSTEST0019. Рекомендуется использовать методы TestInitialize вместо конструкторов
- MSTEST0020. Предпочитайте конструкторы вместо методов TestInitialize
- MSTEST0021. Предпочитайте использовать Dispose вместо методов TestCleanup
- MSTEST0022: предпочитать использовать TestCleanup вместо методов Dispose
Категории
Правила проектирования
Принципы проектирования помогают создавать и поддерживать наборы тестов, которые соответствуют хорошему проектированию и передовым практикам.
Правила производительности
правила производительности поддерживают высокопроизводительные тесты.
Правила подавления
правила подавления поддерживают подавление диагностических сообщений из других правил.
Правила использования
Правила использования поддерживают правильное использование 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