Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Aşağıdaki seçenekler, derleyicinin hataları ve uyarıları nasıl raporlayanı denetler.
MSBuild söz dizimi | csc.exe söz dizimi | Açıklama |
---|---|---|
WarningLevel |
-warn |
Uyarı düzeyini ayarlayın. daha fazla bilgi . |
AnalysisLevel |
/ | İsteğe bağlı uyarı düzeyini ayarlayın. daha fazla bilgi . |
TreatWarningsAsErrors |
-warnaserror |
Tüm uyarıları hata olarak değerlendirin. daha fazla bilgi . |
WarningsAsErrors |
-warnaserror |
Bir veya daha fazla uyarıyı hata olarak değerlendirin. daha fazla bilgi . |
WarningsNotAsErrors |
-warnnotaserror |
Bir veya daha fazla uyarıyı hata olarak değil olarak değerlendirin. daha fazla bilgi . |
NoWarn |
-nowarn |
Devre dışı bırakılan uyarıların listesini ayarlayın. daha fazla bilgi . |
CodeAnalysisRuleSet |
-ruleset |
Belirli tanılamaları devre dışı bırakmak için bir kural kümesi dosyası belirtin. daha fazla bilgi . |
ErrorLog |
-errorlog |
Tüm derleyici ve çözümleyici tanılamalarını günlüğe kaydetmek için bir dosya belirtin. daha fazla bilgi . |
ReportAnalyzer |
-reportanalyzer |
Yürütme süresi gibi ek çözümleyici bilgilerini bildirin. daha fazla bilgi . |
Not
Projeniz için bu seçenekleri yapılandırma hakkında daha fazla bilgi için Derleyici seçenekleri'ne bakın.
WarningLevel
WarningLevel seçeneği, derleyicinin görüntüleneceği uyarı düzeyini belirtir.
<WarningLevel>3</WarningLevel>
Öğe değeri, derleme için görüntülenmesini istediğiniz uyarı düzeyidir: Küçük sayılar yalnızca yüksek önem derecesi uyarılarını gösterir. Daha yüksek sayılarda daha fazla uyarı gösterilir. Değer sıfır veya pozitif bir tamsayı olmalıdır:
Uyarı düzeyi | Anlamı |
---|---|
0 | Tüm uyarı iletilerinin emisyonlarını kapatır. |
1 | Ciddi uyarı iletilerini görüntüler. |
2 | Sınıf üyelerini gizlemeyle ilgili uyarılar gibi düzey 1 uyarılarının yanı sıra belirli, daha az ciddi uyarıları görüntüler. |
3 | Düzey 2 uyarılarının yanı sıra her zaman veya true olarak değerlendirilen false ifadelerle ilgili uyarılar gibi belirli, daha az ciddi uyarıları görüntüler. |
4 (varsayılan) | Tüm düzey 3 uyarılarının yanı sıra bilgilendirme uyarılarını görüntüler. |
Uyarı
Derleyici komut satırı, uyarı dalgası uyarılarını etkinleştirmek için 4'ten büyük değerleri kabul eder. Ancak .NET SDK'sı WarningLevel'i proje dosyanızdaki AnalysisLevel ile eşleşecek şekilde ayarlar.
Hata veya uyarı hakkında bilgi almak için Yardım Dizininde hata kodunu arayabilirsiniz. Hata veya uyarı hakkında bilgi almanın diğer yolları için bkz . C# Derleyici Hataları. Tüm uyarıları hata olarak işlemek için TreatWarningsAsErrors kullanın. Bazı uyarıları devre dışı bırakmak için DisabledWarnings kullanın.
Analiz düzeyi
AnalysisLevel seçeneği, etkinleştirecek ek uyarı dalgalarını ve çözümleyicileri belirtir. Uyarı dalgası uyarıları, kodunuzu geliştiren veya gelecek sürümlerle uyumlu olduğundan emin olan ek denetimlerdir. Çözümleyiciler kodunuzu geliştirmek için lint benzeri bir özellik sağlar.
<AnalysisLevel>preview</AnalysisLevel>
Analiz düzeyi | Anlamı |
---|---|
5 | Tüm isteğe bağlı uyarı dalgası 5 uyarılarını görüntüler. |
6 | Tüm isteğe bağlı uyarı dalgası 6 uyarılarını görüntüler. |
7 | Tüm isteğe bağlı uyarı dalgası 7 uyarılarını görüntüler. |
en son (varsayılan) | Geçerli sürüm dahil olmak üzere en fazla tüm bilgilendirme uyarılarını görüntüler. |
preview | En son önizleme sürümü dahil olmak üzere en son bilgilendirme uyarılarını görüntüler. |
yok | Tüm bilgilendirme uyarılarını kapatır. |
İsteğe bağlı uyarılar hakkında daha fazla bilgi için bkz . Uyarı dalgaları.
Hata veya uyarı hakkında bilgi almak için Yardım Dizininde hata kodunu arayabilirsiniz. Hata veya uyarı hakkında bilgi almanın diğer yolları için bkz . C# Derleyici Hataları. Tüm uyarıları hata olarak işlemek için TreatWarningsAsErrors kullanın. Bazı uyarıları devre dışı bırakmak için NoWarn kullanın.
TreatWarningsAsErrors
TreatWarningsAsErrors seçeneği tüm uyarıları hata olarak ele alır. Yalnızca bazı uyarıları hata olarak ayarlamak için WarningsAsErrors'ı da kullanabilirsiniz. TreatWarningsAsErrors özelliğini açarsanız, hata olarak değerlendirilmemesi gereken uyarıları listelemek için WarningsNotAsErrors kullanabilirsiniz.
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
Bunun yerine tüm uyarı iletileri hata olarak bildirilir. Derleme işlemi durdurulr (hiçbir çıkış dosyası oluşturulmaz). Varsayılan olarak TreatWarningsAsErrors etkin değildir; bu da uyarıların çıkış dosyasının oluşturulmasını engellemediği anlamına gelir. İsteğe bağlı olarak, yalnızca birkaç uyarının hata olarak değerlendirilmesini istiyorsanız, hata olarak ele almak için virgülle ayrılmış bir uyarı numarası listesi belirtebilirsiniz. Null atanabilir tüm uyarı kümesi Null atanabilir kısaltmasıyla belirtilebilir. Derleyicinin görüntülemesini istediğiniz uyarı düzeyini belirtmek için WarningLevel kullanın. Bazı uyarıları devre dışı bırakmak için NoWarn kullanın.
Önemli
csproj<TreatWarningsAsErrors>
öğesini kullanmakla MSBuild komut satırı anahtarını kullanmak warnaserror
arasında iki küçük fark vardır.
TreatWarningsAsErrors, csproj dosyanızdaki diğer MSBuild görevlerini değil yalnızca C# derleyicisini etkiler. Komut warnaserror
satırı anahtarı tüm görevleri etkiler. İkinci olarak, TreatWarningsAsErrors kullanıldığında derleyici hiçbir uyarıda çıkış üretmez. Komut satırı anahtarı kullanıldığında derleyici çıktı warnaserror
üretir.
WarningsAsErrors ve WarningsNotAsErrors
WarningsAsErrors ve WarningsNotAsErrors seçenekleri, uyarı listesi için TreatWarningsAsErrors seçeneğini geçersiz kılar. Bu seçenek tüm CS uyarılarıyla kullanılabilir. "CS" ön eki isteğe bağlıdır. Sayıyı veya "CS"yi ve ardından hata veya uyarı numarasını kullanabilirsiniz. Uyarıları etkileyen diğer öğeler için bkz . Common MSBuild özellikleri. Uyarı kimlikleri listesine ek olarak, null atanabilirlikle ilgili tüm uyarıları hata olarak değerlendiren dizesini nullable
de belirtebilirsiniz.
0219, 0168 uyarılarını ve tüm null atanabilir uyarıları hata olarak etkinleştirin:
<WarningsAsErrors>0219,CS0168,nullable</WarningsAsErrors>
Hatalarla aynı uyarıları devre dışı bırakın:
<WarningsNotAsErrors>0219,CS0168,nullable</WarningsNotAsErrors>
Bir uyarı kümesini hata olarak yapılandırmak için WarningsAsErrors kullanırsınız. Tüm uyarıları hata olarak ayarladığınızda hata olmaması gereken bir uyarı kümesi yapılandırmak için WarningsNotAsErrors kullanın.
NoWarn
NoWarn seçeneği, derleyicinin bir veya daha fazla uyarı görüntülemesini engellemenize olanak tanır; burada warningnumber1
, warningnumber2
derleyicinin gizlemesini istediğiniz uyarı numaralarıdır. Birden çok uyarı numarasını virgülle ayırın. Null atanabilirlikle ilgili tüm uyarıları devre dışı bırakmak için belirtebilirsiniz nullable
.
<NoWarn>warningnumber1,warningnumber2</NoWarn>
Uyarı tanımlayıcısının yalnızca sayısal bölümünü belirtmeniz gerekir. Örneğin, CS0028'i engellemek istiyorsanız belirtebilirsiniz<NoWarn>28</NoWarn>
. Derleyici, önceki sürümlerde geçerli olan ancak kaldırılmış olan NoWarn'a geçirilen uyarı numaralarını sessizce yoksayar. Örneğin, CS0679 Visual Studio .NET 2002'deki derleyicide geçerliydi ancak daha sonra kaldırıldı.
Aşağıdaki uyarılar NoWarn seçeneği tarafından gizlenemez :
- Derleyici Uyarısı (düzey 1) CS2002
- Derleyici Uyarısı (düzey 1) CS2023
- Derleyici Uyarısı (düzey 1) CS2029
Uyarıların kodunuzla ilgili olası bir sorunun göstergesi olduğunu, dolayısıyla belirli bir uyarıyı devre dışı bırakma risklerini anlamanız gerektiğini unutmayın. NoWarn'ı yalnızca bir uyarının hatalı pozitif olduğundan ve çalışma zamanı hatası olabileceğine emin olduğunuzda kullanın.
Uyarıları devre dışı bırakmak için daha hedefli bir yaklaşım kullanmak isteyebilirsiniz:
Çoğu derleyici, uyarıları yalnızca belirli kod satırları için devre dışı bırakmanın yollarını sağlar, böylece aynı projenin başka bir yerinde meydana gelirse uyarıları yine de gözden geçirebilirsiniz. C# dilinde kodun yalnızca belirli bir bölümünde uyarıyı engellemek için #pragma uyarısını kullanın.
Amacınız derleme günlüğünüzde daha kısa ve odaklanmış bir çıkış görmekse, derleme günlüğü ayrıntı düzeyini değiştirmek isteyebilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: Derleme günlüğü dosyalarını görüntüleme, kaydetme ve yapılandırma.
NoWarn için önceden ayarlanmış herhangi bir değere üzerine yazmadan uyarı numaraları eklemek için, aşağıdaki örnekte gösterildiği gibi başvurun$(NoWarn)
:
<NoWarn>$(NoWarn);newwarningnumber3;newwarningnumber4</NoWarn>
CodeAnalysisRuleSet
Belirli tanılamaları yapılandıran bir kural kümesi dosyası belirtin.
<CodeAnalysisRuleSet>MyConfiguration.ruleset</CodeAnalysisRuleSet>
Burada MyConfiguration.ruleset
, kural kümesi dosyasının yoludur. Kural kümelerini kullanma hakkında daha fazla bilgi için, Kural kümeleri ile ilgili Visual Studio belgelerindeki makaleye bakın.
ErrorLog
Tüm derleyici ve çözümleyici tanılamalarını günlüğe kaydetmek için bir dosya belirtin.
<ErrorLog>compiler-diagnostics.sarif</ErrorLog>
ErrorLog seçeneği, derleyicinin bir Statik Çözümleme Sonuçları Değişim Biçimi (SARIF) günlüğü oluşturmasına neden olur. SARIF günlükleri genellikle derleyici ve çözümleyici tanılamalarından elde edilen sonuçları analiz eden araçlar tarafından okunur.
ÖĞESINE bağımsız değişkenini version
ErrorLog
kullanarak SARIF biçimini belirtebilirsiniz:
<ErrorLog>logVersion21.json,version=2.1</ErrorLog>
Ayırıcı virgül (,
) veya noktalı virgül (;
) olabilir. Sürüm için geçerli değerler şunlardır: "1", "2", ve "2.1". Varsayılan değer "1"dir. "2" ve "2.1" ifadelerinin her ikisi de SARIF sürüm 2.1.0 anlamına gelir.
RaporAnalyzer
Yürütme süresi gibi ek çözümleyici bilgilerini bildirin.
<ReportAnalyzer>true</ReportAnalyzer>
ReportAnalyzer seçeneği, derleyicinin derlemedeki çözümleyicilerin performans özelliklerini ayrıntılı olarak gösteren ek MSBuild günlük bilgileri yaymalarına neden olur. Genellikle çözümleyici yazarları tarafından çözümleyiciyi doğrulamanın bir parçası olarak kullanılır.
Önemli
Bu bayrak tarafından oluşturulan ek günlük bilgileri yalnızca komut satırı seçeneği kullanıldığında oluşturulur -verbosity:detailed
.
Daha fazla bilgi için MSBuild belgelerindeki anahtarlar makalesine bakın.