Emik.Analyzers.Matches
1.3.2
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Emik.Analyzers.Matches --version 1.3.2
NuGet\Install-Package Emik.Analyzers.Matches -Version 1.3.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Emik.Analyzers.Matches" Version="1.3.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Emik.Analyzers.Matches" Version="1.3.2" />
<PackageReference Include="Emik.Analyzers.Matches" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Emik.Analyzers.Matches --version 1.3.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Emik.Analyzers.Matches, 1.3.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Emik.Analyzers.Matches@1.3.2
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Emik.Analyzers.Matches&version=1.3.2
#tool nuget:?package=Emik.Analyzers.Matches&version=1.3.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Emik.Analyzers.Matches
Analyzer for compile-time parameter validation with the power of regex.
This project has a dependency to Emik.Morsels, if you are building this project, refer to its README first.
Example
[StringSyntax(StringSyntaxAttribute.Regex)]
const string ValidatorQuery = @"^\d{2}$";
[GeneratedRegex(ValidatorQuery)]
partial Regex Validator();
byte? Test([Emik.Match(ValidatorQuery)] string x)
{
if (!Validator().IsMatch(out var capture)) // OK
return null;
if (!Validator().IsMatch(out _, out var captureThatDoesNotExist)) // Error
return null;
if (!new Regex(x).IsMatch(out _)) // Warning: Not a constant
return null;
return byte.Parse(capture);
}
string TestTyped(X x) => x.Value;
record X(string Value)
{
public static implicit operator X([Match(@"^\w{3}$")] string value) => new(value);
}
Test("12"); // OK
Test("34"); // OK
TestTyped("foo"); // OK
TestTyped("bar"); // OK
Test("1"); // Error
Test("foobar"); // Error
TestTyped("12"); // Error
TestTyped("food"); // Error
Test(bool.FalseString); // Warning: Not a constant
TestTyped(bool.TrueString); // Warning: Not a constant
Lints
| Id | Title |
|---|---|
| EAM001 | Argument fails regex test |
| EAM002 | Non-constant argument may fail regex test |
| EAM003 | Argument regex test took too long |
| EAM004 | Capture group doesn't exist |
| EAM005 | Missing out declaration for capture group |
| EAM006 | Non-constant Regex may have wrong number of capture groups |
Contribute
Issues and pull requests are welcome to help this repository be the best it can be.
License
This repository falls under the MPL-2 license.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.