Skip to content

Commit ec77759

Browse files
committed
Simplify usage of XmlSyntaxFactory by adding helper methods for known documentation elements
1 parent 26875b7 commit ec77759

2 files changed

Lines changed: 79 additions & 12 deletions

File tree

OpenStackNetAnalyzers/OpenStackNetAnalyzers/ImplementBuilderPatternCodeFix.cs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -111,20 +111,15 @@ private async Task<Solution> CreateChangedSolution(CodeFixContext context, Class
111111
// Need to add a new class for the extension methods.
112112

113113
DocumentationCommentTriviaSyntax documentationComment = XmlSyntaxFactory.DocumentationComment(
114-
XmlSyntaxFactory.MultiLineElement(
115-
"summary",
116-
XmlSyntaxFactory.List(
117-
XmlSyntaxFactory.Text("This class provides extension methods for the "),
118-
XmlSyntaxFactory.EmptyElement("see").AddAttributes(
119-
XmlSyntaxFactory.CrefAttribute(SyntaxFactory.TypeCref(SyntaxFactory.ParseTypeName(declaringType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat))))),
120-
XmlSyntaxFactory.Text(" class."))),
114+
XmlSyntaxFactory.SummaryElement(
115+
XmlSyntaxFactory.Text("This class provides extension methods for the "),
116+
XmlSyntaxFactory.SeeElement(
117+
SyntaxFactory.TypeCref(SyntaxFactory.ParseTypeName(declaringType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)))),
118+
XmlSyntaxFactory.Text(" class.")),
121119
XmlSyntaxFactory.NewLine(),
122-
XmlSyntaxFactory.EmptyElement("threadsafety")
123-
.AddAttributes(
124-
XmlSyntaxFactory.TextAttribute("static", "true"),
125-
XmlSyntaxFactory.TextAttribute("instance", "false")),
120+
XmlSyntaxFactory.ThreadSafetyElement(),
126121
XmlSyntaxFactory.NewLine(),
127-
XmlSyntaxFactory.EmptyElement("preliminary"));
122+
XmlSyntaxFactory.PreliminaryElement());
128123

129124
SyntaxNode extensionsClassRoot = SyntaxFactory.CompilationUnit().AddMembers(
130125
SyntaxFactory.NamespaceDeclaration(SyntaxFactory.ParseName(declaringType.ContainingNamespace.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)))

OpenStackNetAnalyzers/OpenStackNetAnalyzers/XmlSyntaxFactory.cs

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,5 +134,77 @@ public static SyntaxToken TextLiteral(string value)
134134
value,
135135
SyntaxFactory.TriviaList());
136136
}
137+
138+
public static XmlElementSyntax SummaryElement(params XmlNodeSyntax[] content)
139+
{
140+
return SummaryElement(List(content));
141+
}
142+
143+
public static XmlElementSyntax SummaryElement(SyntaxList<XmlNodeSyntax> content)
144+
{
145+
return MultiLineElement("summary", content);
146+
}
147+
148+
public static XmlElementSyntax RemarksElement(params XmlNodeSyntax[] content)
149+
{
150+
return RemarksElement(List(content));
151+
}
152+
153+
public static XmlElementSyntax RemarksElement(SyntaxList<XmlNodeSyntax> content)
154+
{
155+
return MultiLineElement("remarks", content);
156+
}
157+
158+
public static XmlElementSyntax ReturnsElement(params XmlNodeSyntax[] content)
159+
{
160+
return ReturnsElement(List(content));
161+
}
162+
163+
public static XmlElementSyntax ReturnsElement(SyntaxList<XmlNodeSyntax> content)
164+
{
165+
return MultiLineElement("returns", content);
166+
}
167+
168+
public static XmlElementSyntax ValueElement(params XmlNodeSyntax[] content)
169+
{
170+
return ValueElement(List(content));
171+
}
172+
173+
public static XmlElementSyntax ValueElement(SyntaxList<XmlNodeSyntax> content)
174+
{
175+
return MultiLineElement("value", content);
176+
}
177+
178+
public static XmlElementSyntax ParaElement(params XmlNodeSyntax[] content)
179+
{
180+
return ParaElement(List(content));
181+
}
182+
183+
public static XmlElementSyntax ParaElement(SyntaxList<XmlNodeSyntax> content)
184+
{
185+
return Element("para", content);
186+
}
187+
188+
public static XmlEmptyElementSyntax SeeElement(CrefSyntax cref)
189+
{
190+
return EmptyElement("see").AddAttributes(CrefAttribute(cref));
191+
}
192+
193+
public static XmlEmptyElementSyntax ThreadSafetyElement()
194+
{
195+
return ThreadSafetyElement(true, false);
196+
}
197+
198+
public static XmlEmptyElementSyntax ThreadSafetyElement(bool @static, bool instance)
199+
{
200+
return EmptyElement("threadsafety").AddAttributes(
201+
TextAttribute("static", @static.ToString().ToLowerInvariant()),
202+
TextAttribute("instance", instance.ToString().ToLowerInvariant()));
203+
}
204+
205+
public static XmlEmptyElementSyntax PreliminaryElement()
206+
{
207+
return EmptyElement("preliminary");
208+
}
137209
}
138210
}

0 commit comments

Comments
 (0)