public MetricResult Calculate(IEnumerable <AssemblyDefinition> assemblies, IMetric metric)
        {
            List <AssemblyResult> assemblyResults = new List <AssemblyResult>();

            foreach (AssemblyDefinition assembly in assemblies)
            {
                List <ModuleResult> moduleResults = new List <ModuleResult>();
                foreach (ModuleDefinition module in assembly.Modules)
                {
                    List <TypeResult> typeResults = new List <TypeResult>();
                    foreach (TypeDefinition type in module.Types)
                    {
                        List <MethodResult> methodResults = new List <MethodResult>();
                        foreach (MethodDefinition method in type.Methods)
                        {
                            MethodResult methodResult = metric.ProcessMethod(method);
                            methodResults.Add(methodResult);
                        }
                        TypeResult typeResult = metric.ProcessType(type, methodResults.ToArray());
                        typeResults.Add(typeResult);
                    }
                    ModuleResult moduleResult = metric.ProcessModule(module, typeResults.ToArray());
                    moduleResults.Add(moduleResult);
                }
                AssemblyResult assemblyResult = metric.ProcessAssembly(assembly, moduleResults.ToArray());
                assemblyResults.Add(assemblyResult);
            }
            MetricResult result = metric.Process(assemblyResults.ToArray());

            return(result);
        }
        private string createFailedRows(MetricResult result)
        {
            string htmlOutput = string.Empty;

            foreach (var classResult in result.ClassResults)
            {
                bool addedClassHeader = false;
                string htmlClass = "<tr>";
                htmlClass += "<td>" + HttpUtility.HtmlEncode(classResult.Name) + "</td>";
                htmlClass += _emptyColumn + _emptyColumn + "</tr>";

                foreach (var methodResult in classResult.MethodResults)
                {
                    if (methodResult.Pass)
                        continue;

                    if (!addedClassHeader)
                    {
                        addedClassHeader = true;
                        htmlOutput += htmlClass;
                    }

                    htmlOutput += addResult(methodResult);
                }
            }
            return htmlOutput;
        }
 public MetricResult Process(AssemblyResult[] assemblyResults)
 {
     MetricResult result = new MetricResult("Cyclomatic complexity");
     result.AssemblyResults = assemblyResults;
     result.Result = assemblyResults.Sum(r => r.Result);
     return result;
 }
 public MetricResult Process(AssemblyResult[] assemblyResults)
 {
     MetricResult result = new MetricResult("Lines of code");
     result.AssemblyResults = assemblyResults;
     result.Result = assemblyResults.Sum(r => r.Result);
     return result;
 }
Example #5
0
        public MetricResult Process(AssemblyResult[] assemblyResults)
        {
            MetricResult result = new MetricResult("Lines of code");

            result.AssemblyResults = assemblyResults;
            result.Result          = assemblyResults.Sum(r => r.Result);
            return(result);
        }
Example #6
0
        public MetricResult Process(AssemblyResult[] assemblyResults)
        {
            MetricResult result = new MetricResult("Cyclomatic complexity");

            result.AssemblyResults = assemblyResults;
            result.Result          = assemblyResults.Sum(r => r.Result);
            return(result);
        }
 public MetricResultBuilder()
 {
     _methodResult1 = new MethodResult("Test Method1",12,false);
     _methodResult2 = new MethodResult("Test Method2",5,true);
     _classResult1 = new ClassResult("Test Class 1", new List<MethodResult> {_methodResult1,_methodResult2});
     _classResult2 = new ClassResult("Test Class 1", new List<MethodResult> {_methodResult1,_methodResult2});
     _metricResult = new MetricResult("Test Metric", new List<ClassResult> {_classResult1,_classResult2});
 }
        private List<FlatResult> flatten(MetricResult result)
        {
            var flatResults = new List<FlatResult>();

            foreach (var classResult in result.ClassResults)
            {
                flatResults.AddRange(classResult.MethodResults.Select(methodResult => new FlatResult(string.Format("{0}.{1}", classResult.Name, methodResult.Name), methodResult.Result, methodResult.Pass)));
            }

            return flatResults;
        }
Example #9
0
        internal static XElement ConvertResult(MetricResult metricResult)
        {
            var metric = new XElement ("metric", new XAttribute("name", metricResult.Name));
            foreach (var classResult in metricResult.ClassResults)
            {
                var convertedResults = ConvertResult (classResult);
                metric.Add (convertedResults);
            }

            return metric;
        }
        protected override void inputResults(MetricResult result)
        {
            var flatResults = flatten(result);

            var topTen = (from f in flatResults
                          orderby f.Result descending
                          select f).Take(10);

            foreach (var tt in topTen)
            {
                Contents += "<tr>";
                Contents += "<td>" + _emptyColumn + "</td>";

                Contents += "<td>" + HttpUtility.HtmlEncode(tt.Name) + "</td>";

                if (tt.Pass)
                    Contents += @"<td id =""pass"">" + tt.Result + "</td>";
                else
                    Contents += @"<td id =""fail"">" + tt.Result + "</td>";

                Contents += "</tr>";
            }
        }
Example #11
0
 public void Generate(MetricResult result)
 {
     Generate(new[] {result});
 }
Example #12
0
 private void createTableHeader(MetricResult result)
 {
     Contents += "<h2>" + result.Name + "</h2>";
     Contents += @"<table border=""1"">
                     <tr>
                     <th>Class</th>
                     <th>Method</th>
                     <th>Result</th>
                     </tr>";
 }
Example #13
0
        protected virtual void inputResults(MetricResult result)
        {
            foreach(var classResult in result.ClassResults)
            {
                Contents += "<tr>";
                Contents += "<td>" + HttpUtility.HtmlEncode(classResult.Name) + "</td>";
                Contents += _emptyColumn + _emptyColumn + "</tr>";

                foreach(var methodResult in classResult.MethodResults)
                {
                    Contents += addResult(methodResult);
                }
            }
        }
Example #14
0
 protected void convertResultToHtml(MetricResult result)
 {
     createTableHeader(result);
     inputResults(result);
     createEndOfTable();
 }
 protected override void inputResults(MetricResult result)
 {
     Contents += createFailedRows(result);
 }
Example #16
0
 public void ConvertEmptyMetricResult()
 {
     var metricResult = new MetricResult ("Cyclomatic Complexity", new ClassResult[] { });
     var actual = XmlReport.ConvertResult (metricResult);
     Assert.AreEqual (@"<metric name=""Cyclomatic Complexity"" />", actual.ToString ());
 }