public void Build() { _logger.LogInformation($"Generating report at {_path}"); var state = new RenderingState(); state.Append($"<!DOCTYPE html>"); state.Append($"<html lang=\"en\">"); state.Append($"<head>"); state.Append($"<meta charset=\"utf-8\">"); state.Append($"<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">"); state.Append($"<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"); state.Append($"<title>Generator report</title>"); state.Append($"<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\" integrity=\"sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u\" crossorigin=\"anonymous\">"); state.Append($"</head>"); state.Append($"<body>"); state.Append($"<div class=\"container\">"); state.Append($"<div class=\"jumbotron\">"); state.AppendTitle($"Generator report"); state.Append($"<p class=\"lead\">Generated at {DateTime.Now.ToString("G")}</p>"); state.Append($"</div>"); AppendLowQualityTypes(state); AppendLowQualityArticles(state); AppendReferenceMapReport(state); state.Append($"</div>"); state.Append($"</body>"); state.Append($"</html>"); File.WriteAllText(_path, state.Builder.ToString()); }