in Source/Reports/PerEndpointJsonReport.cs [97:173]
public JObject ReportRule(RuleResult rule)
{
JObject jsonRule = new JObject();
if (rule == null)
return null;
if (!s_supportedRules.Contains(rule.RuleName))
{
return null;
}
JObject jsonResult = new JObject();
jsonRule["Name"] = rule.RuleName;
jsonRule["Description"] = rule.RuleDescription;
foreach (var data in rule.Results)
{
jsonResult[data.Key] = data.Value.ToString();
}
jsonRule["ResultData"] = jsonResult;
foreach (ViolationLevel level in System.Enum.GetValues(typeof(ViolationLevel)))
{
jsonRule[System.Enum.GetName(typeof(ViolationLevel), level)] = rule.Violations.Count(v => v.m_level == level);
}
if (jsonRule[System.Enum.GetName(typeof(ViolationLevel), ViolationLevel.Error)].ToObject<Int32>() > 0)
{
jsonRule["Result"] = System.Enum.GetName(typeof(ViolationLevel), ViolationLevel.Error);
}
else if (jsonRule[System.Enum.GetName(typeof(ViolationLevel), ViolationLevel.Warning)].ToObject<Int32>() > 0)
{
jsonRule["Result"] = System.Enum.GetName(typeof(ViolationLevel), ViolationLevel.Warning);
}
else
{
jsonRule["Result"] = "Pass";
}
JArray jsonViolations = new JArray();
foreach (var violation in rule.Violations)
{
JObject jsonViolation = new JObject();
jsonViolation["Level"] = System.Enum.GetName(typeof(ViolationLevel), violation.m_level);
jsonViolation["Summary"] = violation.m_summary;
JArray calls = new JArray();
foreach (var call in violation.m_violatingCalls)
{
JObject jsonCall = new JObject();
jsonCall["Call Id"] = call.m_id;
jsonCall["UriMethod"] = call.m_uri;
if (call.m_xsapiMethods != null)
{
jsonCall["CppMethod"] = call.m_xsapiMethods.Item1;
jsonCall["WinRTMethod"] = call.m_xsapiMethods.Item2;
}
calls.Add(jsonCall);
}
jsonViolation["Calls"] = calls;
jsonViolations.Add(jsonViolation);
}
jsonRule["Violations"] = jsonViolations;
return jsonRule;
}