Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run code quality analyzers in the coreclr/tools directory #74825

Merged
merged 11 commits into from
Sep 1, 2022
Merged
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion src/coreclr/tools/Common/CommandLine/ArgumentParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public ArgumentParser(IEnumerable<string> arguments)
public ArgumentParser(IEnumerable<string> arguments, Func<string, IEnumerable<string>> responseFileReader)
{
if (arguments == null)
throw new ArgumentNullException("arguments");
throw new ArgumentNullException(nameof(arguments));

_tokens = ArgumentLexer.Lex(arguments, responseFileReader);
}
Expand Down
33 changes: 16 additions & 17 deletions src/coreclr/tools/Common/CommandLine/ArgumentSyntax.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ internal ArgumentSyntax(IEnumerable<string> arguments)
public static ArgumentSyntax Parse(IEnumerable<string> arguments, Action<ArgumentSyntax> defineAction)
{
if (arguments == null)
throw new ArgumentNullException("arguments");
throw new ArgumentNullException(nameof(arguments));

if (defineAction == null)
throw new ArgumentNullException("defineAction");
throw new ArgumentNullException(nameof(defineAction));

var syntax = new ArgumentSyntax(arguments);
defineAction(syntax);
Expand Down Expand Up @@ -107,12 +107,12 @@ public void ReportError(string message)
public ArgumentCommand<T> DefineCommand<T>(string name, T value)
{
if (string.IsNullOrEmpty(name))
throw new ArgumentException(Strings.NameMissing, "name");
throw new ArgumentException(Strings.NameMissing, nameof(name));

if (!IsValidName(name))
{
var message = string.Format(Strings.CommandNameIsNotValidFmt, name);
throw new ArgumentException(message, "name");
throw new ArgumentException(message, nameof(name));
}

if (_commands.Any(c => string.Equals(c.Name, name, StringComparison.Ordinal)))
Expand Down Expand Up @@ -143,7 +143,7 @@ public ArgumentCommand<T> DefineCommand<T>(string name, T value)
public Argument<T> DefineOption<T>(string name, T defaultValue, Func<string, T> valueConverter, bool isRequired)
{
if (string.IsNullOrEmpty(name))
throw new ArgumentException(Strings.NameMissing, "name");
throw new ArgumentException(Strings.NameMissing, nameof(name));

if (DefinedParameters.Any())
throw new InvalidOperationException(Strings.OptionsMustBeDefinedBeforeParameters);
Expand Down Expand Up @@ -178,7 +178,7 @@ public Argument<T> DefineOption<T>(string name, T defaultValue, Func<string, T>
public ArgumentList<T> DefineOptionList<T>(string name, IReadOnlyList<T> defaultValue, Func<string, T> valueConverter, bool isRequired)
{
if (string.IsNullOrEmpty(name))
throw new ArgumentException(Strings.NameMissing, "name");
throw new ArgumentException(Strings.NameMissing, nameof(name));

if (DefinedParameters.Any())
throw new InvalidOperationException(Strings.OptionsMustBeDefinedBeforeParameters);
Expand Down Expand Up @@ -213,12 +213,12 @@ public ArgumentList<T> DefineOptionList<T>(string name, IReadOnlyList<T> default
public Argument<T> DefineParameter<T>(string name, T defaultValue, Func<string, T> valueConverter)
{
if (string.IsNullOrEmpty(name))
throw new ArgumentException(Strings.NameMissing, "name");
throw new ArgumentException(Strings.NameMissing, nameof(name));

if (!IsValidName(name))
{
var message = string.Format(Strings.ParameterNameIsNotValidFmt, name);
throw new ArgumentException(message, "name");
throw new ArgumentException(message, nameof(name));
}

if (DefinedParameters.Any(p => p.IsList))
Expand Down Expand Up @@ -252,12 +252,12 @@ public Argument<T> DefineParameter<T>(string name, T defaultValue, Func<string,
public ArgumentList<T> DefineParameterList<T>(string name, IReadOnlyList<T> defaultValue, Func<string, T> valueConverter)
{
if (string.IsNullOrEmpty(name))
throw new ArgumentException(Strings.NameMissing, "name");
throw new ArgumentException(Strings.NameMissing, nameof(name));

if (!IsValidName(name))
{
var message = string.Format(Strings.ParameterNameIsNotValidFmt, name);
throw new ArgumentException(message, "name");
throw new ArgumentException(message, nameof(name));
}

if (DefinedParameters.Any(p => p.IsList))
Expand Down Expand Up @@ -304,7 +304,7 @@ private IEnumerable<string> ParseOptionNameList(string name)
if (!IsValidName(alias))
{
var message = string.Format(Strings.OptionNameIsNotValidFmt, alias);
throw new ArgumentException(message, "name");
throw new ArgumentException(message, nameof(name));
}

foreach (var option in DefinedOptions)
Expand Down Expand Up @@ -358,8 +358,7 @@ private ArgumentParser Parser
{
get
{
if (_parser == null)
_parser = new ArgumentParser(_arguments, ParseResponseFile);
_parser ??= new ArgumentParser(_arguments, ParseResponseFile);

return _parser;
}
Expand Down Expand Up @@ -457,15 +456,15 @@ public string GetHelpText(int maxWidth)

public IReadOnlyList<string> ExtraHelpParagraphs
{
get
{
return _extraHelpParagraphs.ToArray();
}
set
{
_extraHelpParagraphs.Clear();
_extraHelpParagraphs.AddRange(value);
}
get
{
return _extraHelpParagraphs.ToArray();
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Internal.CommandLine
public partial class ArgumentSyntax
{
private static readonly Func<string, string> s_stringParser = v => v;
private static readonly Func<string, bool> s_booleanParser = v => bool.Parse(v);
private static readonly Func<string, bool> s_booleanParser = bool.Parse;
private static readonly Func<string, int> s_int32Parser = v => int.Parse(v, CultureInfo.InvariantCulture);

// Commands
Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/tools/Common/CommandLine/ArgumentToken.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,14 @@ private bool Equals(ArgumentToken other)

public override bool Equals(object obj)
{
if (ReferenceEquals(obj, null))
if (obj is null)
return false;

if (ReferenceEquals(obj, this))
return true;

var other = obj as ArgumentToken;
return !ReferenceEquals(other, null) && Equals(other);
return other is not null && Equals(other);
}

public override int GetHashCode()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

namespace Internal.CommandLine
{
internal class CommandLineException : Exception
internal sealed class CommandLineException : Exception
{
public CommandLineException(string message)
: base(message)
Expand Down
6 changes: 3 additions & 3 deletions src/coreclr/tools/Common/CommandLine/CommandLineHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace Internal.CommandLine
//
// Helpers for command line processing
//
internal class Helpers
internal static class Helpers
{
// Helper to create a collection of paths unique in their simple names.
public static void AppendExpandedPaths(Dictionary<string, string> dictionary, string pattern, bool strict)
Expand Down Expand Up @@ -102,7 +102,7 @@ public static void MakeReproPackage(string makeReproPath, string outputFilePath,
}
}

HashCode hashCodeOfArgs = new HashCode();
HashCode hashCodeOfArgs = default(HashCode);
foreach (string s in details)
hashCodeOfArgs.Add(s);

Expand Down Expand Up @@ -143,7 +143,7 @@ public static void MakeReproPackage(string makeReproPath, string outputFilePath,
Dictionary<string, string> dictionary = new Dictionary<string, string>();
foreach (string optInList in (IEnumerable)option.Value)
{
Helpers.AppendExpandedPaths(dictionary, optInList, false);
AppendExpandedPaths(dictionary, optInList, false);
}
foreach (string inputFile in dictionary.Values)
{
Expand Down
8 changes: 4 additions & 4 deletions src/coreclr/tools/Common/CommandLine/HelpTextGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ private static void WriteUsage(this StringBuilder sb, string applicationName, IE
sb.Append(usageHeader);

if (syntaxElements.Any())
sb.Append(@" ");
sb.Append(' ');

var syntaxIndent = usageHeader.Length + 1;
var syntaxMaxWidth = maxWidth - syntaxIndent;
Expand Down Expand Up @@ -169,7 +169,7 @@ private static string GetOptionSyntax(Argument option)
{
var sb = new StringBuilder();

sb.Append(@"[");
sb.Append('[');
sb.Append(option.GetDisplayName());

if (!option.IsFlag)
Expand All @@ -178,7 +178,7 @@ private static string GetOptionSyntax(Argument option)
if (option.IsList)
sb.Append(@"...");

sb.Append(@"]");
sb.Append(']');

return sb.ToString();
}
Expand Down Expand Up @@ -252,7 +252,7 @@ private static IEnumerable<string> WordWrapLines(IEnumerable<string> tokens, int
}

if (sb.Length > 0)
sb.Append(@" ");
sb.Append(' ');

sb.Append(token);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public CodeGenerationFailedException(MethodDesc method)
}

public CodeGenerationFailedException(MethodDesc method, Exception inner)
: base(String.Format(MessageText, method), inner)
: base(string.Format(MessageText, method), inner)
{
Method = method;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace ILCompiler
{
// Validates types to the extent that is required to make sure the compilation won't fail
// in unpredictable spots.
partial class CompilerTypeSystemContext
public partial class CompilerTypeSystemContext
{
/// <summary>
/// Ensures that the type can be fully loaded. The method will throw one of the type system
Expand All @@ -33,7 +33,7 @@ public void EnsureLoadableMethod(MethodDesc method)
}
}

class ValidTypeHashTable : LockFreeReaderHashtable<TypeDesc, TypeDesc>
private sealed class ValidTypeHashTable : LockFreeReaderHashtable<TypeDesc, TypeDesc>
{
protected override bool CompareKeyToValue(TypeDesc key, TypeDesc value) => key == value;
protected override bool CompareValueToValue(TypeDesc value1, TypeDesc value2) => value1 == value2;
Expand Down
28 changes: 11 additions & 17 deletions src/coreclr/tools/Common/Compiler/CompilerTypeSystemContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public partial class CompilerTypeSystemContext : MetadataTypeSystemContext, IMet

private MetadataStringDecoder _metadataStringDecoder;

private class ModuleData
private sealed class ModuleData
{
public string SimpleName;
public string FilePath;
Expand All @@ -30,7 +30,7 @@ private class ModuleData
public MemoryMappedViewAccessor MappedViewAccessor;
}

private class ModuleHashtable : LockFreeReaderHashtable<EcmaModule, ModuleData>
private sealed class ModuleHashtable : LockFreeReaderHashtable<EcmaModule, ModuleData>
{
protected override int GetKeyHashCode(EcmaModule key)
{
Expand All @@ -42,11 +42,11 @@ protected override int GetValueHashCode(ModuleData value)
}
protected override bool CompareKeyToValue(EcmaModule key, ModuleData value)
{
return Object.ReferenceEquals(key, value.Module);
return ReferenceEquals(key, value.Module);
}
protected override bool CompareValueToValue(ModuleData value1, ModuleData value2)
{
return Object.ReferenceEquals(value1.Module, value2.Module);
return ReferenceEquals(value1.Module, value2.Module);
}
protected override ModuleData CreateValueFromKey(EcmaModule key)
{
Expand All @@ -56,9 +56,9 @@ protected override ModuleData CreateValueFromKey(EcmaModule key)
}
private readonly ModuleHashtable _moduleHashtable = new ModuleHashtable();

private class SimpleNameHashtable : LockFreeReaderHashtable<string, ModuleData>
private sealed class SimpleNameHashtable : LockFreeReaderHashtable<string, ModuleData>
{
StringComparer _comparer = StringComparer.OrdinalIgnoreCase;
private StringComparer _comparer = StringComparer.OrdinalIgnoreCase;

protected override int GetKeyHashCode(string key)
{
Expand Down Expand Up @@ -254,10 +254,8 @@ private EcmaModule AddModule(string filePath, string expectedSimpleName, bool us
}
finally
{
if (mappedViewAccessor != null)
mappedViewAccessor.Dispose();
if (pdbReader != null)
pdbReader.Dispose();
mappedViewAccessor?.Dispose();
pdbReader?.Dispose();
}
}

Expand Down Expand Up @@ -314,8 +312,7 @@ protected override TypeDesc ConvertToCanon(TypeDesc typeToConvert, ref Canonical

public MetadataStringDecoder GetMetadataStringDecoder()
{
if (_metadataStringDecoder == null)
_metadataStringDecoder = new CachingMetadataStringDecoder(0x10000); // TODO: Tune the size
_metadataStringDecoder ??= new CachingMetadataStringDecoder(0x10000); // TODO: Tune the size
return _metadataStringDecoder;
}

Expand Down Expand Up @@ -354,11 +351,8 @@ private PdbSymbolReader OpenAssociatedSymbolFile(string peFilePath, PEReader peR

// Try to open the symbol file as portable pdb first
PdbSymbolReader reader = PortablePdbSymbolReader.TryOpen(pdbFileName, GetMetadataStringDecoder(), pdbContentId);
if (reader == null)
{
// Fallback to the diasymreader for non-portable pdbs
reader = UnmanagedPdbSymbolReader.TryOpenSymbolReaderForMetadataFile(peFilePath, Path.GetDirectoryName(pdbFileName));
}
// Fallback to the diasymreader for non-portable pdbs
reader ??= UnmanagedPdbSymbolReader.TryOpenSymbolReaderForMetadataFile(peFilePath, Path.GetDirectoryName(pdbFileName));

return reader;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;
using System.Diagnostics;
using System.Collections.Generic;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Internal.TypeSystem;

namespace ILCompiler.DependencyAnalysis
{
/// <summary>
/// Represents a node that contains a set of embedded objects. The main function is
/// Represents a node that contains a set of embedded objects. The main function is
/// to serve as a base class, providing symbol name boundaries and node ordering.
/// </summary>
public abstract class EmbeddedDataContainerNode : ObjectNode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,10 @@
using System.Collections.Generic;

using Internal.TypeSystem;
using DependencyListEntry = ILCompiler.DependencyAnalysisFramework.DependencyNodeCore<ILCompiler.DependencyAnalysis.NodeFactory>.DependencyListEntry;

namespace ILCompiler.DependencyAnalysis
{
using DependencyListEntry = DependencyAnalysisFramework.DependencyNodeCore<NodeFactory>.DependencyListEntry;

/// <summary>
/// Represents a node whose dependencies are runtime determined (they depend on the generic context)
/// and which provides means to compute concrete dependencies when given the generic context.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,12 @@ public interface ISymbolDefinitionNode : ISymbolNode
public static class ISymbolNodeExtensions
{
[ThreadStatic]
static Utf8StringBuilder s_cachedUtf8StringBuilder;
private static Utf8StringBuilder s_cachedUtf8StringBuilder;

public static string GetMangledName(this ISymbolNode symbolNode, NameMangler nameMangler)
{
Utf8StringBuilder sb = s_cachedUtf8StringBuilder;
if (sb == null)
sb = new Utf8StringBuilder();
sb ??= new Utf8StringBuilder();

symbolNode.AppendMangledName(nameMangler, sb);
string ret = sb.ToString();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;
using System.Diagnostics;

using Internal.Text;
Expand Down Expand Up @@ -52,4 +51,3 @@ public override int CompareToImpl(ISortableNode other, CompilerComparer comparer
#endif
}
}

Loading