public ComponentMeasureResponse Component(SonarComponentArgs SonarComponentArgs, NameValueCollection configuration) { if (String.IsNullOrEmpty(SonarComponentArgs.ComponentKey)) { throw new ArgumentException("ComponentKey must be set."); } string url = string.Format("{0}api/measures/component{1}", SonarApiClient.BaseAddress, (SonarComponentArgs == null) ? String.Empty : SonarComponentArgs.ToString()); return(SonarApiClient.QueryObject <ComponentMeasureResponse>(url, configuration)); }
// Fill the attributes of metrics of each build of the list builds public static void FillBuildsMetrics(SonarApiClient SonarClient, IConfigurationRoot configuration) { SonarComponentArgs SonarComponentArgs = new SonarComponentArgs(); SonarComponentArgs.MetricKeys = new List <MetricKeys>() { MetricKeys.bugs, MetricKeys.comment_lines_density, MetricKeys.code_smells, MetricKeys.complexity, MetricKeys.coverage, MetricKeys.duplicated_lines_density, MetricKeys.ncloc, MetricKeys.reliability_rating, MetricKeys.security_rating, MetricKeys.sqale_rating, MetricKeys.vulnerabilities }; foreach (Build b in builds) { SonarComponentArgs.ComponentKey = b.buildKey; ComponentMeasureResponse ComponentMeasureResponse = SonarClient.Measures.Component(SonarComponentArgs, configuration); List <ComponentMeasure> measures = ComponentMeasureResponse.SonarComponentMeasures.Measures; int count = measures.Count; for (int i = 0; i < count; i++) { string metric = measures[i].Metric; switch (metric) { case "ncloc": b.size = measures[i].Value; break; case "coverage": b.coverage = measures[i].Value.Replace(".", ",") + "%"; break; case "duplicated_lines_density": b.duplication = measures[i].Value.Replace(".", ",") + "%"; break; case "complexity": b.complexity = measures[i].Value; break; case "comment_lines_density": b.commentLinesDensity = measures[i].Value.Replace(".", ",") + "%"; break; case "bugs": b.numberBug = measures[i].Value; break; case "code_smells": b.numberCodeSmells = measures[i].Value; break; case "vulnerabilities": b.numberVulnerabilities = measures[i].Value; break; case "security_rating": b.securityRating = measures[i].Value; break; case "reliability_rating": b.reliabilityRating = measures[i].Value; break; case "sqale_rating": b.sqaleRating = measures[i].Value; break; } } } foreach (Build b in builds) { if (b.coverage == null) { b.coverage = "0" + "%"; } } }