< Summary

Information
Class: DirectSight.ReportConfigurationValidator
Assembly DirectSight
File(s): /home/runner/work/DirectSight/DirectSight/DirectSight/ReportConfigurationValidator.cs
Line coverage
73%
Covered lines: 49
Uncovered lines: 18
Coverable lines: 67
Total lines: 97
Line coverage: 73.1%
Branch coverage
72%
Covered branches: 16
Total branches: 22
Branch coverage: 72.7%
Method coverage

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
Validate(...)72.72%222273.13%

File(s)

/home/runner/work/DirectSight/DirectSight/DirectSight/ReportConfigurationValidator.cs

#LineLine coverage
 1using System;
 2using System.IO;
 3using DirectSight.Common;
 4using DirectSight.Logging;
 5
 6namespace DirectSight;
 7
 8/// <summary>
 9/// Validates an <see cref="ReportConfiguration"/> to verify all user input is applicable and correct.
 10/// </summary>
 11internal class ReportConfigurationValidator
 12{
 13    /// <summary>
 14    /// Validates all parameters.
 15    /// </summary>
 16    /// <param name="reportConfiguration">The report configuration.</param>
 17    /// <returns>
 18    ///   <c>true</c> if all parameters are in a valid state; otherwise <c>false</c>.
 19    /// </returns>
 20    internal static bool Validate(ReportConfiguration reportConfiguration)
 721    {
 722        if (reportConfiguration.InvalidReportFilePatterns.Count > 0)
 123        {
 524            foreach (var failedReportFilePattern in reportConfiguration.InvalidReportFilePatterns)
 125            {
 126                if (failedReportFilePattern.Contains('*'))
 027                {
 028                    ConsoleLogger.Warn("The report file pattern '{0}' found no matching files.", failedReportFilePattern
 029                }
 30                else
 131                {
 132                    ConsoleLogger.Warn(
 133                        "The report file '{0}' is invalid. File does not exist (Full path: '{1}').",
 134                        failedReportFilePattern,
 135                        new FileInfo(failedReportFilePattern).FullName);
 136                }
 137            }
 138        }
 39
 740        bool result = true;
 41
 2142        foreach (var file in reportConfiguration.Plugins)
 043        {
 044            if (!File.Exists(file))
 045            {
 046                ConsoleLogger.Error("The plugin '{0}' does not exist.", file);
 047                result &= false;
 048            }
 049        }
 50
 751        if (reportConfiguration.ReportFiles.Count == 0)
 252        {
 253            ConsoleLogger.Error("No report files specified.");
 254            result &= false;
 255        }
 56        else
 557        {
 2558            foreach (var file in reportConfiguration.ReportFiles)
 559            {
 560                if (!File.Exists(file))
 061                {
 062                    ConsoleLogger.Error("The report file '{0}' does not exist.", file);
 063                    result &= false;
 064                }
 565            }
 566        }
 67
 768        if (string.IsNullOrEmpty(reportConfiguration.TargetDirectory))
 169        {
 170            ConsoleLogger.Error("No target directory specified.");
 171            result &= false;
 172        }
 673        else if (!Directory.Exists(reportConfiguration.TargetDirectory))
 374        {
 75            try
 376            {
 377                Directory.CreateDirectory(reportConfiguration.TargetDirectory);
 278            }
 179            catch (Exception ex)
 180            {
 181                ConsoleLogger.Error(
 182                    "The target directory '{0}' could not be created: {1}",
 183                    reportConfiguration.TargetDirectory,
 184                    ex.GetExceptionMessageForDisplay());
 185                result &= false;
 186            }
 387        }
 88
 789        if (!reportConfiguration.DebugModeValid)
 090        {
 091            ConsoleLogger.Error("Unknown debug mode value (should be true/false)");
 092            result &= false;
 093        }
 94
 795        return result;
 796    }
 97}