diff --git a/ChangeLog.md b/ChangeLog.md index 690fdc4920..074d8eaa6f 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - [CLI] Bump Roslyn to 4.5.0 ([#1043](https://github.com/josefpihrt/roslynator/pull/1043)). +- [CLI] Add more information about the found diagnostics to the XML output file ([#1078](https://github.com/josefpihrt/roslynator/pull/1078) by @PeterKaszab). ### Fixed diff --git a/src/CommandLine/Xml/DiagnosticXmlSerializer.cs b/src/CommandLine/Xml/DiagnosticXmlSerializer.cs index ec8f3ab461..6cd84ec70a 100644 --- a/src/CommandLine/Xml/DiagnosticXmlSerializer.cs +++ b/src/CommandLine/Xml/DiagnosticXmlSerializer.cs @@ -86,11 +86,30 @@ private static XElement CreateSummary(IEnumerable diagnostics, I diagnostics .GroupBy(f => f.Descriptor, DiagnosticDescriptorComparer.Id) .OrderBy(f => f.Key, DiagnosticDescriptorComparer.Id) - .Select(f => new XElement( - "Diagnostic", - new XAttribute("Id", f.Key.Id), - new XAttribute("Title", f.Key.Title.ToString(formatProvider)), - new XAttribute("Count", f.Count())))); + .Select(f => SerializeSummaryDiagnosticGroup(f, formatProvider))); + } + + private static XElement SerializeSummaryDiagnosticGroup( + IGrouping group, + IFormatProvider formatProvider) + { + XElement descriptionElement = null; + XElement helpLinkElement = null; + + string descriptionText = group.Key.Description?.ToString(formatProvider); + if (!string.IsNullOrEmpty(descriptionText)) + descriptionElement = new XElement("Description", descriptionText); + + if (!string.IsNullOrEmpty(group.Key.HelpLinkUri)) + helpLinkElement = new XElement("HelpLink", group.Key.HelpLinkUri); + + return new XElement( + "Diagnostic", + new XAttribute("Id", group.Key.Id), + new XAttribute("Title", group.Key.Title.ToString(formatProvider)), + new XAttribute("Count", group.Count()), + descriptionElement, + helpLinkElement); } private static void SerializeDocument(string filePath, XElement summary, params object[] projects)