コード例 #1
0
 private void ValidateMetricsList(CodeMetricsRunner runner,  TaskMetricList ml)
 {
     foreach (TaskMetric p in ml)
     {
         if (String.IsNullOrEmpty(p.ProviderName))
             throw new MSBuildCodeMetricsTaskException("ProviderName must be informed in Metrics property");
         if (!_providers.ContainsKey(p.ProviderName))
             throw new MSBuildCodeMetricsTaskException("Invalid provider name in Metrics property: ProviderName: " + p.ProviderName);
         if (String.IsNullOrEmpty(p.MetricName))
             throw new MSBuildCodeMetricsTaskException("Metric name in property Metrics can't be null (ProviderName: " + p.ProviderName);
         if (!runner.IsMetricRegistered(p.ProviderName, p.MetricName))
             throw new MSBuildCodeMetricsTaskException("Provider " + p.ProviderName + " doesn't know how to handle metric " + p.MetricName);
     }
 }
コード例 #2
0
        private TaskMetricList ParseMetrics()
        {
            if (Metrics == null)
                throw new ArgumentNullException("Metrics");

            if (Metrics.Length <= 0)
                throw new MSBuildCodeMetricsTaskException("At least one Metrics must be informed in Metrics property");

            TaskMetricList ml = new TaskMetricList();
            foreach (ITaskItem i in Metrics)
            {
                string metricName = i.ItemSpec;
                string providerName = i.GetMetadata("ProviderName");
                List<int> ranges = new List<int>();
                ParseRanges(i, ranges);
                if (ShowSummaryReport && (ranges == null || ranges.Count <= 0))
                    throw new MSBuildCodeMetricsTaskException("Ranges can't be null if you need a summary report. ProviderName: " + providerName + ", MetricName: " + metricName);
                string files = i.GetMetadata("Files");
                if (String.IsNullOrEmpty(files))
                    throw new MSBuildCodeMetricsTaskException("Files must be informed in Metrics property. ProviderName: " + providerName + ", Metric: " + metricName);
                List<string> fileList = files.Split(';').ToList();
                var metric = new TaskMetric(providerName, metricName, ranges, fileList);
                metric.HigherRangeFailMessage = i.GetMetadata("HigherRangeFailMessage");
                metric.LowerRangeFailMessage = i.GetMetadata("LowerRangeFailMessage");
                ml.Add(metric);
            }
            return ml;
        }
コード例 #3
0
 private void RunBuildFailChecks(MSBuildCodeMetricsReport report, TaskMetricList ml)
 {
     ml.ForEach(m =>
     {
         if (!String.IsNullOrEmpty(m.HigherRangeFailMessage))
             if (report.Summary.Metrics.First(metric => metric.MetricName == m.MetricName).Ranges[0].Count > 0)
                 throw new MSBuildCodeMetricsTaskException(m.HigherRangeFailMessage);
         if (!String.IsNullOrEmpty(m.LowerRangeFailMessage))
         {
             var ranges = report.Summary.Metrics.First(metric => metric.MetricName == m.MetricName).Ranges;
             if (ranges[ranges.Count - 1].Count > 0)
                 throw new MSBuildCodeMetricsTaskException(m.LowerRangeFailMessage);
         }
     });
 }
コード例 #4
0
 private MSBuildCodeMetricsReport GenerateReport(CodeMetricsRunner runner, TaskMetricList ml)
 {
     MSBuildCodeMetricsReport report = runner.GenerateReport(ml.ToMetricList(), ShowSummaryReport, ShowDetailsReport);
     if (FileOutput)
         GenerateFileOutput(report);
     if (ShowConsoleOutput)
         GenerateConsoleOutput(report);
     return report;
 }