Hataları ve uyarıları raporlamak için C# Derleyici Seçenekleri

Aşağıdaki seçenekler, derleyicinin hataları ve uyarıları nasıl raporlayanı denetler. Yeni MSBuild söz dizimi Kalın olarak gösterilir. Eski csc.exe söz dizimi içinde code stylegösterilir.

  • WarningLevel / -warn: Uyarı düzeyini ayarlayın.
  • AnalysisLevel: İsteğe bağlı uyarı düzeyini ayarlayın.
  • TreatWarningsAsErrors / -warnaserror: Tüm uyarıları hata olarak değerlendirin
  • WarningsAsErrors / -warnaserror: Bir veya daha fazla uyarıyı hata olarak değerlendirin
  • WarningsNotAsErrors / -warnnotaserror: Bir veya daha fazla uyarıyı hata olarak değil olarak değerlendirin
  • NoWarn / -nowarn: Devre dışı bırakılan uyarıların listesini ayarlayın.
  • CodeAnalysisRuleSet / -ruleset: Belirli tanılamaları devre dışı bırakmak için bir kural kümesi dosyası belirtin.
  • ErrorLog / -errorlog: Tüm derleyici ve çözümleyici tanılamalarını günlüğe kaydetmek için bir dosya belirtin.
  • ReportAnalyzer / -reportanalyzer: Yürütme süresi gibi ek çözümleyici bilgilerini bildirin.

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 falseolarak değerlendirilen true 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 dosyanızdaki öğesini kullanmakla <TreatWarningsAsErrors> 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.

Hata olarak 0219 ve 0168 uyarılarını etkinleştirin:

<WarningsAsErrors>0219,CS0168</WarningsAsErrors>

Hatalarla aynı uyarıları devre dışı bırakın:

<WarningsNotAsErrors>0219,CS0168</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.

<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 versionErrorLog 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.