Skip to content

Commit

Permalink
add roslyn and fix some hints
Browse files Browse the repository at this point in the history
  • Loading branch information
BenjaminAbt committed Apr 1, 2024
1 parent ad5f764 commit 8b4a76b
Show file tree
Hide file tree
Showing 15 changed files with 159 additions and 55 deletions.
22 changes: 18 additions & 4 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>

<ItemGroup Label=".NET Dependencies">
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" />
<PackageVersion Include="NaughtyStrings" Version="2.4.1" />
</ItemGroup>

<ItemGroup Label="Libraries for comparison">
<PackageVersion Include="UAParser" Version="3.1.47" />
<PackageVersion Include="DeviceDetector.NET" Version="6.3.3" />
<PackageVersion Include="Ng.UserAgentService" Version="3.0.0" />
</ItemGroup>

<ItemGroup Label="Tests / Performance">
<PackageVersion Include="BenchmarkDotNet" Version="0.13.12" />
<PackageVersion Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.13.12" />
Expand All @@ -37,5 +37,19 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageVersion>
</ItemGroup>


<ItemGroup Label="Roslyn">
<PackageVersion Include="Roslynator.Analyzers" Version="4.12.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageVersion>
<PackageVersion Include="Roslynator.Formatting.Analyzers" Version="4.12.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageVersion>
<PackageVersion Include="Roslynator.CodeAnalysis.Analyzers" Version="4.12.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageVersion>
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,26 @@
<None Include="readme.md" Pack="true" PackagePath="" />
<None Include="LICENSE.txt" Pack="true" PackagePath="" />
</ItemGroup>

<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

<ItemGroup Label="NuGet Roslyn">
<PackageReference Include="Roslynator.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.Formatting.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\MyCSharp.HttpUserAgentParser\MyCSharp.HttpUserAgentParser.csproj" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<Description>HTTP User Agent Parser Extensions for IMemoryCache</Description>
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
</PropertyGroup>

<PropertyGroup Label="Package">
<IsPackable>true</IsPackable>
<PackageReadmeFile>readme.md</PackageReadmeFile>
Expand All @@ -17,11 +17,26 @@
<None Include="LICENSE.txt" Pack="true" PackagePath="" />
</ItemGroup>

<ItemGroup>
<ItemGroup Label="NuGet">
<PackageReference Include="Microsoft.Extensions.Caching.Abstractions" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" />
</ItemGroup>

<ItemGroup Label="NuGet Roslyn">
<PackageReference Include="Roslynator.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.Formatting.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\MyCSharp.HttpUserAgentParser\MyCSharp.HttpUserAgentParser.csproj" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,14 @@ namespace MyCSharp.HttpUserAgentParser.DependencyInjection;
/// <summary>
/// Options for dependency injection
/// </summary>
public class HttpUserAgentParserDependencyInjectionOptions
/// <remarks>
/// Creates a new instance of <see cref="HttpUserAgentParserDependencyInjectionOptions"/>
/// </remarks>
/// <param name="services"></param>
public class HttpUserAgentParserDependencyInjectionOptions(IServiceCollection services)
{
/// <summary>
/// Services container
/// </summary>
public IServiceCollection Services { get; }

/// <summary>
/// Creates a new instance of <see cref="HttpUserAgentParserDependencyInjectionOptions"/>
/// </summary>
/// <param name="services"></param>
public HttpUserAgentParserDependencyInjectionOptions(IServiceCollection services)
{
Services = services;
}
public IServiceCollection Services { get; } = services;
}
2 changes: 0 additions & 2 deletions src/MyCSharp.HttpUserAgentParser/HttpUserAgentInformation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,11 @@ public readonly struct HttpUserAgentInformation
/// </summary>
public string? Name { get; }


/// <summary>
/// Version of Browser or Bot Name of user agent e.g. "79.0", "83.0.125.4"
/// </summary>
public string? Version { get; }


/// <summary>
/// Device Type of user agent, e.g. "Android", "Apple iPhone"
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,23 @@ namespace MyCSharp.HttpUserAgentParser;
/// <summary>
/// Information about the user agent platform
/// </summary>
public readonly struct HttpUserAgentPlatformInformation
/// <remarks>
/// Creates a new instance of <see cref="HttpUserAgentPlatformInformation"/>
/// </remarks>
public readonly struct HttpUserAgentPlatformInformation(Regex regex, string name, HttpUserAgentPlatformType platformType)
{
/// <summary>
/// Regex-pattern that matches this user agent string
/// </summary>
public Regex Regex { get; }
public Regex Regex { get; } = regex;

/// <summary>
/// Name of the platform
/// </summary>
public string Name { get; }
public string Name { get; } = name;

/// <summary>
/// Specific platform type aka family
/// </summary>
public HttpUserAgentPlatformType PlatformType { get; }

/// <summary>
/// Creates a new instance of <see cref="HttpUserAgentPlatformInformation"/>
/// </summary>
public HttpUserAgentPlatformInformation(Regex regex, string name, HttpUserAgentPlatformType platformType)
{
Regex = regex;
Name = name;
PlatformType = platformType;
}
public HttpUserAgentPlatformType PlatformType { get; } = platformType;
}
10 changes: 5 additions & 5 deletions src/MyCSharp.HttpUserAgentParser/HttpUserAgentStatics.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ public static class HttpUserAgentStatics
/// <summary>
/// Platforms
/// </summary>
public static readonly HashSet<HttpUserAgentPlatformInformation> Platforms = new()
{
public static readonly HashSet<HttpUserAgentPlatformInformation> Platforms =
[
new(CreateDefaultPlatformRegex("windows nt 10.0"), "Windows 10", HttpUserAgentPlatformType.Windows),
new(CreateDefaultPlatformRegex("windows nt 6.3"), "Windows 8.1", HttpUserAgentPlatformType.Windows),
new(CreateDefaultPlatformRegex("windows nt 6.2"), "Windows 8", HttpUserAgentPlatformType.Windows),
Expand Down Expand Up @@ -66,7 +66,7 @@ public static class HttpUserAgentStatics
new(CreateDefaultPlatformRegex("gnu"), "GNU/Linux", HttpUserAgentPlatformType.Linux),
new(CreateDefaultPlatformRegex("unix"), "Unknown Unix OS", HttpUserAgentPlatformType.Unix),
new(CreateDefaultPlatformRegex("symbian"), "Symbian OS", HttpUserAgentPlatformType.Symbian),
};
];

/// <summary>
/// Regex defauls for browser mappings
Expand Down Expand Up @@ -211,7 +211,7 @@ public static class HttpUserAgentStatics
/// Robots
/// </summary>
public static readonly (string Key, string Value)[] Robots =
{
[
( "googlebot", "Googlebot" ),
( "googleweblight", "Google Web Light" ),
( "PetalBot", "PetalBot"),
Expand Down Expand Up @@ -254,7 +254,7 @@ public static readonly (string Key, string Value)[] Robots =
( "SEOkicks", "SEOkicks"),
( "seoscanners.net", "SEO Scanners"),
( "Sistrix", "Sistrix" )
};
];

/// <summary>
/// Tools
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,21 @@
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
</ItemGroup>

<ItemGroup Label="NuGet Roslyn">
<PackageReference Include="Roslynator.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.Formatting.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<InternalsVisibleTo Include="MyCSharp.HttpUserAgentParser.UnitTests" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,24 @@
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
</PropertyGroup>

<ItemGroup Label="NuGet Roslyn">
<PackageReference Include="Roslynator.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.Formatting.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />

<PackageReference Include="FluentAssertions" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="NSubstitute" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,22 @@
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
<ItemGroup Label="NuGet Roslyn">
<PackageReference Include="Roslynator.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.Formatting.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup Label="NuGet">
<PackageReference Include="Microsoft.Extensions.Caching.Memory" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,19 @@
<PackageReference Include="Microsoft.NET.Test.Sdk" />
</ItemGroup>

<ItemGroup Label="NuGet Roslyn">
<PackageReference Include="Roslynator.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.Formatting.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ namespace MyCSharp.HttpUserAgentParser.UnitTests.DependencyInjection;

public class UserAgentParserDependencyInjectionOptionsTests
{
private readonly IServiceCollection scMock = Substitute.For<IServiceCollection>();
private readonly IServiceCollection _scMock = Substitute.For<IServiceCollection>();

[Fact]
public void Ctor_Should_Set_Property()
{
HttpUserAgentParserDependencyInjectionOptions options = new(scMock);
HttpUserAgentParserDependencyInjectionOptions options = new(_scMock);

options.Services.Should().BeEquivalentTo(scMock);
options.Services.Should().BeEquivalentTo(_scMock);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ public void Parse(string userAgent)
[InlineData("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Edg/90.0.818.62")]
public void CreateForRobot(string userAgent)
{

HttpUserAgentInformation ua = HttpUserAgentInformation.CreateForRobot(userAgent, "Chrome");

ua.UserAgent.Should().Be(userAgent);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
<ItemGroup Label="NuGet">
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />

<PackageReference Include="FluentAssertions" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="NSubstitute" />
Expand All @@ -22,6 +22,21 @@
</PackageReference>
</ItemGroup>

<ItemGroup Label="NuGet Roslyn">
<PackageReference Include="Roslynator.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="Roslynator.Formatting.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\MyCSharp.HttpUserAgentParser\MyCSharp.HttpUserAgentParser.csproj" />
</ItemGroup>
Expand Down
Loading

0 comments on commit 8b4a76b

Please sign in to comment.