MSTest kod analizi
MSTest analizi ("MSTESTxxxx") kuralları C# veya Visual Basic kodunuzu güvenlik, performans, tasarım ve diğer sorunlar açısından inceler.
İpucu
Visual Studio kullanıyorsanız, birçok çözümleyici kuralının sorunu düzeltmek için uygulayabileceğiniz ilişkili kod düzeltmeleri vardır. Ampul simgesi menüsünde kod düzeltmeleri gösterilir.
Kurallar, performans kullanımı gibi kategoriler halinde düzenlenmiştir...
MSTest.TestFramework 3.7'den başlayarak, MSTest.Analyzers NuGet paketi çerçevenin bir bağımlılığıdır. Önceki sürümler için MSTest
meta paketi kullanmanız veya MSTest.Analyzers
için açıkça bir paket başvurusu eklemeniz gerekir.
MSTestAnalysisMode
MSTest 3.8'den başlayarak, hangi çözümleyicilerin hangi önem derecesinde etkinleştirildiğini belirlemek için MSTestAnalysisMode
adlı bir MSBuild özelliği kullanılabilir.
İpucu
Her mod için hangi kuralların hangi önem derecesinde etkinleştirildiğini görmek için NuGet önbelleğindeki ilgi alanı sürümünün paketine gidebilir, globalconfigs
dizinini bulabilir ve analiz moduna karşılık gelen .globalconfig
dosyasını açabilirsiniz.
NuGet önbellek dizinini bulma hakkında daha fazla bilgi için bkz. genel paketleri, önbelleği ve geçici klasörleri yönetme. Bu dizinden mstest.analyzers
dizinini bulun, ardından sürümünü (3.8 ve üzeri), sonra da globalconfigs
.
Alternatif olarak, ilgi alanı sürümünün NuGet paketini nuget.org
indirip NuGet Paket Gezgini'nde (Windows uygulaması) görüntüleyebilir veya doğrudan NuGet Paket Gezgini'ninweb uygulaması sürümünde görüntüleyebilirsiniz.
Bu özellik için kullanılabilir değerler:
None
Bu değer, tüm çözümleyicileri none
önem derecesine ayarlar ve bunların tümünü devre dışı bırakır. Daha sonra .editorconfig
veya .globalconfig
dosyaları kullanarak tek tek çözümleyicileri etkinleştirebilirsiniz.
Default
Bu ayar, her kural için varsayılan belgelenmiş davranışı izler.
- Varsayılan olarak etkinleştirilen kurallar, varsayılan önem derecelerini kullanır.
- Varsayılan olarak devre dışı bırakılan kurallar
none
önem derecesini kullanır.
Uyarı
Uyarılar olarak varsayılan olarak etkinleştirilen kurallar, çalışma zamanında sorunlara neden olması beklenen ihlallerdir.
Recommended
Çoğu geliştiricinin kullanmasını beklediğimiz mod budur. Varsayılan olarak Bilgi (suggestion
) önem derecesiyle etkinleştirilen kurallar, uyarılara yükseltilir. Ayrıca, belirli kurallar hem Recommended
hem de All
modlarında hatalara dönüştürülebilir. Örneğin, MSTEST0003: Test yöntemleri geçerli bir düzene sahip olmalıdırRecommended
ve All
modlarında hataya yükseltilir.
All
Bu mod Recommended
'den daha agresiftir. Tüm kurallar uyarı olarak etkinleştirilir. Belirli kuralların hem Recommended
hem de Recommended
modlarında hata olarak değerlendirilebileceği All
modu için belirtildiği gibi. Örneğin, MSTEST0003: Test yöntemleri geçerli bir düzene sahip olmalıdırRecommended
ve All
modlarında hataya yükseltilir.
Uyarı
Aşağıdaki kurallar tamamen kabul edilir ve Default
, Recommended
veya All
modlarında etkinleştirilmez:
- MSTEST0015: Test yöntemi yoksayılmamalıdır
- MSTEST0019: Oluşturucular yerine TestInitialize yöntemlerini tercih
- MSTEST0020: TestInitialize yöntemleri yerine oluşturucuları tercih
- MSTEST0021: TestCleanup yöntemleri yerine Dispose'ı tercih edin
- MSTEST0022: Dispose yöntemleri yerine TestCleanup'ı tercih
Kategoriler
Tasarım kuralları
Tasarım kuralları uygun tasarıma ve iyi uygulamalara uygun test paketleri oluşturmanıza ve sürdürmenize yardımcı olur.
Performans kuralları
Performans kuralları yüksek performanslı testi destekler.
Bastırma kuralları
Gizleme kuralları diğer kurallardan gelen teşhisleri gizlemeyi destekler.
Kullanım kuralları
Kullanım kuralları MSTest'in düzgün kullanımını destekler.
MSTESTEXP
Birkaç MSTest API'si ExperimentalAttributeile işaretlenmiştir. Bu öznitelik, API'nin deneysel olduğunu ve MSTest'in gelecekteki sürümlerinde kaldırılabileceğini veya değiştirilebileceğini gösterir. özniteliği, henüz kararlı olmayan ve üretim kullanımı için uygun olmayan API'leri tanımlamak için kullanılır.
MSTESTEXP tanılaması, kodunuzda deneysel bir API kullanmanız konusunda sizi uyarır.
SuppressMessageAttribute
ile bu tanılamayı engellemek için projenize aşağıdaki kodu ekleyin:
using System.Diagnostics.CodeAnalysis;
[assembly: SuppressMessage("MSTESTEXP", "Justification")]
Alternatif olarak, projenize aşağıdaki kodu ekleyerek bu tanılamayı ön işlemci yönergesiyle gizleyebilirsiniz:
#pragma warning disable MSTESTEXP
// API that is causing the warning.
#pragma warning restore MSTESTEXP