// ReSharper disable ClassNeverInstantiated.Global // ReSharper disable InvertIf namespace TeamCity.CSharpInteractive; using System.Collections.ObjectModel; using System.Diagnostics; internal class Statistics : IStatistics { private readonly Stopwatch _stopwatch = new(); private readonly List _errors = new(); private readonly List _warnings = new(); public IReadOnlyCollection Errors { get { lock (_errors) { return new ReadOnlyCollection(_errors); } } } public IReadOnlyCollection Warnings { get { lock (_warnings) { return new ReadOnlyCollection(_warnings); } } } public TimeSpan TimeElapsed => _stopwatch.Elapsed; public IDisposable Start() { _stopwatch.Start(); return Disposable.Create(() => _stopwatch.Stop()); } public void RegisterError(string error) { error = error.Trim(); if (!string.IsNullOrWhiteSpace(error)) { lock (_errors) { _errors.Add(error); } } } public void RegisterWarning(string warning) { warning = warning.Trim(); if (!string.IsNullOrWhiteSpace(warning)) { lock (_warnings) { _warnings.Add(warning); } } } }