void GetAllProviderStates() { var language = CodeRefactoringService.MimeTypeToLanguage(mimeType); foreach (var node in BuiltInCodeDiagnosticProvider.GetBuiltInCodeRefactoringDescriptorsAsync(CodeRefactoringService.MimeTypeToLanguage(language), true).Result) { providerStates [node] = node.IsEnabled; } }
protected override void Run() { var lang = "text/x-csharp"; OpenFileDialog dlg = new OpenFileDialog("Export Rules", MonoDevelop.Components.FileChooserAction.Save); dlg.InitialFileName = "rules.html"; if (!dlg.Run()) { return; } Dictionary <CodeDiagnosticDescriptor, DiagnosticSeverity?> severities = new Dictionary <CodeDiagnosticDescriptor, DiagnosticSeverity?> (); foreach (var node in BuiltInCodeDiagnosticProvider.GetBuiltInCodeDiagnosticDecsriptorsAsync(CodeRefactoringService.MimeTypeToLanguage(lang), true).Result) { severities [node] = node.DiagnosticSeverity; // if (node.GetProvider ().SupportedDiagnostics.Length > 1) { // foreach (var subIssue in node.GetProvider ().SupportedDiagnostics) { // severities [subIssue] = node.GetSeverity (subIssue); // } // } } var grouped = severities.Keys.OfType <CodeDiagnosticDescriptor> () .GroupBy(node => node.GetProvider().SupportedDiagnostics.First().Category) .OrderBy(g => g.Key, StringComparer.Ordinal); using (var sw = new StreamWriter(dlg.SelectedFile)) { sw.WriteLine("<h1>Code Rules</h1>"); foreach (var g in grouped) { sw.WriteLine("<h2>" + g.Key + "</h2>"); sw.WriteLine("<table border='1'>"); foreach (var node in g.OrderBy(n => n.Name, StringComparer.Ordinal)) { var title = node.Name; var desc = node.GetProvider().SupportedDiagnostics.First().Description.ToString() != title?node.GetProvider().SupportedDiagnostics.First().Description : ""; sw.WriteLine("<tr><td>" + title + "</td><td>" + desc + "</td><td>" + node.DiagnosticSeverity + "</td></tr>"); if (node.GetProvider().SupportedDiagnostics.Length > 1) { foreach (var subIssue in node.GetProvider().SupportedDiagnostics) { title = subIssue.Description.ToString(); desc = subIssue.Description.ToString() != title ? subIssue.Description : ""; sw.WriteLine("<tr><td> - " + title + "</td><td>" + desc + "</td><td>" + node.GetSeverity(subIssue) + "</td></tr>"); } } } sw.WriteLine("</table>"); } var providerStates = new Dictionary <CodeRefactoringDescriptor, bool> (); foreach (var node in BuiltInCodeDiagnosticProvider.GetBuiltInCodeRefactoringDescriptorsAsync(CodeRefactoringService.MimeTypeToLanguage(lang), true).Result) { providerStates [node] = node.IsEnabled; } sw.WriteLine("<h1>Code Actions</h1>"); sw.WriteLine("<table border='1'>"); var sortedAndFiltered = providerStates.Keys.OrderBy(n => n.Name, StringComparer.Ordinal); foreach (var node in sortedAndFiltered) { sw.WriteLine("<tr><td>" + node.IdString + "</td><td>" + node.Name + "</td></tr>"); } sw.WriteLine("</table>"); } }