in src/Analyzer.Reports/ConsoleReportWriter.cs [22:76]
public void WriteResults(IEnumerable<Types.IEvaluation> evaluations, IFileInfo templateFile, IFileInfo parametersFile = null)
{
var resultsByFile = ReportsHelper.GetResultsByFile(evaluations, filesAlreadyOutput, out int passedEvaluations);
// output files in sorted order, but always output root first and regardless if no results
var filesWithResults = resultsByFile.Keys.ToList();
var removed = filesWithResults.Remove(templateFile.FullName);
filesWithResults.Sort();
if (removed) filesWithResults.Insert(0, templateFile.FullName);
foreach (var fileWithResults in filesWithResults)
{
var fileMetadata = $"{Environment.NewLine}{Environment.NewLine}Template: {fileWithResults}";
if (fileWithResults == templateFile.FullName)
{
if (parametersFile != null)
{
fileMetadata += $"{IndentedNewLine}Parameters File: {parametersFile.FullName}";
}
}
else
{
fileMetadata += $"{IndentedNewLine}Root Template: {templateFile.FullName}";
}
Console.WriteLine(fileMetadata);
foreach ((var evaluation, var failedResults) in resultsByFile[fileWithResults])
{
string resultString = string.Concat(failedResults.Select(result => $"{TwiceIndentedNewLine}Line: {result.SourceLocation.LineNumber}"));
var output = $"\t{(evaluation.RuleId != "" ? $"{evaluation.RuleId}: " : "")}{evaluation.RuleShortDescription}" +
$"{TwiceIndentedNewLine}Severity: {evaluation.Severity}" +
(!string.IsNullOrWhiteSpace(evaluation.Recommendation) ? $"{TwiceIndentedNewLine}Recommendation: {evaluation.Recommendation}" : "") +
$"{TwiceIndentedNewLine}More information: {evaluation.HelpUri}" +
$"{TwiceIndentedNewLine}Result: {(evaluation.Passed ? "Passed" : "Failed")} {resultString}";
Console.WriteLine(output);
}
}
// ensure filename output if there were no failed results
if (filesWithResults.Count() == 0)
{
var fileMetadata = $"{Environment.NewLine}{Environment.NewLine}Template: {templateFile.FullName}";
if (parametersFile != null)
{
fileMetadata += $"{Environment.NewLine}Parameters File: {parametersFile.FullName}";
}
Console.WriteLine(fileMetadata);
}
filesAlreadyOutput.AddRange(filesWithResults);
Console.WriteLine($"\tRules passed: {passedEvaluations}");
}