diff --git a/.global.editorconfig.ini b/.global.editorconfig.ini index 70e07c2666..de595ca19f 100644 --- a/.global.editorconfig.ini +++ b/.global.editorconfig.ini @@ -367,6 +367,8 @@ dotnet_diagnostic.MEN013.severity = silent dotnet_diagnostic.MEN014.severity = warning # Use Preferred Terms dotnet_diagnostic.MEN015.severity = silent +# Use object-oriented methods instead of top-level statements +dotnet_diagnostic.MEN016.severity = silent ## StyleCop spacing rules diff --git a/ExternalCoreProjects/Virtu/Keyboard.cs b/ExternalCoreProjects/Virtu/Keyboard.cs index c57ab44a90..ebfd49bb8d 100644 --- a/ExternalCoreProjects/Virtu/Keyboard.cs +++ b/ExternalCoreProjects/Virtu/Keyboard.cs @@ -141,7 +141,9 @@ namespace Jellyfish.Virtu Reset = 2305843009213693952UL, } +#pragma warning disable MA0104 // unlikely to conflict with System.Windows.Input.Keyboard public sealed class Keyboard +#pragma warning restore MA0104 { static Keyboard() { diff --git a/ExternalProjects/BizHawk.Analyzer/FeatureNotImplementedAnalyzer.cs b/ExternalProjects/BizHawk.Analyzer/FeatureNotImplementedAnalyzer.cs index fbdc535037..440bd0a3de 100644 --- a/ExternalProjects/BizHawk.Analyzer/FeatureNotImplementedAnalyzer.cs +++ b/ExternalProjects/BizHawk.Analyzer/FeatureNotImplementedAnalyzer.cs @@ -50,7 +50,8 @@ public sealed class FeatureNotImplementedAnalyzer : DiagnosticAnalyzer // else correct usage, do not flag } bool IncludesFNIAttribute(SyntaxList mds) - => mds.SelectMany(static als => als.Attributes).Any(aSyn => featureNotImplementedAttrSym.Matches(snac.SemanticModel.GetTypeInfo(aSyn).Type)); + => mds.SelectMany(static als => als.Attributes) + .Any(aSyn => featureNotImplementedAttrSym.Matches(snac.SemanticModel.GetTypeInfo(aSyn, snac.CancellationToken).Type)); void CheckBlockBody(BlockSyntax bs, Location location) { if (bs.Statements.Count is not 1) snac.ReportDiagnostic(Diagnostic.Create(DiagShouldThrowNIE, location, ERR_MSG_DOES_NOT_THROW)); diff --git a/ExternalProjects/BizHawk.Analyzer/FirstOrDefaultOnStructAnalyzer.cs b/ExternalProjects/BizHawk.Analyzer/FirstOrDefaultOnStructAnalyzer.cs index b0200d8d1c..5007b25d2f 100644 --- a/ExternalProjects/BizHawk.Analyzer/FirstOrDefaultOnStructAnalyzer.cs +++ b/ExternalProjects/BizHawk.Analyzer/FirstOrDefaultOnStructAnalyzer.cs @@ -43,7 +43,9 @@ public sealed class FirstOrDefaultOnStructAnalyzer : DiagnosticAnalyzer var operation = (IInvocationOperation) oac.Operation; var calledSym = operation.TargetMethod.ConstructedFrom; if (!(firstOrDefaultWithPredSym!.Matches(calledSym) || firstOrDefaultNoPredSym!.Matches(calledSym))) return; - var receiverExprType = operation.SemanticModel!.GetTypeInfo((CSharpSyntaxNode) operation.Arguments[0].Syntax).ConvertedType!; + var receiverExprType = operation.SemanticModel!.GetTypeInfo( + (CSharpSyntaxNode) operation.Arguments[0].Syntax, + oac.CancellationToken).ConvertedType!; var collectionElemType = receiverExprType switch { INamedTypeSymbol nts => nts.TypeArguments[0], diff --git a/ExternalProjects/BizHawk.Analyzer/HawkSourceAnalyzer.cs b/ExternalProjects/BizHawk.Analyzer/HawkSourceAnalyzer.cs index 5160baa5db..ea24450caa 100644 --- a/ExternalProjects/BizHawk.Analyzer/HawkSourceAnalyzer.cs +++ b/ExternalProjects/BizHawk.Analyzer/HawkSourceAnalyzer.cs @@ -128,7 +128,9 @@ public class HawkSourceAnalyzer : DiagnosticAnalyzer case AnonymousObjectCreationExpressionSyntax: snac.ReportDiagnostic(Diagnostic.Create(DiagNoAnonClasses, snac.Node.GetLocation())); break; - case AssignmentExpressionSyntax aes when IsDiscard(aes) && snac.SemanticModel.GetSymbolInfo(aes.Right).Symbol?.Kind is SymbolKind.Local: + case AssignmentExpressionSyntax aes: + if (!IsDiscard(aes)) break; + if (snac.SemanticModel.GetSymbolInfo(aes.Right, snac.CancellationToken).Symbol?.Kind is not SymbolKind.Local) break; snac.ReportDiagnostic(Diagnostic.Create(DiagNoDiscardingLocals, snac.Node.GetLocation())); break; case CollectionExpressionSyntax ces: diff --git a/ExternalProjects/BizHawk.Analyzer/UseNameofOperatorAnalyzer.cs b/ExternalProjects/BizHawk.Analyzer/UseNameofOperatorAnalyzer.cs index 31140b2d67..ebc018cfe0 100644 --- a/ExternalProjects/BizHawk.Analyzer/UseNameofOperatorAnalyzer.cs +++ b/ExternalProjects/BizHawk.Analyzer/UseNameofOperatorAnalyzer.cs @@ -52,7 +52,7 @@ public sealed class UseNameofOperatorAnalyzer : DiagnosticAnalyzer snac.ReportDiagnostic(Diagnostic.Create(DiagNoToStringOnType, toes.GetLocation(), toes.Type.GetText(), " in string interpolation")); break; case MemberAccessExpressionSyntax maes1: - var accessed = snac.SemanticModel.GetSymbolInfo(maes1.Name).Symbol; + var accessed = snac.SemanticModel.GetSymbolInfo(maes1.Name, snac.CancellationToken).Symbol; if (memberInfoDotNameSym.Matches(accessed)) { snac.ReportDiagnostic(Diagnostic.Create(DiagUseNameof, maes1.GetLocation(), toes.Type.GetText())); diff --git a/ExternalProjects/BizHawk.Analyzer/UseTypeofOperatorAnalyzer.cs b/ExternalProjects/BizHawk.Analyzer/UseTypeofOperatorAnalyzer.cs index 049364a2d3..db59f3bc2f 100644 --- a/ExternalProjects/BizHawk.Analyzer/UseTypeofOperatorAnalyzer.cs +++ b/ExternalProjects/BizHawk.Analyzer/UseTypeofOperatorAnalyzer.cs @@ -42,7 +42,9 @@ public sealed class UseTypeofOperatorAnalyzer : DiagnosticAnalyzer objectDotGetTypeSym ??= oac.Compilation.GetTypeByMetadataName("System.Object")!.GetMembers("GetType")[0]; if (!objectDotGetTypeSym.Matches(operation.TargetMethod)) return; if (operation.Instance.Syntax is not ThisExpressionSyntax and not IdentifierNameSyntax { Identifier.Text: "GetType" }) return; // called on something that isn't `this` - var enclosingType = operation.SemanticModel!.GetDeclaredSymbol(((CSharpSyntaxNode) operation.Syntax).EnclosingTypeDeclarationSyntax()!)!; + var enclosingType = operation.SemanticModel!.GetDeclaredSymbol( + ((CSharpSyntaxNode) operation.Syntax).EnclosingTypeDeclarationSyntax()!, + oac.CancellationToken)!; oac.ReportDiagnostic(Diagnostic.Create(enclosingType.IsSealed ? DiagNoGetTypeOnThisSealed : DiagNoGetTypeOnThis, operation.Syntax.GetLocation(), enclosingType.Name)); }, OperationKind.Invocation); diff --git a/ExternalProjects/BizHawk.SrcGen.SettingsUtil/DefaultSetterGenerator.cs b/ExternalProjects/BizHawk.SrcGen.SettingsUtil/DefaultSetterGenerator.cs index ff81f112d8..bfb95e166e 100644 --- a/ExternalProjects/BizHawk.SrcGen.SettingsUtil/DefaultSetterGenerator.cs +++ b/ExternalProjects/BizHawk.SrcGen.SettingsUtil/DefaultSetterGenerator.cs @@ -99,7 +99,7 @@ namespace BizHawk.Common if (cds.AttributeLists.SelectMany(e => e.Attributes) .Any(e => e.Name.NormalizeWhitespace().ToFullString() == "CoreSettings")) { - var symbol = semanticModel.GetDeclaredSymbol(cds); + var symbol = semanticModel.GetDeclaredSymbol(cds, context.CancellationToken); if (symbol is not null) // probably never happens? { CreateDefaultSetter(source, symbol); diff --git a/ExternalProjects/NLua/NLua.csproj b/ExternalProjects/NLua/NLua.csproj index 48f491dd8a..5e06fa4786 100644 --- a/ExternalProjects/NLua/NLua.csproj +++ b/ExternalProjects/NLua/NLua.csproj @@ -22,7 +22,7 @@ - $(NoWarn);IDE0005 + $(NoWarn);IDE0005;SA1514 disable true diff --git a/ExternalProjects/iso-parser/ISOParser.csproj b/ExternalProjects/iso-parser/ISOParser.csproj index 094f54bdcb..f29a363a6c 100644 --- a/ExternalProjects/iso-parser/ISOParser.csproj +++ b/ExternalProjects/iso-parser/ISOParser.csproj @@ -4,6 +4,7 @@ + $(NoWarn);MA0060;SA1514 disable diff --git a/ExternalToolProjects/DATParser/NOINTROParser.cs b/ExternalToolProjects/DATParser/NOINTROParser.cs index 472669ccd0..704a41fc3a 100644 --- a/ExternalToolProjects/DATParser/NOINTROParser.cs +++ b/ExternalToolProjects/DATParser/NOINTROParser.cs @@ -122,7 +122,7 @@ namespace BizHawk.DATTool string a = RemoveUnneededOptions(nameString); // process data contained in () - string[] d = a.ToString().Split('(', ')'); + var d = a.Split('(', ')'); if (d.Length > 0) { diff --git a/ExternalToolProjects/DATParser/TOSECParser.cs b/ExternalToolProjects/DATParser/TOSECParser.cs index a716516dc8..c10baed05c 100644 --- a/ExternalToolProjects/DATParser/TOSECParser.cs +++ b/ExternalToolProjects/DATParser/TOSECParser.cs @@ -128,7 +128,7 @@ namespace BizHawk.DATTool string a = RemoveUnneededOptions(nameString); // process data contained in () - string[] d = a.ToString().Split('(', ')'); + var d = a.Split('(', ')'); if (d.Length > 0) { diff --git a/ExternalToolProjects/DBMan/RomHasher.cs b/ExternalToolProjects/DBMan/RomHasher.cs index 12d0065840..dcdff196f3 100644 --- a/ExternalToolProjects/DBMan/RomHasher.cs +++ b/ExternalToolProjects/DBMan/RomHasher.cs @@ -63,7 +63,7 @@ namespace BizHawk.DBManTool // parse out modifiers var mods = new List(); - modifiers = modifiers.Replace(")", ";").Replace("]",";"); + modifiers = modifiers.Replace(')', ';').Replace(']', ';'); modifiers = modifiers.Replace("(", "").Replace("[", ""); var m_ = modifiers.Split(';'); foreach (var mi in m_) diff --git a/References/BizHawk.Analyzer.dll b/References/BizHawk.Analyzer.dll index fdf83f1b54..34b523c4ee 100644 Binary files a/References/BizHawk.Analyzer.dll and b/References/BizHawk.Analyzer.dll differ diff --git a/References/BizHawk.SrcGen.SettingsUtil.dll b/References/BizHawk.SrcGen.SettingsUtil.dll index 926863c62b..02a042e57e 100644 Binary files a/References/BizHawk.SrcGen.SettingsUtil.dll and b/References/BizHawk.SrcGen.SettingsUtil.dll differ