Skip to content

Commit 1a5d2e3

Browse files
committed
Add all analyzer links to the doc
1 parent 9a3a8dc commit 1a5d2e3

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/DocumentationGenerator/Program.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,16 @@
7070

7171
// Update title in rule pages and add links to source code
7272
{
73+
var rules = new HashSet<string>(StringComparer.Ordinal);
7374
foreach (var diagnosticAnalyzer in diagnosticAnalyzers)
7475
{
7576
foreach (var diagnostic in diagnosticAnalyzer.SupportedDiagnostics)
7677
{
78+
if (!rules.Add(rulesTable))
79+
{
80+
continue;
81+
}
82+
7783
var title = $"# {diagnostic.Id} - {EscapeMarkdown(diagnostic.Title.ToString(CultureInfo.InvariantCulture))}";
7884
var detailPath = outputFolder / "docs" / "Rules" / (diagnostic.Id + ".md");
7985
if (File.Exists(detailPath))
@@ -126,14 +132,21 @@ void AddLink(string name)
126132
sourceLinks.Add($"[{text}]({url})");
127133
}
128134

129-
AddLink(diagnosticAnalyzer.GetType().Name);
135+
foreach (var analyzer in diagnosticAnalyzers)
136+
{
137+
if (analyzer.SupportedDiagnostics.Any(d => d.Id == diagnostic.Id))
138+
{
139+
AddLink(analyzer.GetType().Name);
140+
}
141+
}
130142

131143
var fixers = codeFixProviders.Where(fixer => fixer.FixableDiagnosticIds.Contains(diagnostic.Id, StringComparer.Ordinal)).ToArray();
132144
foreach (var fixer in fixers)
133145
{
134146
AddLink(fixer.GetType().Name);
135147
}
136148

149+
sourceLinks.Sort(StringComparer.Ordinal);
137150
newContent = Regex.Replace(newContent, "(?<=<!-- sources -->\\r?\\n).*(?=<!-- sources -->)", (sourceLinks.Count == 1 ? "Source: " : "Sources: ") + string.Join(", ", sourceLinks) + "\n", RegexOptions.Singleline);
138151

139152
WriteFileIfChanged(detailPath, newContent);

0 commit comments

Comments
 (0)