< Summary

Information
Class: Orchestrator.Commands.Observability.ExportExperimentAnalysis.ExportExperimentAnalysisSettings
Assembly: Orchestrator
File(s): /home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Commands/Observability/ExportExperimentAnalysis/ExportExperimentAnalysisSettings.cs
Line coverage
84%
Covered lines: 11
Uncovered lines: 2
Coverable lines: 13
Total lines: 45
Line coverage: 84.6%
Branch coverage
66%
Covered branches: 4
Total branches: 6
Branch coverage: 66.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
Validate()50%5466.67%
GetParsedRunNames()100%22100%

File(s)

/home/runner/work/KicktippAi/KicktippAi/src/Orchestrator/Commands/Observability/ExportExperimentAnalysis/ExportExperimentAnalysisSettings.cs

#LineLine coverage
 1using System.ComponentModel;
 2using Spectre.Console;
 3using Spectre.Console.Cli;
 4
 5namespace Orchestrator.Commands.Observability.ExportExperimentAnalysis;
 6
 7public sealed class ExportExperimentAnalysisSettings : CommandSettings
 8{
 9    [CommandOption("--dataset-name")]
 10    [Description("Hosted Langfuse dataset name that contains the compared runs")]
 111    public string DatasetName { get; set; } = string.Empty;
 12
 13    [CommandOption("--run-names")]
 14    [Description("Comma-separated list of Langfuse dataset run names to export as one comparable analysis bundle")]
 115    public string RunNames { get; set; } = string.Empty;
 16
 17    [CommandOption("--output")]
 18    [Description("Optional output path for the normalized analysis bundle JSON file")]
 19    public string? OutputPath { get; set; }
 20
 21    public override ValidationResult Validate()
 22    {
 123        if (string.IsNullOrWhiteSpace(DatasetName))
 24        {
 025            return ValidationResult.Error("--dataset-name is required");
 26        }
 27
 128        var runNames = GetParsedRunNames();
 129        if (runNames.Count < 1)
 30        {
 031            return ValidationResult.Error("--run-names must contain at least one unique run name");
 32        }
 33
 134        return ValidationResult.Success();
 35    }
 36
 37    internal IReadOnlyList<string> GetParsedRunNames()
 38    {
 139        return RunNames
 140            .Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)
 141            .Where(runName => !string.IsNullOrWhiteSpace(runName))
 142            .Distinct(StringComparer.Ordinal)
 143            .ToList();
 44    }
 45}