Skip to content

Commit

Permalink
[CLI] Add more information about the found diagnostics to the XML out…
Browse files Browse the repository at this point in the history
…put file (#1078)
  • Loading branch information
PeterKaszab committed Apr 23, 2023
1 parent 4a99e26 commit a86a962
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 5 deletions.
1 change: 1 addition & 0 deletions ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
29 changes: 24 additions & 5 deletions src/CommandLine/Xml/DiagnosticXmlSerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,30 @@ private static XElement CreateSummary(IEnumerable<DiagnosticInfo> 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<DiagnosticDescriptor, DiagnosticInfo> 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)
Expand Down

0 comments on commit a86a962

Please sign in to comment.