[Ryujinx.Common] Address dotnet-format issues (#5358)

* dotnet format style --severity info

Some changes were manually reverted.

* dotnet format analyzers --serverity info

Some changes have been minimally adapted.

* Restore a few unused methods and variables

* Silence dotnet format IDE0060 warnings

* Silence dotnet format IDE0059 warnings

* Address or silence dotnet format IDE1006 warnings

* Address dotnet format CA1816 warnings

* Address or silence dotnet format CA2211 warnings

* Silence CA1806 and CA1834 issues

* Fix formatting for switch expressions

* Address most dotnet format whitespace warnings

* Apply dotnet format whitespace formatting

A few of them have been manually reverted and the corresponding warning was silenced

* Revert formatting changes for while and for-loops

* Format if-blocks correctly

* Run dotnet format whitespace after rebase

* Run dotnet format style after rebase

* Run dotnet format analyzers after rebase

* Run dotnet format after rebase and remove unused usings

- analyzers
- style
- whitespace

* Add comments to disabled warnings

* Remove a few unused parameters

* Replace MmeShadowScratch with Array256<uint>

* Simplify properties and array initialization, Use const when possible, Remove trailing commas

* Run dotnet format after rebase

* Address IDE0251 warnings

* Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas"

This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e.

* dotnet format whitespace after rebase

* First dotnet format pass

* Second dotnet format pass

* Fix build issues

* Fix StructArrayHelpers.cs

* Apply suggestions from code review

Co-authored-by: Ac_K <Acoustik666@gmail.com>

* Fix return statements

* Fix naming rule violations

* Update src/Ryujinx.Common/Utilities/StreamUtils.cs

Co-authored-by: Ac_K <Acoustik666@gmail.com>

* Add trailing commas

* Address review feedback

* Address review feedback

* Rename remaining type parameters to TKey and TValue

* Fix manual formatting for logging levels

* Fix spacing before comments

---------

Co-authored-by: Ac_K <Acoustik666@gmail.com>
This commit is contained in:
TSRBerry
2023-06-28 18:41:38 +02:00
committed by GitHub
parent 0a75b73fa4
commit fc20d9b925
96 changed files with 965 additions and 969 deletions

View File

@ -5,11 +5,11 @@ namespace Ryujinx.Common.Logging.Formatters
{
internal class DefaultLogFormatter : ILogFormatter
{
private static readonly ObjectPool<StringBuilder> StringBuilderPool = SharedPools.Default<StringBuilder>();
private static readonly ObjectPool<StringBuilder> _stringBuilderPool = SharedPools.Default<StringBuilder>();
public string Format(LogEventArgs args)
{
StringBuilder sb = StringBuilderPool.Allocate();
StringBuilder sb = _stringBuilderPool.Allocate();
try
{
@ -44,8 +44,8 @@ namespace Ryujinx.Common.Logging.Formatters
}
finally
{
StringBuilderPool.Release(sb);
_stringBuilderPool.Release(sb);
}
}
}
}
}

View File

@ -7,7 +7,7 @@ namespace Ryujinx.Common.Logging.Formatters
{
internal static class DynamicObjectFormatter
{
private static readonly ObjectPool<StringBuilder> StringBuilderPool = SharedPools.Default<StringBuilder>();
private static readonly ObjectPool<StringBuilder> _stringBuilderPool = SharedPools.Default<StringBuilder>();
public static string? Format(object? dynamicObject)
{
@ -16,7 +16,7 @@ namespace Ryujinx.Common.Logging.Formatters
return null;
}
StringBuilder sb = StringBuilderPool.Allocate();
StringBuilder sb = _stringBuilderPool.Allocate();
try
{
@ -26,7 +26,7 @@ namespace Ryujinx.Common.Logging.Formatters
}
finally
{
StringBuilderPool.Release(sb);
_stringBuilderPool.Release(sb);
}
}
@ -48,7 +48,7 @@ namespace Ryujinx.Common.Logging.Formatters
if (typeof(Array).IsAssignableFrom(prop.PropertyType))
{
Array? array = (Array?) prop.GetValue(dynamicObject);
Array? array = (Array?)prop.GetValue(dynamicObject);
if (array is not null)
{
@ -81,4 +81,4 @@ namespace Ryujinx.Common.Logging.Formatters
sb.Append('}');
}
}
}
}

View File

@ -4,4 +4,4 @@
{
string Format(LogEventArgs args);
}
}
}

View File

@ -71,6 +71,6 @@ namespace Ryujinx.Common.Logging
SurfaceFlinger,
TamperMachine,
Ui,
Vic
Vic,
}
}
}

View File

@ -6,18 +6,18 @@ namespace Ryujinx.Common.Logging
{
public readonly LogLevel Level;
public readonly TimeSpan Time;
public readonly string ThreadName;
public readonly string ThreadName;
public readonly string Message;
public readonly object Data;
public LogEventArgs(LogLevel level, TimeSpan time, string threadName, string message, object data = null)
{
Level = level;
Time = time;
Level = level;
Time = time;
ThreadName = threadName;
Message = message;
Data = data;
Message = message;
Data = data;
}
}
}
}

View File

@ -8,7 +8,7 @@ namespace Ryujinx.Common.Logging
{
public LogLevel Level { get; }
public TimeSpan Time { get; }
public string ThreadName { get; }
public string ThreadName { get; }
public string Message { get; }
public string Data { get; }
@ -16,11 +16,11 @@ namespace Ryujinx.Common.Logging
[JsonConstructor]
public LogEventArgsJson(LogLevel level, TimeSpan time, string threadName, string message, string data = null)
{
Level = level;
Time = time;
Level = level;
Time = time;
ThreadName = threadName;
Message = message;
Data = data;
Message = message;
Data = data;
}
public static LogEventArgsJson FromLogEventArgs(LogEventArgs args)
@ -28,4 +28,4 @@ namespace Ryujinx.Common.Logging
return new LogEventArgsJson(args.Level, args.Time, args.ThreadName, args.Message, DynamicObjectFormatter.Format(args.Data));
}
}
}
}

View File

@ -6,4 +6,4 @@ namespace Ryujinx.Common.Logging
internal partial class LogEventJsonSerializerContext : JsonSerializerContext
{
}
}
}

View File

@ -10,11 +10,11 @@ namespace Ryujinx.Common.Logging
{
public static class Logger
{
private static readonly Stopwatch m_Time;
private static readonly Stopwatch _time;
private static readonly bool[] m_EnabledClasses;
private static readonly bool[] _enabledClasses;
private static readonly List<ILogTarget> m_LogTargets;
private static readonly List<ILogTarget> _logTargets;
private static readonly StdErrAdapter _stdErrAdapter;
@ -32,27 +32,27 @@ namespace Ryujinx.Common.Logging
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PrintMsg(LogClass logClass, string message)
{
if (m_EnabledClasses[(int)logClass])
if (_enabledClasses[(int)logClass])
{
Updated?.Invoke(null, new LogEventArgs(Level, m_Time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, "", message)));
Updated?.Invoke(null, new LogEventArgs(Level, _time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, "", message)));
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Print(LogClass logClass, string message, [CallerMemberName] string caller = "")
{
if (m_EnabledClasses[(int)logClass])
if (_enabledClasses[(int)logClass])
{
Updated?.Invoke(null, new LogEventArgs(Level, m_Time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, message)));
Updated?.Invoke(null, new LogEventArgs(Level, _time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, message)));
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Print(LogClass logClass, string message, object data, [CallerMemberName] string caller = "")
{
if (m_EnabledClasses[(int)logClass])
if (_enabledClasses[(int)logClass])
{
Updated?.Invoke(null, new LogEventArgs(Level, m_Time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, message), data));
Updated?.Invoke(null, new LogEventArgs(Level, _time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, message), data));
}
}
@ -60,71 +60,71 @@ namespace Ryujinx.Common.Logging
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PrintStack(LogClass logClass, string message, [CallerMemberName] string caller = "")
{
if (m_EnabledClasses[(int)logClass])
if (_enabledClasses[(int)logClass])
{
Updated?.Invoke(null, new LogEventArgs(Level, m_Time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, message), new StackTrace(true)));
Updated?.Invoke(null, new LogEventArgs(Level, _time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, message), new StackTrace(true)));
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PrintStub(LogClass logClass, string message = "", [CallerMemberName] string caller = "")
{
if (m_EnabledClasses[(int)logClass])
if (_enabledClasses[(int)logClass])
{
Updated?.Invoke(null, new LogEventArgs(Level, m_Time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, "Stubbed. " + message)));
Updated?.Invoke(null, new LogEventArgs(Level, _time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, "Stubbed. " + message)));
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PrintStub(LogClass logClass, object data, [CallerMemberName] string caller = "")
{
if (m_EnabledClasses[(int)logClass])
if (_enabledClasses[(int)logClass])
{
Updated?.Invoke(null, new LogEventArgs(Level, m_Time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, "Stubbed."), data));
Updated?.Invoke(null, new LogEventArgs(Level, _time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, "Stubbed."), data));
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PrintStub(LogClass logClass, string message, object data, [CallerMemberName] string caller = "")
{
if (m_EnabledClasses[(int)logClass])
if (_enabledClasses[(int)logClass])
{
Updated?.Invoke(null, new LogEventArgs(Level, m_Time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, "Stubbed. " + message), data));
Updated?.Invoke(null, new LogEventArgs(Level, _time.Elapsed, Thread.CurrentThread.Name, FormatMessage(logClass, caller, "Stubbed. " + message), data));
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void PrintRawMsg(string message)
{
Updated?.Invoke(null, new LogEventArgs(Level, m_Time.Elapsed, Thread.CurrentThread.Name, message));
Updated?.Invoke(null, new LogEventArgs(Level, _time.Elapsed, Thread.CurrentThread.Name, message));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static string FormatMessage(LogClass Class, string Caller, string Message) => $"{Class} {Caller}: {Message}";
private static string FormatMessage(LogClass logClass, string caller, string message) => $"{logClass} {caller}: {message}";
}
public static Log? Debug { get; private set; }
public static Log? Info { get; private set; }
public static Log? Warning { get; private set; }
public static Log? Error { get; private set; }
public static Log? Guest { get; private set; }
public static Log? Debug { get; private set; }
public static Log? Info { get; private set; }
public static Log? Warning { get; private set; }
public static Log? Error { get; private set; }
public static Log? Guest { get; private set; }
public static Log? AccessLog { get; private set; }
public static Log? Stub { get; private set; }
public static Log? Trace { get; private set; }
public static Log Notice { get; } // Always enabled
public static Log? Stub { get; private set; }
public static Log? Trace { get; private set; }
public static Log Notice { get; } // Always enabled
static Logger()
{
m_EnabledClasses = new bool[Enum.GetNames<LogClass>().Length];
_enabledClasses = new bool[Enum.GetNames<LogClass>().Length];
for (int index = 0; index < m_EnabledClasses.Length; index++)
for (int index = 0; index < _enabledClasses.Length; index++)
{
m_EnabledClasses[index] = true;
_enabledClasses[index] = true;
}
m_LogTargets = new List<ILogTarget>();
_logTargets = new List<ILogTarget>();
m_Time = Stopwatch.StartNew();
_time = Stopwatch.StartNew();
// Logger should log to console by default
AddTarget(new AsyncLogTargetWrapper(
@ -145,12 +145,12 @@ namespace Ryujinx.Common.Logging
public static void RestartTime()
{
m_Time.Restart();
_time.Restart();
}
private static ILogTarget GetTarget(string targetName)
{
foreach (var target in m_LogTargets)
foreach (var target in _logTargets)
{
if (target.Name.Equals(targetName))
{
@ -163,7 +163,7 @@ namespace Ryujinx.Common.Logging
public static void AddTarget(ILogTarget target)
{
m_LogTargets.Add(target);
_logTargets.Add(target);
Updated += target.Log;
}
@ -176,7 +176,7 @@ namespace Ryujinx.Common.Logging
{
Updated -= logTarget.Log;
m_LogTargets.Remove(logTarget);
_logTargets.Remove(logTarget);
logTarget.Dispose();
}
@ -188,18 +188,18 @@ namespace Ryujinx.Common.Logging
_stdErrAdapter.Dispose();
foreach (var target in m_LogTargets)
foreach (var target in _logTargets)
{
target.Dispose();
}
m_LogTargets.Clear();
_logTargets.Clear();
}
public static IReadOnlyCollection<LogLevel> GetEnabledLevels()
{
var logs = new Log?[] { Debug, Info, Warning, Error, Guest, AccessLog, Stub, Trace };
List<LogLevel> levels = new List<LogLevel>(logs.Length);
var logs = new[] { Debug, Info, Warning, Error, Guest, AccessLog, Stub, Trace };
List<LogLevel> levels = new(logs.Length);
foreach (var log in logs)
{
if (log.HasValue)
@ -215,21 +215,23 @@ namespace Ryujinx.Common.Logging
{
switch (logLevel)
{
case LogLevel.Debug : Debug = enabled ? new Log(LogLevel.Debug) : new Log?(); break;
case LogLevel.Info : Info = enabled ? new Log(LogLevel.Info) : new Log?(); break;
case LogLevel.Warning : Warning = enabled ? new Log(LogLevel.Warning) : new Log?(); break;
case LogLevel.Error : Error = enabled ? new Log(LogLevel.Error) : new Log?(); break;
case LogLevel.Guest : Guest = enabled ? new Log(LogLevel.Guest) : new Log?(); break;
case LogLevel.AccessLog : AccessLog = enabled ? new Log(LogLevel.AccessLog): new Log?(); break;
case LogLevel.Stub : Stub = enabled ? new Log(LogLevel.Stub) : new Log?(); break;
case LogLevel.Trace : Trace = enabled ? new Log(LogLevel.Trace) : new Log?(); break;
#pragma warning disable IDE0055 // Disable formatting
case LogLevel.Debug : Debug = enabled ? new Log(LogLevel.Debug) : new Log?(); break;
case LogLevel.Info : Info = enabled ? new Log(LogLevel.Info) : new Log?(); break;
case LogLevel.Warning : Warning = enabled ? new Log(LogLevel.Warning) : new Log?(); break;
case LogLevel.Error : Error = enabled ? new Log(LogLevel.Error) : new Log?(); break;
case LogLevel.Guest : Guest = enabled ? new Log(LogLevel.Guest) : new Log?(); break;
case LogLevel.AccessLog : AccessLog = enabled ? new Log(LogLevel.AccessLog) : new Log?(); break;
case LogLevel.Stub : Stub = enabled ? new Log(LogLevel.Stub) : new Log?(); break;
case LogLevel.Trace : Trace = enabled ? new Log(LogLevel.Trace) : new Log?(); break;
default: throw new ArgumentException("Unknown Log Level");
#pragma warning restore IDE0055
}
}
public static void SetEnable(LogClass logClass, bool enabled)
{
m_EnabledClasses[(int)logClass] = enabled;
_enabledClasses[(int)logClass] = enabled;
}
}
}
}

View File

@ -14,16 +14,16 @@ namespace Ryujinx.Common.Logging.Targets
/// <summary>
/// Discard the overflowing item
/// </summary>
Discard = 1
Discard = 1,
}
public class AsyncLogTargetWrapper : ILogTarget
{
private ILogTarget _target;
private readonly ILogTarget _target;
private Thread _messageThread;
private readonly Thread _messageThread;
private BlockingCollection<LogEventArgs> _messageQueue;
private readonly BlockingCollection<LogEventArgs> _messageQueue;
private readonly int _overflowTimeout;
@ -35,11 +35,12 @@ namespace Ryujinx.Common.Logging.Targets
public AsyncLogTargetWrapper(ILogTarget target, int queueLimit, AsyncLogTargetOverflowAction overflowAction)
{
_target = target;
_messageQueue = new BlockingCollection<LogEventArgs>(queueLimit);
_target = target;
_messageQueue = new BlockingCollection<LogEventArgs>(queueLimit);
_overflowTimeout = overflowAction == AsyncLogTargetOverflowAction.Block ? -1 : 0;
_messageThread = new Thread(() => {
_messageThread = new Thread(() =>
{
while (!_messageQueue.IsCompleted)
{
try
@ -55,10 +56,11 @@ namespace Ryujinx.Common.Logging.Targets
// on the next iteration.
}
}
});
_messageThread.Name = "Logger.MessageThread";
_messageThread.IsBackground = true;
})
{
Name = "Logger.MessageThread",
IsBackground = true,
};
_messageThread.Start();
}
@ -72,8 +74,9 @@ namespace Ryujinx.Common.Logging.Targets
public void Dispose()
{
GC.SuppressFinalize(this);
_messageQueue.CompleteAdding();
_messageThread.Join();
}
}
}
}

View File

@ -11,20 +11,21 @@ namespace Ryujinx.Common.Logging.Targets
string ILogTarget.Name { get => _name; }
private static ConsoleColor GetLogColor(LogLevel level) => level switch {
LogLevel.Info => ConsoleColor.White,
private static ConsoleColor GetLogColor(LogLevel level) => level switch
{
LogLevel.Info => ConsoleColor.White,
LogLevel.Warning => ConsoleColor.Yellow,
LogLevel.Error => ConsoleColor.Red,
LogLevel.Stub => ConsoleColor.DarkGray,
LogLevel.Notice => ConsoleColor.Cyan,
LogLevel.Trace => ConsoleColor.DarkCyan,
_ => ConsoleColor.Gray,
LogLevel.Error => ConsoleColor.Red,
LogLevel.Stub => ConsoleColor.DarkGray,
LogLevel.Notice => ConsoleColor.Cyan,
LogLevel.Trace => ConsoleColor.DarkCyan,
_ => ConsoleColor.Gray,
};
public ConsoleLogTarget(string name)
{
_formatter = new DefaultLogFormatter();
_name = name;
_name = name;
}
public void Log(object sender, LogEventArgs args)
@ -36,7 +37,8 @@ namespace Ryujinx.Common.Logging.Targets
public void Dispose()
{
GC.SuppressFinalize(this);
Console.ResetColor();
}
}
}
}

View File

@ -7,9 +7,9 @@ namespace Ryujinx.Common.Logging.Targets
{
public class FileLogTarget : ILogTarget
{
private readonly StreamWriter _logWriter;
private readonly StreamWriter _logWriter;
private readonly ILogFormatter _formatter;
private readonly string _name;
private readonly string _name;
string ILogTarget.Name { get => _name; }
@ -20,7 +20,7 @@ namespace Ryujinx.Common.Logging.Targets
public FileLogTarget(string path, string name, FileShare fileShare, FileMode fileMode)
{
// Ensure directory is present
DirectoryInfo logDir = new DirectoryInfo(Path.Combine(path, "Logs"));
DirectoryInfo logDir = new(Path.Combine(path, "Logs"));
logDir.Create();
// Clean up old logs, should only keep 3
@ -33,9 +33,9 @@ namespace Ryujinx.Common.Logging.Targets
string version = ReleaseInformation.GetVersion();
// Get path for the current time
path = Path.Combine(logDir.FullName, $"Ryujinx_{version}_{DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss")}.log");
path = Path.Combine(logDir.FullName, $"Ryujinx_{version}_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}.log");
_name = name;
_name = name;
_logWriter = new StreamWriter(File.Open(path, fileMode, FileAccess.Write, fileShare));
_formatter = new DefaultLogFormatter();
}
@ -48,6 +48,7 @@ namespace Ryujinx.Common.Logging.Targets
public void Dispose()
{
GC.SuppressFinalize(this);
_logWriter.WriteLine("---- End of Log ----");
_logWriter.Flush();
_logWriter.Dispose();

View File

@ -1,25 +1,26 @@
using Ryujinx.Common.Utilities;
using System;
using System.IO;
namespace Ryujinx.Common.Logging.Targets
{
public class JsonLogTarget : ILogTarget
{
private Stream _stream;
private bool _leaveOpen;
private string _name;
private readonly Stream _stream;
private readonly bool _leaveOpen;
private readonly string _name;
string ILogTarget.Name { get => _name; }
public JsonLogTarget(Stream stream, string name)
{
_stream = stream;
_name = name;
_name = name;
}
public JsonLogTarget(Stream stream, bool leaveOpen)
{
_stream = stream;
_stream = stream;
_leaveOpen = leaveOpen;
}
@ -31,6 +32,7 @@ namespace Ryujinx.Common.Logging.Targets
public void Dispose()
{
GC.SuppressFinalize(this);
if (!_leaveOpen)
{
_stream.Dispose();