Skip to content

Commit e0d09c7

Browse files
committed
Create shared extension methods GetFirstXmlElement and GetXmlElements
1 parent 10d3857 commit e0d09c7

3 files changed

Lines changed: 33 additions & 29 deletions

File tree

OpenStackNetAnalyzers/OpenStackNetAnalyzers/DocumentValueFromSummaryAnalyzer.cs

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -58,37 +58,10 @@ private void HandlePropertyDeclaration(SyntaxNodeAnalysisContext context)
5858
if (documentationTriviaSyntax == null)
5959
return;
6060

61-
XmlNodeSyntax valueNode = GetXmlElement(documentationTriviaSyntax.Content, "value");
62-
if (valueNode != null)
61+
if (documentationTriviaSyntax.Content.GetXmlElements("value").Any())
6362
return;
6463

6564
context.ReportDiagnostic(Diagnostic.Create(Descriptor, syntax.Identifier.GetLocation()));
6665
}
67-
68-
internal static XmlNodeSyntax GetXmlElement(SyntaxList<XmlNodeSyntax> content, string elementName)
69-
{
70-
foreach (XmlNodeSyntax syntax in content)
71-
{
72-
XmlEmptyElementSyntax emptyElement = syntax as XmlEmptyElementSyntax;
73-
if (emptyElement != null)
74-
{
75-
if (string.Equals(elementName, emptyElement.Name.ToString(), StringComparison.Ordinal))
76-
return emptyElement;
77-
78-
continue;
79-
}
80-
81-
XmlElementSyntax elementSyntax = syntax as XmlElementSyntax;
82-
if (elementSyntax != null)
83-
{
84-
if (string.Equals(elementName, elementSyntax.StartTag?.Name?.ToString(), StringComparison.Ordinal))
85-
return elementSyntax;
86-
87-
continue;
88-
}
89-
}
90-
91-
return null;
92-
}
9366
}
9467
}

OpenStackNetAnalyzers/OpenStackNetAnalyzers/DocumentValueFromSummaryCodeFix.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ private async Task<Document> CreateChangedDocument(CodeFixContext context, Prope
5656
if (documentationComment == null)
5757
return context.Document;
5858

59-
XmlElementSyntax summaryElement = (XmlElementSyntax)DocumentValueFromSummaryAnalyzer.GetXmlElement(documentationComment.Content, "summary");
59+
XmlElementSyntax summaryElement = (XmlElementSyntax)documentationComment.Content.GetFirstXmlElement("summary");
6060
if (summaryElement == null)
6161
return context.Document;
6262

OpenStackNetAnalyzers/OpenStackNetAnalyzers/DocumentationSyntaxExtensions.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
namespace OpenStackNetAnalyzers
22
{
3+
using System;
4+
using System.Collections.Generic;
35
using System.Linq;
46
using Microsoft.CodeAnalysis;
57
using Microsoft.CodeAnalysis.CSharp.Syntax;
@@ -17,5 +19,34 @@ public static DocumentationCommentTriviaSyntax GetDocumentationCommentTriviaSynt
1719
.OfType<DocumentationCommentTriviaSyntax>()
1820
.FirstOrDefault();
1921
}
22+
23+
public static XmlNodeSyntax GetFirstXmlElement(this SyntaxList<XmlNodeSyntax> content, string elementName)
24+
{
25+
return content.GetXmlElements(elementName).FirstOrDefault();
26+
}
27+
28+
public static IEnumerable<XmlNodeSyntax> GetXmlElements(this SyntaxList<XmlNodeSyntax> content, string elementName)
29+
{
30+
foreach (XmlNodeSyntax syntax in content)
31+
{
32+
XmlEmptyElementSyntax emptyElement = syntax as XmlEmptyElementSyntax;
33+
if (emptyElement != null)
34+
{
35+
if (string.Equals(elementName, emptyElement.Name.ToString(), StringComparison.Ordinal))
36+
yield return emptyElement;
37+
38+
continue;
39+
}
40+
41+
XmlElementSyntax elementSyntax = syntax as XmlElementSyntax;
42+
if (elementSyntax != null)
43+
{
44+
if (string.Equals(elementName, elementSyntax.StartTag?.Name?.ToString(), StringComparison.Ordinal))
45+
yield return elementSyntax;
46+
47+
continue;
48+
}
49+
}
50+
}
2051
}
2152
}

0 commit comments

Comments
 (0)