mirror of
https://github.com/actions/runner.git
synced 2025-12-20 06:29:53 +00:00
Fix IDE0090 (#2211)
This commit is contained in:
@@ -31,7 +31,7 @@ namespace GitHub.Runner.Common
|
||||
new EscapeMapping(token: "%", replacement: "%25"),
|
||||
};
|
||||
|
||||
private readonly Dictionary<string, string> _properties = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||
private readonly Dictionary<string, string> _properties = new(StringComparer.OrdinalIgnoreCase);
|
||||
public const string Prefix = "##[";
|
||||
public const string _commandKey = "::";
|
||||
|
||||
|
||||
@@ -74,12 +74,12 @@ namespace GitHub.Runner.Common
|
||||
{
|
||||
get
|
||||
{
|
||||
Uri accountUri = new Uri(this.ServerUrl);
|
||||
Uri accountUri = new(this.ServerUrl);
|
||||
string repoOrOrgName = string.Empty;
|
||||
|
||||
if (accountUri.Host.EndsWith(".githubusercontent.com", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
Uri gitHubUrl = new Uri(this.GitHubUrl);
|
||||
Uri gitHubUrl = new(this.GitHubUrl);
|
||||
|
||||
// Use the "NWO part" from the GitHub URL path
|
||||
repoOrOrgName = gitHubUrl.AbsolutePath.Trim('/');
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace GitHub.Runner.Common
|
||||
|
||||
public sealed class ExtensionManager : RunnerService, IExtensionManager
|
||||
{
|
||||
private readonly ConcurrentDictionary<Type, List<IExtension>> _cache = new ConcurrentDictionary<Type, List<IExtension>>();
|
||||
private readonly ConcurrentDictionary<Type, List<IExtension>> _cache = new();
|
||||
|
||||
public List<T> GetExtensions<T>() where T : class, IExtension
|
||||
{
|
||||
|
||||
@@ -51,12 +51,12 @@ namespace GitHub.Runner.Common
|
||||
private static int _defaultLogRetentionDays = 30;
|
||||
private static int[] _vssHttpMethodEventIds = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 24 };
|
||||
private static int[] _vssHttpCredentialEventIds = new int[] { 11, 13, 14, 15, 16, 17, 18, 20, 21, 22, 27, 29 };
|
||||
private readonly ConcurrentDictionary<Type, object> _serviceInstances = new ConcurrentDictionary<Type, object>();
|
||||
private readonly ConcurrentDictionary<Type, Type> _serviceTypes = new ConcurrentDictionary<Type, Type>();
|
||||
private readonly ConcurrentDictionary<Type, object> _serviceInstances = new();
|
||||
private readonly ConcurrentDictionary<Type, Type> _serviceTypes = new();
|
||||
private readonly ISecretMasker _secretMasker = new SecretMasker();
|
||||
private readonly List<ProductInfoHeaderValue> _userAgents = new List<ProductInfoHeaderValue>() { new ProductInfoHeaderValue($"GitHubActionsRunner-{BuildConstants.RunnerPackage.PackageName}", BuildConstants.RunnerPackage.Version) };
|
||||
private CancellationTokenSource _runnerShutdownTokenSource = new CancellationTokenSource();
|
||||
private object _perfLock = new object();
|
||||
private readonly List<ProductInfoHeaderValue> _userAgents = new() { new ProductInfoHeaderValue($"GitHubActionsRunner-{BuildConstants.RunnerPackage.PackageName}", BuildConstants.RunnerPackage.Version) };
|
||||
private CancellationTokenSource _runnerShutdownTokenSource = new();
|
||||
private object _perfLock = new();
|
||||
private Tracing _trace;
|
||||
private Tracing _actionsHttpTrace;
|
||||
private Tracing _netcoreHttpTrace;
|
||||
@@ -66,7 +66,7 @@ namespace GitHub.Runner.Common
|
||||
private IDisposable _diagListenerSubscription;
|
||||
private StartupType _startupType;
|
||||
private string _perfFile;
|
||||
private RunnerWebProxy _webProxy = new RunnerWebProxy();
|
||||
private RunnerWebProxy _webProxy = new();
|
||||
|
||||
public event EventHandler Unloading;
|
||||
public CancellationToken RunnerShutdownToken => _runnerShutdownTokenSource.Token;
|
||||
|
||||
@@ -164,7 +164,7 @@ namespace GitHub.Runner.Common
|
||||
{
|
||||
if (_enableLogRetention)
|
||||
{
|
||||
DirectoryInfo diags = new DirectoryInfo(_logFileDirectory);
|
||||
DirectoryInfo diags = new(_logFileDirectory);
|
||||
var logs = diags.GetFiles($"{_logFilePrefix}*.log");
|
||||
foreach (var log in logs)
|
||||
{
|
||||
|
||||
@@ -39,19 +39,19 @@ namespace GitHub.Runner.Common
|
||||
private Guid _jobTimelineRecordId;
|
||||
|
||||
// queue for web console line
|
||||
private readonly ConcurrentQueue<ConsoleLineInfo> _webConsoleLineQueue = new ConcurrentQueue<ConsoleLineInfo>();
|
||||
private readonly ConcurrentQueue<ConsoleLineInfo> _webConsoleLineQueue = new();
|
||||
|
||||
// queue for file upload (log file or attachment)
|
||||
private readonly ConcurrentQueue<UploadFileInfo> _fileUploadQueue = new ConcurrentQueue<UploadFileInfo>();
|
||||
private readonly ConcurrentQueue<UploadFileInfo> _fileUploadQueue = new();
|
||||
|
||||
// queue for timeline or timeline record update (one queue per timeline)
|
||||
private readonly ConcurrentDictionary<Guid, ConcurrentQueue<TimelineRecord>> _timelineUpdateQueue = new ConcurrentDictionary<Guid, ConcurrentQueue<TimelineRecord>>();
|
||||
private readonly ConcurrentDictionary<Guid, ConcurrentQueue<TimelineRecord>> _timelineUpdateQueue = new();
|
||||
|
||||
// indicate how many timelines we have, we will process _timelineUpdateQueue base on the order of timeline in this list
|
||||
private readonly List<Guid> _allTimelines = new List<Guid>();
|
||||
private readonly List<Guid> _allTimelines = new();
|
||||
|
||||
// bufferd timeline records that fail to update
|
||||
private readonly Dictionary<Guid, List<TimelineRecord>> _bufferedRetryRecords = new Dictionary<Guid, List<TimelineRecord>>();
|
||||
private readonly Dictionary<Guid, List<TimelineRecord>> _bufferedRetryRecords = new();
|
||||
|
||||
// Task for each queue's dequeue process
|
||||
private Task _webConsoleLineDequeueTask;
|
||||
@@ -61,8 +61,8 @@ namespace GitHub.Runner.Common
|
||||
// common
|
||||
private IJobServer _jobServer;
|
||||
private Task[] _allDequeueTasks;
|
||||
private readonly TaskCompletionSource<int> _jobCompletionSource = new TaskCompletionSource<int>();
|
||||
private readonly TaskCompletionSource<int> _jobRecordUpdated = new TaskCompletionSource<int>();
|
||||
private readonly TaskCompletionSource<int> _jobCompletionSource = new();
|
||||
private readonly TaskCompletionSource<int> _jobRecordUpdated = new();
|
||||
private bool _queueInProcess = false;
|
||||
|
||||
public TaskCompletionSource<int> JobRecordUpdated => _jobRecordUpdated;
|
||||
@@ -237,8 +237,8 @@ namespace GitHub.Runner.Common
|
||||
}
|
||||
|
||||
// Group consolelines by timeline record of each step
|
||||
Dictionary<Guid, List<TimelineRecordLogLine>> stepsConsoleLines = new Dictionary<Guid, List<TimelineRecordLogLine>>();
|
||||
List<Guid> stepRecordIds = new List<Guid>(); // We need to keep lines in order
|
||||
Dictionary<Guid, List<TimelineRecordLogLine>> stepsConsoleLines = new();
|
||||
List<Guid> stepRecordIds = new(); // We need to keep lines in order
|
||||
int linesCounter = 0;
|
||||
ConsoleLineInfo lineInfo;
|
||||
while (_webConsoleLineQueue.TryDequeue(out lineInfo))
|
||||
@@ -264,7 +264,7 @@ namespace GitHub.Runner.Common
|
||||
{
|
||||
// Split consolelines into batch, each batch will container at most 100 lines.
|
||||
int batchCounter = 0;
|
||||
List<List<TimelineRecordLogLine>> batchedLines = new List<List<TimelineRecordLogLine>>();
|
||||
List<List<TimelineRecordLogLine>> batchedLines = new();
|
||||
foreach (var line in stepsConsoleLines[stepRecordId])
|
||||
{
|
||||
var currentBatch = batchedLines.ElementAtOrDefault(batchCounter);
|
||||
@@ -338,7 +338,7 @@ namespace GitHub.Runner.Common
|
||||
{
|
||||
while (!_jobCompletionSource.Task.IsCompleted || runOnce)
|
||||
{
|
||||
List<UploadFileInfo> filesToUpload = new List<UploadFileInfo>();
|
||||
List<UploadFileInfo> filesToUpload = new();
|
||||
UploadFileInfo dequeueFile;
|
||||
while (_fileUploadQueue.TryDequeue(out dequeueFile))
|
||||
{
|
||||
@@ -398,13 +398,13 @@ namespace GitHub.Runner.Common
|
||||
{
|
||||
while (!_jobCompletionSource.Task.IsCompleted || runOnce)
|
||||
{
|
||||
List<PendingTimelineRecord> pendingUpdates = new List<PendingTimelineRecord>();
|
||||
List<PendingTimelineRecord> pendingUpdates = new();
|
||||
foreach (var timeline in _allTimelines)
|
||||
{
|
||||
ConcurrentQueue<TimelineRecord> recordQueue;
|
||||
if (_timelineUpdateQueue.TryGetValue(timeline, out recordQueue))
|
||||
{
|
||||
List<TimelineRecord> records = new List<TimelineRecord>();
|
||||
List<TimelineRecord> records = new();
|
||||
TimelineRecord record;
|
||||
while (recordQueue.TryDequeue(out record))
|
||||
{
|
||||
@@ -426,7 +426,7 @@ namespace GitHub.Runner.Common
|
||||
// we need track whether we have new sub-timeline been created on the last run.
|
||||
// if so, we need continue update timeline record even we on the last run.
|
||||
bool pendingSubtimelineUpdate = false;
|
||||
List<Exception> mainTimelineRecordsUpdateErrors = new List<Exception>();
|
||||
List<Exception> mainTimelineRecordsUpdateErrors = new();
|
||||
if (pendingUpdates.Count > 0)
|
||||
{
|
||||
foreach (var update in pendingUpdates)
|
||||
@@ -529,7 +529,7 @@ namespace GitHub.Runner.Common
|
||||
return timelineRecords;
|
||||
}
|
||||
|
||||
Dictionary<Guid, TimelineRecord> dict = new Dictionary<Guid, TimelineRecord>();
|
||||
Dictionary<Guid, TimelineRecord> dict = new();
|
||||
foreach (TimelineRecord rec in timelineRecords)
|
||||
{
|
||||
if (rec == null)
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace GitHub.Runner.Common
|
||||
|
||||
public async Task<WorkerMessage> ReceiveAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
WorkerMessage result = new WorkerMessage(MessageType.NotInitialized, string.Empty);
|
||||
WorkerMessage result = new(MessageType.NotInitialized, string.Empty);
|
||||
result.MessageType = (MessageType)await _readStream.ReadInt32Async(cancellationToken);
|
||||
result.Body = await _readStream.ReadStringAsync(cancellationToken);
|
||||
Trace.Info($"Receiving message of length {result.Body.Length}, with hash '{IOUtil.GetSha256Hash(result.Body)}'");
|
||||
|
||||
@@ -291,7 +291,7 @@ namespace GitHub.Runner.Common
|
||||
public static string GetEnvironmentVariable(this Process process, IHostContext hostContext, string variable)
|
||||
{
|
||||
var trace = hostContext.GetTrace(nameof(LinuxProcessExtensions));
|
||||
Dictionary<string, string> env = new Dictionary<string, string>();
|
||||
Dictionary<string, string> env = new();
|
||||
|
||||
if (Directory.Exists("/proc"))
|
||||
{
|
||||
@@ -322,8 +322,8 @@ namespace GitHub.Runner.Common
|
||||
// It doesn't escape '=' or ' ', so we can't parse the output into a dictionary of all envs.
|
||||
// So we only look for the env you request, in the format of variable=value. (it won't work if you variable contains = or space)
|
||||
trace.Info($"Read env from output of `ps e -p {process.Id} -o command`");
|
||||
List<string> psOut = new List<string>();
|
||||
object outputLock = new object();
|
||||
List<string> psOut = new();
|
||||
object outputLock = new();
|
||||
using (var p = hostContext.CreateService<IProcessInvoker>())
|
||||
{
|
||||
p.OutputDataReceived += delegate (object sender, ProcessDataReceivedEventArgs stdout)
|
||||
|
||||
@@ -81,7 +81,7 @@ namespace GitHub.Runner.Common
|
||||
}
|
||||
|
||||
// Trace whether a value was entered.
|
||||
string val = new String(chars.ToArray());
|
||||
string val = new(chars.ToArray());
|
||||
if (!string.IsNullOrEmpty(val))
|
||||
{
|
||||
HostContext.SecretMasker.AddValue(val);
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace GitHub.Runner.Common
|
||||
|
||||
public sealed class TraceManager : ITraceManager
|
||||
{
|
||||
private readonly ConcurrentDictionary<string, Tracing> _sources = new ConcurrentDictionary<string, Tracing>(StringComparer.OrdinalIgnoreCase);
|
||||
private readonly ConcurrentDictionary<string, Tracing> _sources = new(StringComparer.OrdinalIgnoreCase);
|
||||
private readonly HostTraceListener _hostTraceListener;
|
||||
private TraceSetting _traceSetting;
|
||||
private ISecretMasker _secretMasker;
|
||||
|
||||
Reference in New Issue
Block a user