Add official `BannedApiAnalyzers` and ban some string parsing methods
This commit is contained in:
parent
846253760e
commit
c882fe4ea5
|
@ -376,6 +376,11 @@ dotnet_diagnostic.MEN015.severity = silent
|
||||||
# Use object-oriented methods instead of top-level statements
|
# Use object-oriented methods instead of top-level statements
|
||||||
dotnet_diagnostic.MEN016.severity = silent
|
dotnet_diagnostic.MEN016.severity = silent
|
||||||
|
|
||||||
|
## Microsoft.CodeAnalysis.BannedApiAnalyzers rules
|
||||||
|
|
||||||
|
# Do not use banned APIs
|
||||||
|
dotnet_diagnostic.RS0030.severity = error
|
||||||
|
|
||||||
## StyleCop spacing rules
|
## StyleCop spacing rules
|
||||||
|
|
||||||
# Keywords should be spaced correctly
|
# Keywords should be spaced correctly
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
<PackageVersion Include="Menees.Analyzers" Version="3.2.2" />
|
<PackageVersion Include="Menees.Analyzers" Version="3.2.2" />
|
||||||
<PackageVersion Include="Meziantou.Analyzer" Version="2.0.159" />
|
<PackageVersion Include="Meziantou.Analyzer" Version="2.0.159" />
|
||||||
<PackageVersion Include="Microsoft.Bcl.HashCode" Version="1.1.1" />
|
<PackageVersion Include="Microsoft.Bcl.HashCode" Version="1.1.1" />
|
||||||
|
<PackageVersion Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" Version="3.3.4" />
|
||||||
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.8.0" />
|
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.8.0" />
|
||||||
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.8.0" />
|
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.8.0" />
|
||||||
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Analyzer.Testing" Version="1.1.2" />
|
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Analyzer.Testing" Version="1.1.2" />
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
M:System.Convert.ToByte(System.String);use byte.{Try,}Parse
|
||||||
|
M:System.Convert.ToDecimal(System.String);use decimal.{Try,}Parse
|
||||||
|
M:System.Convert.ToDouble(System.String);use double.{Try,}Parse
|
||||||
|
M:System.Convert.ToInt16(System.String);use short.{Try,}Parse
|
||||||
|
M:System.Convert.ToInt32(System.String);use int.{Try,}Parse
|
||||||
|
M:System.Convert.ToInt64(System.String);use long.{Try,}Parse
|
||||||
|
M:System.Convert.ToSByte(System.String);use sbyte.{Try,}Parse
|
||||||
|
M:System.Convert.ToSingle(System.String);use float.{Try,}Parse
|
||||||
|
M:System.Convert.ToUInt16(System.String);use ushort.{Try,}Parse
|
||||||
|
M:System.Convert.ToUInt32(System.String);use uint.{Try,}Parse
|
||||||
|
M:System.Convert.ToUInt64(System.String);use ulong.{Try,}Parse
|
|
@ -48,8 +48,8 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
if (Header.TryGetValue(HeaderKeys.CycleCount, out var numCyclesStr) && Header.TryGetValue(HeaderKeys.ClockRate, out var clockRateStr))
|
if (Header.TryGetValue(HeaderKeys.CycleCount, out var numCyclesStr) && Header.TryGetValue(HeaderKeys.ClockRate, out var clockRateStr))
|
||||||
{
|
{
|
||||||
var numCycles = Convert.ToUInt64(numCyclesStr);
|
var numCycles = ulong.Parse(numCyclesStr);
|
||||||
var clockRate = Convert.ToDouble(clockRateStr, CultureInfo.InvariantCulture);
|
var clockRate = double.Parse(clockRateStr, CultureInfo.InvariantCulture);
|
||||||
numSeconds = numCycles / clockRate;
|
numSeconds = numCycles / clockRate;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -68,8 +68,10 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
if (SystemID == VSystemID.Raw.Arcade && Header.TryGetValue(HeaderKeys.VsyncAttoseconds, out var vsyncAttoStr))
|
if (SystemID == VSystemID.Raw.Arcade && Header.TryGetValue(HeaderKeys.VsyncAttoseconds, out var vsyncAttoStr))
|
||||||
{
|
{
|
||||||
const decimal attosInSec = 1000000000000000000;
|
const decimal attosInSec = 1_000_000_000_000_000_000.0M;
|
||||||
return (double)(attosInSec / Convert.ToUInt64(vsyncAttoStr));
|
var m = attosInSec;
|
||||||
|
m /= ulong.Parse(vsyncAttoStr);
|
||||||
|
return checked((double) m);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -422,7 +422,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case HeaderKeys.VsyncAttoseconds:
|
case HeaderKeys.VsyncAttoseconds:
|
||||||
if (_emulator is MAME mame && mame.VsyncAttoseconds != Convert.ToInt64(v))
|
if (_emulator is MAME mame && mame.VsyncAttoseconds != long.Parse(v))
|
||||||
{
|
{
|
||||||
item.BackColor = Color.Pink;
|
item.BackColor = Color.Pink;
|
||||||
item.ToolTipText = $"Expected: {v}\n Actual: {mame.VsyncAttoseconds}";
|
item.ToolTipText = $"Expected: {v}\n Actual: {mame.VsyncAttoseconds}";
|
||||||
|
|
|
@ -110,7 +110,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_values[PatternList.SelectedIndex] = ValueNum.Value.ToString(NumberFormatInfo.InvariantInfo);
|
_values[PatternList.SelectedIndex] = unchecked((int) ValueNum.Value).ToString(NumberFormatInfo.InvariantInfo);
|
||||||
UpdatePattern();
|
UpdatePattern();
|
||||||
UpdateDisplay();
|
UpdateDisplay();
|
||||||
}
|
}
|
||||||
|
@ -217,7 +217,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
|
|
||||||
LagBox.Checked = _tastudio.AxisPatterns[index].SkipsLag;
|
LagBox.Checked = _tastudio.AxisPatterns[index].SkipsLag;
|
||||||
ValueNum.Value = Convert.ToDecimal(_values[PatternList.SelectedIndex]);
|
ValueNum.Value = int.Parse(_values[PatternList.SelectedIndex]);
|
||||||
CountNum.Value = _counts[PatternList.SelectedIndex];
|
CountNum.Value = _counts[PatternList.SelectedIndex];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -267,7 +267,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
for (int c = 0; c < _counts[i]; c++)
|
for (int c = 0; c < _counts[i]; c++)
|
||||||
{
|
{
|
||||||
p.Add((int) Convert.ToSingle(_values[i]));
|
p.Add(int.Parse(_values[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1323,14 +1323,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
|
|
||||||
_axisTypedValue = _axisTypedValue.Substring(startIndex: 0, length: _axisTypedValue.Length - 1); // drop last char
|
_axisTypedValue = _axisTypedValue.Substring(startIndex: 0, length: _axisTypedValue.Length - 1); // drop last char
|
||||||
if (_axisTypedValue == "" || _axisTypedValue == "-")
|
if (!float.TryParse(_axisTypedValue, out value)) value = 0.0f;
|
||||||
{
|
|
||||||
value = 0f;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
value = Convert.ToSingle(_axisTypedValue);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (e.KeyCode == Keys.Enter)
|
else if (e.KeyCode == Keys.Enter)
|
||||||
{
|
{
|
||||||
|
|
|
@ -241,6 +241,8 @@ namespace BizHawk.Emulation.Cores.Components.FairchildF8
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private const string PFX_SCRATCHPAD_REG = "SPR";
|
||||||
|
|
||||||
public IDictionary<string, RegisterValue> GetCpuFlagsAndRegisters()
|
public IDictionary<string, RegisterValue> GetCpuFlagsAndRegisters()
|
||||||
{
|
{
|
||||||
var res = new Dictionary<string, RegisterValue>
|
var res = new Dictionary<string, RegisterValue>
|
||||||
|
@ -266,7 +268,7 @@ namespace BizHawk.Emulation.Cores.Components.FairchildF8
|
||||||
|
|
||||||
for (int i = 0; i < 64; i++)
|
for (int i = 0; i < 64; i++)
|
||||||
{
|
{
|
||||||
res.Add("SPR" + i, Regs[i]);
|
res.Add(PFX_SCRATCHPAD_REG + i, Regs[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
@ -274,9 +276,9 @@ namespace BizHawk.Emulation.Cores.Components.FairchildF8
|
||||||
|
|
||||||
public void SetCpuRegister(string register, int value)
|
public void SetCpuRegister(string register, int value)
|
||||||
{
|
{
|
||||||
if (register.StartsWithOrdinal("SPR"))
|
if (register.StartsWithOrdinal(PFX_SCRATCHPAD_REG))
|
||||||
{
|
{
|
||||||
var reg = Convert.ToInt32(register.Replace("SPR", ""));
|
var reg = int.Parse(register.Substring(startIndex: PFX_SCRATCHPAD_REG.Length));
|
||||||
|
|
||||||
if (reg > 63)
|
if (reg > 63)
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,7 +18,9 @@
|
||||||
<RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild>
|
<RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" PrivateAssets="all" />
|
||||||
<Analyzer Include="$(MSBuildProjectDirectory)/../../References/BizHawk.SrcGen.ReflectionCache.dll" />
|
<Analyzer Include="$(MSBuildProjectDirectory)/../../References/BizHawk.SrcGen.ReflectionCache.dll" />
|
||||||
|
<AdditionalFiles Include="$(MSBuildThisFileDirectory)/BannedSymbols.BannedApiAnalyzers.txt" />
|
||||||
<Using Include="System" />
|
<Using Include="System" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Condition=" '$(Configuration)' != 'Debug' ">
|
<ItemGroup Condition=" '$(Configuration)' != 'Debug' ">
|
||||||
|
|
Loading…
Reference in New Issue