Skip to content

Latest commit

 

History

History
80 lines (60 loc) · 1.97 KB

File metadata and controls

80 lines (60 loc) · 1.97 KB

Nuget

CSharpFunctionalExtensions.Analyzers

Unofficial code analyzers for CSharpFunctionalExtensions. This project aims to provide code analyzers to identify potential issues or misuse of the Result object from the CSharpFunctionalExtensions library.

Features

  • Identifies scenarios where the IsSuccess property is not checked before accessing the Value.
  • Verifies that logic is terminated when IsFailure is true before before accessing the Value.
  • Supports a variety of control flow structures, including if statements, ternary operators, and now C# switch expressions.

Getting Started

To install the analyzers, you can add the NuGet package to your project:

Install-Package CSharpFunctionalExtensions.Analyzers

Examples

Here are some examples to show what this analyzer can catch.

Example 1: Accessing Value without checking IsSuccess

public void DoSomething(Result<int> result)
{
    var x = result.Value;  // Analyzer will report a warning here
}

Example 2: Using IsSuccess in Switch Expressions

public IActionResult ProcessResult(Result<int> result)
{
    return result switch
    {
        { Error: var err } when err == Error.NotFound => NotFound(),
        _ => Ok(result.Value)  // Analyzer will report a warning here
    };
}

Example 3: Not breaking out when IsFailure is true

public void DoSomething(Result<int> result)
{
    if (result.IsFailure)
    {
        // logic here
    }
    var x= result.Value; // Analyzer will report a warning here
}

Will be fixed if you return ;

public void DoSomething(Result<int> result)
{
   if (result.IsFailure)
   {
       return
   }
   var x= result.Value; // Analyzer will report a warning here
}

Changelog

See changelog

Contributing

Contributions are welcome! Please feel free to open an issue or submit a pull request.

License

MIT