Пример #1
0
        public void Evaluate()
        {
            var evaluator = new RelevantAttributesEvaluator();

            var testData = new List <JavaScriptEvaluationResult>
            {
                new JavaScriptEvaluationResult
                {
                    Block = new List <DetailedJavaScriptEvaluationResult>
                    {
                        new DetailedJavaScriptEvaluationResult {
                            AttributeName = "onclick"
                        },
                        new DetailedJavaScriptEvaluationResult {
                            AttributeName = "onblur"
                        },
                    },
                    Razor = new List <DetailedJavaScriptEvaluationResult>
                    {
                        new DetailedJavaScriptEvaluationResult {
                            AttributeName = "onclick"
                        },
                        new DetailedJavaScriptEvaluationResult {
                            AttributeName = "ondblclick"
                        },
                    },
                }
            };

            var result = evaluator.Evaluate(testData);

            Assert.AreEqual(3, result.Count);
            Assert.AreEqual("onclick", result[0]);
            Assert.AreEqual("onblur", result[1]);
            Assert.AreEqual("ondblclick", result[2]);
        }
Пример #2
0
        public string Store(List <JavaScriptEvaluationResult> results, string groupName)
        {
            var attributeTotals = new List <AttributeTotal>();

            var sb = new StringBuilder();

            sb.Append("Filename,Inline Instances,Total Inline LOC, Contains '@'");

            var comparer = StringComparer.OrdinalIgnoreCase;

            var attributesInUse = RelevantAttributesEvaluator.Evaluate(results);

            foreach (var attribute in attributesInUse)
            {
                sb.AppendFormat(",{0}", attribute);
            }

            sb.AppendLine(",Total Inline Instances,Total Razor Instances");

            foreach (var result in results.OrderBy(x => x.FileName))
            {
                sb.AppendFormat("{0},{1},{2},{3}",
                                result.FileName,
                                result.PageInstances.Length,
                                result.PageInstances.Sum(x => x.Lines.Count), result.PageInstances.Any(x => x.AtSymbols > 0));

                foreach (var attribute in attributesInUse)
                {
                    var blockCount = result.Block.Where(x => comparer.Equals(attribute, x.AttributeName)).Sum(x => x.InlineJavascriptTags.Count);
                    var razorCount = result.Razor.Count(x => comparer.Equals(attribute, x.AttributeName));
                    sb.AppendFormat(",{0}", blockCount + razorCount);

                    attributeTotals.Add(new AttributeTotal
                    {
                        Attribute  = attribute,
                        BlockCount = blockCount,
                        RazorCount = razorCount
                    });
                }

                sb.AppendFormat(",{0},{1}", result.Block.Sum(x => x.InlineJavascriptTags.Count), result.Razor.Count);
                sb.AppendLine("");
            }

            sb.AppendFormat("Total: {0},{1},{2},{3}",
                            results.Count,
                            results.Sum(x => x.PageInstances.Length),
                            results.Sum(x => x.PageInstances.Sum(y => y.Lines.Count)),
                            results.Sum(x => x.PageInstances.Count(y => y.AtSymbols > 0)));


            foreach (var attribute in attributesInUse)
            {
                sb.AppendFormat(",{0}", attributeTotals.Where(x => x.Attribute == attribute).Sum(x => x.BlockCount + x.RazorCount));
            }

            sb.AppendFormat(",{0},{1}", attributeTotals.Sum(x => x.BlockCount), attributeTotals.Sum(x => x.RazorCount));

            var filename = StorageService.Store(sb, JavaScriptStatsFileNameEvaluator.Evaluate(groupName));

            Ux.WriteLine(string.Format("Saved to {0}", filename));
            Ux.WriteLine("");

            return(filename);
        }