Roslyn çözümleyicisi kurallarını özelleştirme
Her Roslyn çözümleyici kuralının veya tanılamanın, projeniz için özelleştirebileceğiniz varsayılan önem derecesi ve gizleme durumu vardır. Bu makale çözümleyici önem derecelerini ayarlamayı ve çözümleyici ihlallerini engellemeyi kapsar.
Önem derecesi düzeyleri
Visual Studio 2019 sürüm 16.3 ve sonraki sürümlerinde, bir EditorConfig dosyasında, ampul menüsünden ve Hata Listesi penceresinde çözümleyici kurallarının önem derecesini yapılandırabilirsiniz.
Aşağıdaki tabloda, tanılama için yapılandırabileceğiniz farklı önem derecesi seçenekleri gösterilmektedir:
Önem Derecesi (Çözüm Gezgini) | Önem Derecesi (EditorConfig dosyası) | Derleme zamanı davranışı | Düzenleyici davranışı |
---|---|---|---|
Hata | error |
İhlaller Hata Listesi penceresindeki Hata sekmesinde ve komut satırı derleme çıkışında görünür ve derlemelerin başarısız olmasına neden olur. | Sorunlu kodun altı kırmızı dalgalı çizgiyle çizilir ve kaydırma çubuğunda küçük bir kırmızı kutuyla işaretlenir. |
Uyarı | warning |
İhlaller Hata Listesi penceresindeki Uyarı sekmesinde ve komut satırı derleme çıkışında görünür, ancak derlemelerin başarısız olmasına neden olmaz. | Sorunlu kodun altı yeşil dalgalı çizgiyle çizilir ve kaydırma çubuğunda küçük bir yeşil kutuyla işaretlenir. |
Öneri | suggestion |
İhlaller Hata Listesi penceresindeki İleti sekmesinde görünür, ancak komut satırı derleme çıkışında görünmez. | Etkilenen kodun altı gri dalgalı çizgiyle çizilir ve kaydırma çubuğunda küçük gri bir kutuyla işaretlenir. |
Sessiz | silent |
Kullanıcı tarafından görünmez. | Kullanıcı tarafından görünmez, ancak tanılama IDE tanılama altyapısına bildirilir. |
Hiçbiri | none |
Tamamen bastırıldı. | Tamamen bastırıldı. |
Varsayılan | default |
Kuralın varsayılan önem derecesine karşılık gelir. Kuralın varsayılan değerini belirlemek için Özellikler penceresi görüntüleyin. | Kuralın varsayılan önem derecesine karşılık gelir. |
Kural ihlallerini görüntüleme
Çözümleyici herhangi bir çözümleyici kuralı ihlali bulursa, bunları Hata Listesi penceresinde ve kod düzenleyicisinde raporlar.
Aşağıdaki ekran görüntüsünde Hata Listesi penceresinde bildirilen kural ihlalleri gösterilmektedir. Hata listesinde bildirilen çözümleyici ihlalleri kuralın önem düzeyi ayarıyla eşleşmektedir:
Çözümleyici kuralı ihlalleri de kod düzenleyicisinde sorunlu kodun altında dalgalı çizgiler olarak görünür. Örneğin, aşağıdaki ekran görüntüsünde üç ihlal gösterilmektedir: bir hata (kırmızı dalgalı çizgi), bir uyarı (yeşil dalgalı çizgi) ve bir öneri (üç gri nokta):
Birçok tanılamada kural ihlalini düzeltmek için uygulayabileceğiniz bir veya daha fazla ilişkili kod düzeltmesi vardır. Kod düzeltmeleri ampul simgesi menüsünde diğer Hızlı İşlem türleriyle birlikte gösterilir. Kod düzeltmeleri hakkında daha fazla bilgi için bkz . Yaygın Hızlı Eylemler.
Önem derecesi düzeylerini yapılandırma
Aşağıdaki yöntemlerden herhangi birini kullanarak kural önem derecesini ayarlayabilirsiniz:
Sessiz ve Hiçbiri önem derecesi karşılaştırması
Silent
varsayılan olarak etkinleştirilen önem derecesi kuralları devre dışı veya None
önem derecesi kurallarından farklıdır:
- Bir kod düzeltmesi önem
Silent
derecesi kuralı için kaydedilmişse, Visual Studio gizli tanılama kullanıcı tarafından görülemiyorsa bile kod düzeltmesini ampul kodu yeniden düzenleme eylemi olarak sunar. Önem derecesi kuralı olarakNone
devre dışı bırakılırsa kod düzeltmesi sunulmaz. - Bir EditorConfig dosyasında aynı anda birden çok çözümleyici kuralının önem derecesini ayarlayan girişler, önem derecesi kurallarını toplu olarak yapılandırabilir
Silent
.None
önem derecesi kuralları bu şekilde yapılandırılamaz. Bunun yerine, her kural kimliği için bir EditorConfig dosyasında önem derecesini ayarlayan girdiler aracılığıyla yapılandırılmaları gerekir.
EditorConfig dosyasında kural önem derecesini ayarlama
EditorConfig dosyaları Visual Studio 2019 sürüm 16.3 ve sonraki sürümlerde kullanılabilir.
EditorConfig dosyasında kuralın önem derecesini ayarlamak, bir kural kümesindeki veya Çözüm Gezgini herhangi bir önem derecesi kümesine göre önceliklidir. Önem derecesini EditorConfig dosyasında el ile veya bir ihlalin yanında görünen ampul aracılığıyla otomatik olarak yapılandırabilirsiniz.
EditorConfig dosyasında kural önem derecesini el ile yapılandırma
Kural önem derecesini yapılandırmak için şu adımları izleyin:
Henüz yoksa projenize bir EditorConfig dosyası ekleyin.
İlgili dosya uzantısının altına yapılandırmak istediğiniz her kural için bir girdi ekleyin.
Örneğin, C# dosyaları için CA1822 önem derecesini
error
ayarlamak için giriş aşağıdaki gibidir:[*.cs] dotnet_diagnostic.CA1822.severity = error
Bir EditorConfig dosyasındaki her tanılama kuralı kimliği için kural önem derecesini aşağıdaki söz dizimiyle ayarlayabilirsiniz:
dotnet_diagnostic.<rule ID>.severity = <severity>
IDE kod stili çözümleyiciler için, bunları farklı bir söz dizimi kullanarak bir EditorConfig dosyasında da yapılandırabilirsiniz.
Örneğin,
dotnet_style_qualification_for_field = false:suggestion
. Ancak söz diziminidotnet_diagnostic
kullanarak önem derecesi ayarlarsanız öncelik kazanır. Daha fazla bilgi için bkz . EditorConfig için dil kuralları.
EditorConfig dosyasında birden çok çözümleyici kuralının önem derecesini aynı anda ayarlama
EditorConfig dosyasında aynı anda birden çok çözümleyici kuralı ayarlama özelliği Visual Studio 2019 sürüm 16.5 ve sonraki sürümlerde kullanılabilir.
Belirli bir çözümleyici kuralları kategorisi için veya EditorConfig dosyasında tek bir giriş içeren tüm çözümleyici kuralları için önem derecesini ayarlayabilirsiniz:
Çözümleyici kuralları kategorisi için kural önem derecesini ayarlayın:
dotnet_analyzer_diagnostic.category-<rule category>.severity = <severity>
Tüm çözümleyici kuralları için kural önem derecesini ayarlayın:
dotnet_analyzer_diagnostic.severity = <severity>
Aynı anda birden çok çözümleyici kuralı yapılandıran girişler yalnızca varsayılan olarak etkinleştirilen kurallar için geçerlidir. Çözümleyici paketinde varsayılan olarak devre dışı olarak işaretlenmiş çözümleyici kuralları, açık dotnet_diagnostic.<rule ID>.severity = <severity>
girişler aracılığıyla etkinleştirilmelidir.
Belirli bir kural kimliği için geçerli olan birden çok girdiniz varsa, geçerli giriş için öncelik sırası aşağıdaki gibidir:
- Kimliğine göre tek bir kural için önem derecesi girdisi, bir kategorinin önem derecesi girdisi yerine önceliklidir.
- Bir kategori için önem derecesi girdisi, tüm çözümleyici kuralları için önem derecesi girdisi önceliklidir.
CA1822'nin bir performans kuralı olduğu aşağıdaki EditorConfig örneğini göz önünde bulundurun:
[*.cs]
dotnet_diagnostic.CA1822.severity = error
dotnet_analyzer_diagnostic.category-performance.severity = warning
dotnet_analyzer_diagnostic.severity = suggestion
Bu örnekte, üç girdi de CA1822 performans kuralına uygulanır. Ancak, belirtilen öncelik kurallarını kullanarak, ilk kural kimliği tabanlı önem derecesi girdisi sonraki girdilerden önceliklidir. Bu örnekte, CA1822'nin etkin önem derecesi error
vardır. Kalan performans kurallarının warning
önem derecesi vardır. Performans kuralları olmayan çözümleyici kurallarının suggestion
önem derecesi vardır.
Ampul menüsünden kural önem derecesini ayarlama
Visual Studio, Hızlı Eylemler ampul menüsünden kuralın önem derecesini yapılandırmak için kullanışlı bir yol sağlar. Şu adımları izleyin:
Bir ihlal oluştuktan sonra düzenleyicideki ihlal dalgalı çizginin üzerine gelin ve Ampul menüsünü açmak için Olası düzeltmeleri göster'i seçin. Alternatif olarak, imlecinizi çizginin üzerine getirin ve Ctrl tuşuna+ (nokta) basın.
Ampul menüsünde, değişikliğin önizlemesi için önem derecesi düzeyinin üzerine gelin ve ardından önem derecesini aşağıdaki seçeneklere göre yapılandırın:
Kural kimliği> önem derecesini yapılandırın<. Belirli bir kural için önem derecesini ayarlayın.
Tüm <stil> çözümleyicileri için önem derecesini yapılandırın. Belirli bir kural kategorisindeki tüm kuralların önem derecesini ayarlayın.
Tüm çözümleyiciler için önem derecesini yapılandırın. Çözümleyici kurallarının tüm kategorileri için önem derecesini ayarlayın.
Aşağıdaki örnekte Sorunları gizle veya yapılandır Kural kimliği önem derecesini yapılandır'ı <>seçin.>
Aşağıdaki örnekte Sorunları yapılandır veya Gizle>Kural kimliği> önem derecesini yapılandır'ı <seçin.
Önem derecesi seçeneklerinden birini seçin.
Visual Studio, önizleme kutusunda gösterildiği gibi kuralı istenen önem düzeyine yapılandırmak için EditorConfig dosyasına bir girdi ekler.
Projede henüz bir EditorConfig dosyanız yoksa Visual Studio sizin için bir tane oluşturur.
Hata Listesi penceresinden kural önem derecesini ayarlama
Visual Studio ayrıca hata listesi bağlam menüsünden kuralın önem derecesini yapılandırmak için kullanışlı bir yol sağlar. Şu adımları izleyin:
Bir ihlal oluştuktan sonra hata listesindeki tanılama girdisine sağ tıklayın.
Bağlam menüsünden Önem derecesini ayarla'yı ve ardından önem derecesi seçeneklerinden birini seçin.
Visual Studio, kuralı istenen düzeye yapılandırmak için EditorConfig dosyasına bir girdi ekler.
Projede henüz bir EditorConfig dosyanız yoksa Visual Studio sizin için bir tane oluşturur.
Çözüm Gezgini kural önem derecesini ayarlama
kural önem derecesini Çözüm Gezgini ayarlamak için şu adımları izleyin:
Çözüm Gezgini'da Başvuru Çözümleyicileri'ni> (veya .NET Core projeleri için Bağımlılık Çözümleyicileri>) genişletin.
Önem derecesini ayarlamak istediğiniz kuralı içeren derlemeyi genişletin.
Kurala sağ tıklayın ve Önem derecesini ayarla'yı seçin. Bağlam menüsünde önem derecesi seçeneklerinden birini seçin.
Visual Studio, kuralı istenen düzeye yapılandırmak için EditorConfig dosyasına bir girdi ekler. Projeniz EditorConfig dosyası yerine kural kümesi dosyası kullanıyorsa, önem derecesi girdisi kural kümesi dosyasına eklenir.
Projede henüz bir EditorConfig dosyanız veya kural kümesi dosyanız yoksa Visual Studio sizin için yeni bir EditorConfig dosyası oluşturur.
Kural kümesi dosyasında kural önem derecesini ayarlama
Kural kümesi dosyasından kural önem derecesini ayarlamak için şu adımları izleyin:
Etkin kural kümesi dosyasını aşağıdaki yollardan biriyle açın:
Çözüm Gezgini dosyasını genişletin ve ardından Başvurular'ı genişletin. Çözümleyiciler'e sağ tıklayın ve Etkin Kural Kümesini Aç'ı seçin.
Projenin Kod Analizi özellik sayfasında Aç'ı seçin.
Kural kümesini ilk kez düzenliyorsanız, Visual Studio varsayılan kural kümesi dosyasının bir kopyasını oluşturur, projectname.ruleset> olarak adlandırıp <projenize ekler. Bu özel kural kümesi, projeniz için etkin kural kümesi de olur.
Not
.NET Core ve .NET Standard projeleri, Çözüm Gezgini'daki kural kümeleri için menü komutlarını desteklemez; örneğin, Etkin Kural Kümesini Aç. .NET Core veya .NET Standard projesi için varsayılan olmayan bir kural kümesi belirtmek için CodeAnalysisRuleSet özelliğini proje dosyasına el ile ekleyin. Kural kümesi düzenleyicisinde kural kümesi içindeki kuralları yapılandırmaya devam edebilirsiniz.
İçeren derlemesini genişleterek kurala göz atın ve seçin.
Seçili kuralın Eylem sütununda, açılan listeyi açmak için değeri seçin ve ardından listeden bir önem düzeyi seçin.
Çözüm Gezgini çözümleyicileri ve tanılamayı görüntüleme
Çözüm Gezgini çözümleyici tanılamalarının büyük bir kısmını özelleştirebilirsiniz. NuGet paketi olarak bir çözümleyici yüklerseniz, Çözüm Gezgini'daki Başvurular düğümü (veya .NET Core projeleri için Bağımlılıklar düğümü) altında bir Çözümleyiciler düğümü görünür. Çözümleyicileri ve tanılamaları görüntülemek için şu adımları izleyin:
Çözüm Gezgini'da projenizi genişletin, Başvurular veya Bağımlılıklar'ı genişletin ve çözümleyiciler'i genişletin. Derlemedeki tanılamaları görmek için çözümleyici derlemelerinden birini genişletin.
Her tanılamanın yanındaki simge önem derecesini gösterir:
x
daire içinde hatanın önem derecesini gösterir!
üçgende uyarının önem derecesini gösteriri
düz bir daire içinde önerinin önem derecesini gösteriri
noktalı daire içinde Sessiz'in önem derecesini gösterir- Düz daire içinde aşağı doğru işaret eden ok Yok'un önem derecesini gösterir
Tanılamanın açıklaması ve varsayılan önem derecesi dahil olmak üzere özelliklerini görüntülemek için tanılamaya sağ tıklayın ve özellikler'i seçin. Alternatif olarak, tanılamayı seçin ve ardından Alt+Enter tuşuna basın.
Özellikler penceresi görüntülenir.
Özellikler penceresinde varsayılan önem derecesi gibi kod stili kurallarının (IDE öneki) özelliklerini görüntülemek için EnforceCodeStyleInBuild özelliğini olarak
true
ayarlayın.Tanılamaya ilişkin çevrimiçi belgeler için tanılamaya sağ tıklayın ve ardından Yardımı Görüntüle'yi seçin.
Mevcut bir kural kümesi dosyasını EditorConfig dosyasına dönüştürme
Visual Studio 2019 sürüm 16.5 ve sonraki sürümlerinde kural kümesi dosyaları, yönetilen kod için çözümleyici yapılandırması için EditorConfig dosyaları yerine kullanım dışı bırakılmıştır. EditorConfig dosyaları daha esnek olup Visual Studio IDE kod stili seçenekleri de dahil olmak üzere hem çözümleyici kuralı önem derecelerini hem de çözümleyici seçeneklerini yapılandırmanıza olanak sağlar. Çözümleyici kuralları önem derecesi yapılandırması için Visual Studio araçları artık kural kümesi dosyaları yerine EditorConfig dosyalarıyla çalışacak şekilde iyileştirildiğinden, kural kümesi dosyalarını kullanmaya devam eden mevcut projeleri dönüştürmeniz tavsiye edilir.
Mevcut kural kümesi dosyanızı editorconfig dosyasına dönüştürdüğünüzde, deponuzun köküne veya çözüm klasörüne kaydedin. Bunun yapılması, bu dosyadaki önem derecesi ayarlarının sırasıyla deponun veya çözümün tamamına otomatik olarak uygulanmasını sağlar.
Kural kümesi düzenleyicisini veya komut satırını kullanarak mevcut bir kural kümesi dosyasını EditorConfig dosyasına dönüştürebilirsiniz.
Not
.NET Core ve .NET Standard projeleri, Çözüm Gezgini'daki kural kümeleri için menü komutlarını desteklemez; örneğin, Etkin Kural Kümesini Aç. .NET Core veya .NET Standard projesi için varsayılan olmayan bir kural kümesi belirtmek için CodeAnalysisRuleSet özelliğini proje dosyasına el ile ekleyin. Kural kümesi düzenleyicisinde kural kümesi içindeki kuralları yapılandırmaya devam edebilirsiniz.
Kural kümesi düzenleyicisini kullanmak için şu adımları izleyin. Projeniz özellik değeri için CodeAnalysisRuleSet
zaten belirli bir kural kümesi dosyası kullanıyorsa, kural kümesi düzenleyicisinden eşdeğer bir EditorConfig dosyasına dönüştürebilirsiniz:
Çözüm Gezgini kural kümesi dosyasına çift tıklayın.
Kural kümesi dosyası, üst kısmında tıklanabilir bir bilgi çubuğu bulunan kural kümesi düzenleyicisinde açılır.
Kural kümesi düzenleyici dosyasını geçirmek için bilgi çubuğu bağlantısını seçin.
Farklı Kaydet iletişim kutusunda EditorConfig dosyasını oluşturmak istediğiniz dizini seçin ve ardından Kaydet'i seçin.
Oluşturulan EditorConfig düzenleyicide açılır. Ayrıca, MSBuild özelliği
CodeAnalysisRuleSet
artık özgün kural kümesi dosyasına başvurmaması için proje dosyasında güncelleştirilir.
Komut satırını kullanmak için şu adımları izleyin:
Microsoft.CodeAnalysis.RulesetToEditorconfigConverter NuGet paketini yükleyin.
RulesetToEditorconfigConverter.exe, kural kümesi dosyasının ve EditorConfig dosyasının yollarını komut satırı bağımsız değişkenleri olarak kullanarak yüklü paketten yürütür.
Örneğin:
Usage: RulesetToEditorconfigConverter.exe <%ruleset_file%> [<%path_to_editorconfig%>]
Aşağıdaki örnekte EditorConfig dosyasına dönüştürülecek bir kural kümesi dosyası gösterilmektedir:
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Rules for ConsoleApp" Description="Code analysis rules for ConsoleApp.csproj." ToolsVersion="16.0">
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
<Rule Id="CA1001" Action="Warning" />
<Rule Id="CA1821" Action="Warning" />
<Rule Id="CA2213" Action="Warning" />
<Rule Id="CA2231" Action="Warning" />
</Rules>
</RuleSet>
Aşağıdaki örnekte, dönüştürmeden sonra elde edilen EditorConfig dosyası gösterilmektedir:
# NOTE: Requires **VS2019 16.3** or later
# Rules for ConsoleApp
# Description: Code analysis rules for ConsoleApp.csproj.
# Code files
[*.{cs,vb}]
dotnet_diagnostic.CA1001.severity = warning
dotnet_diagnostic.CA1821.severity = warning
dotnet_diagnostic.CA2213.severity = warning
dotnet_diagnostic.CA2231.severity = warning
Oluşturulan kodu yapılandırma
Çözümleyiciler bir projedeki kaynak dosyalarda çalışır ve buldukları ihlalleri bildirir. Ancak, bu ihlaller sistem tarafından oluşturulan dosyalar için kullanışlı değildir. Örnek olarak tasarımcı tarafından oluşturulan kod dosyaları, derleme sistemi tarafından oluşturulan geçici kaynak dosyalar gibi kod dosyaları verilebilir. Bu tür dosyalar için kullanıcılar dosyaları el ile düzenleyemez ve ihlalleri düzeltme konusunda endişelenmez.
Bu nedenle, çözümleyici sürücüsü varsayılan olarak yalnızca belirli adlara, dosya uzantılarına veya otomatik olarak oluşturulan dosya üst bilgilerine sahip dosyaları oluşturulan kod dosyaları olarak inceler. Örneğin, .designer.cs veya .generated.cs ile biten bir dosya adı oluşturulan kod olarak kabul edilir. Ancak, bu buluşsal yöntemler kullanıcının kaynak kodunda özel olarak oluşturulan tüm kod dosyalarını tanımlayamayabilir.
Visual Studio 2019 sürüm 16.5 ve sonraki sürümlerinde, son kullanıcılar belirli dosya ve klasörleri bir EditorConfig dosyasında oluşturulan kod olarak işlenecek şekilde yapılandırabilir.
Böyle bir yapılandırma eklemek için şu adımları izleyin:
Projeniz için henüz bir EditorConfig dosyanız yoksa bir tane ekleyin.
generated_code = true | false
Belirli dosya ve klasörler için girdiyi ekleyin. Örneğin, adı oluşturulan kod olarak biten.MyGenerated.cs
tüm dosyaları işlemek için şu girişi kullanın:[*.MyGenerated.cs] generated_code = true
İhlalleri gizleme
Çeşitli yöntemleri kullanarak kural ihlallerini gizleyebilirsiniz. Bilgi için bkz . Kod analizi ihlallerini engelleme.
Komut satırı kullanımı
Projenizi komut satırında oluşturduğunuzda, aşağıdaki koşullar karşılanırsa derleme çıkışında kural ihlalleri görüntülenir:
Çözümleyiciler .NET SDK'sı veya NuGet paketi olarak yüklenir ve .vsix uzantısı olarak yüklenmez.
.NET SDK kullanılarak yüklenen çözümleyiciler için çözümleyicileri etkinleştirmeniz gerekebilir. Kod stilleri için, bir MSBuild özelliği ayarlayarak derlemelerde kod stillerini de zorunlu kılabilirsiniz.
Projenin kodunda bir veya daha fazla kural ihlal edilir.
İhlal edilen kuralın önem düzeyi uyarı olarak ayarlanır; bu durumda ihlaller derlemenin başarısız olmasına veya hataya neden olmaz ve bu durumda ihlaller derlemenin başarısız olmasına neden olur.
Derleme çıkışının ayrıntı düzeyi, kural ihlallerinin gösterilip gösterilmediğini etkilemez. Sessiz ayrıntı düzeyine sahip olsa bile kural ihlalleri derleme çıkışında görünür.
Komut satırından FxCopCmd.exe veya bayraklı msbuild RunCodeAnalysis
aracılığıyla eski analizi çalıştırmaya alışkınsanız, bunu bunun yerine kod çözümleyicileriyle yapabilirsiniz.
msbuild kullanarak projenizi oluştururken komut satırında çözümleyici ihlallerini görmek için şuna benzer bir komut çalıştırın:
msbuild myproject.csproj /target:rebuild /verbosity:minimal
Aşağıdaki ekran görüntüsünde, çözümleyici kuralı ihlali içeren bir proje oluşturma işleminin komut satırı derleme çıkışı gösterilmektedir:
Bağımlı projeler
.NET Core projesinde, NuGet çözümleyicileri olan bir projeye başvuru eklerseniz, Visual Studio bu çözümleyicileri bağımlı projeye otomatik olarak ekler. Bu davranışı devre dışı bırakmak için (örneğin, bağımlı proje bir birim testi projesiyse), başvuruda bulunılan projenin .csproj veya .vbproj dosyasında özniteliğini ayarlayarak PrivateAssets
NuGet paketini özel olarak işaretleyin:
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="5.0.0" PrivateAssets="all" />