मैं डिफ़ॉल्ट विश्लेषक प्रोजेक्ट को संशोधित कर रहा हूं जो कोड विश्लेषक टेम्पलेट से आता है ताकि आंशिक वर्ग के लिए सभी घोषणाओं पर रिपोर्ट करने के लिए इसे प्राप्त किया जा सके।आंशिक कक्षाओं पर ReportDiagnostic
मैं करने के लिए संशोधित किया है:
public override void Initialize(AnalysisContext context)
{
context.RegisterSymbolAction(AnalyzeSymbol, SymbolKind.NamedType);
}
private static void AnalyzeSymbol(SymbolAnalysisContext context)
{
var namedTypeSymbol = (INamedTypeSymbol)context.Symbol;
// Find just those named type symbols with names containing lowercase letters.
if (namedTypeSymbol.Name.ToCharArray().Any(char.IsLower))
{
foreach (var location in namedTypeSymbol.Locations)
{
// For all such symbols, produce a diagnostic.
var diagnostic = Diagnostic.Create(Rule, location, namedTypeSymbol.Name);
context.ReportDiagnostic(diagnostic);
}
}
}
दो अलग फ़ाइलों में, मैं इस तरह आंशिक वर्गों है:
// File1.cs
partial class Foo
{
public string BarString;
}
// File2.cs
partial class Foo
{
public string FooBarString;
}
मैं ReportDiagnostic पर breakpoints डाल दिया और यह प्रत्येक के लिए कहा जाता है देख रहा हूँ स्थान, लेकिन विजुअल स्टूडियो के भीतर यह केवल एक फ़ाइल के भीतर निदान की रिपोर्ट करता है।
यदि मैंने एक फ़ाइल में Foo
के कई कार्यान्वयन किए हैं (और यह उन फाइलों की घोषणा पर रिपोर्टिंग होता है) तो मैं दोनों डायग्नोस्टिक्स की रिपोर्ट देखूंगा।
क्या मैं गलतफहमी करता हूं कि डायग्नोस्टिक्स की रिपोर्ट कैसे की जानी चाहिए या यह एक बग है? यदि यह एक बग है, तो क्या यह रोज़लिन समस्या है या क्या यह विजुअल स्टूडियो की रोज़लिन की खपत में समस्या है?
क्या आपके पास आईडीई में दोनों फाइलें खुलती हैं? – SLaks
हां, दोनों फाइलें खुली हैं। –
मैं इसे पुन: पेश कर सकता हूं। यह मुझे एक बग की तरह लगता है। यदि आप पहले से ही इस पर कोई समस्या खोलने की अनुशंसा नहीं करेंगे: https://github.com/dotnet/roslyn/issues/ – JoshVarty