Swallow.Refactor.Core 4.0.0

dotnet add package Swallow.Refactor.Core --version 4.0.0                
NuGet\Install-Package Swallow.Refactor.Core -Version 4.0.0                
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="Swallow.Refactor.Core" Version="4.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Swallow.Refactor.Core --version 4.0.0                
#r "nuget: Swallow.Refactor.Core, 4.0.0"                
#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.
// Install Swallow.Refactor.Core as a Cake Addin
#addin nuget:?package=Swallow.Refactor.Core&version=4.0.0

// Install Swallow.Refactor.Core as a Cake Tool
#tool nuget:?package=Swallow.Refactor.Core&version=4.0.0                

Swallow.Refactor

Refactor goes BRRR!

A tool that was originally designed as a way to enable reliably refactor a big code-base automatically, it has since turned into a generic interface to the Roslyn API to interact with any C# code, be it just reading and analyzing or even modifying.

What's BRRR short for, you ask? Boundless Roslyn Refactoring Runner.

BRRRusage

brrr refactor -s|--solution <solution> code [--filter-name <name>] [--filter-content <content>] <rewriters>

When calling refactor, instead of passing all rewriters via CLI you can instead pass the path to a JSON file. This file must match the following scheme:

{
  "filter": {
    "name": "<some regex>", // A regex that filenames should match, optional
    "content": "<some text>" // A text that files should contain, optional
  },
  "rewriters": [
    { "name": "<some rewriter>" }, // A rewriter without any parameters
    { "name": "<some rewriter>", "parameters": [ "parameter", "parameter" ] } // A rewriter with parameters
  ]
}

To find out what rewriters are available, you can use brrr rewriter list and brrr rewriter describe <rewriter>.

But it doesn't stop there - there's a lot of things you can do. Using brrr asyncify, for example, allows you to turn a chain of calls into async calls automatically, fixing any GetAwaiter().GetResult()-calls along the way.

To see all commands that you can use, run

brrr --help

BRRRinstallation

Building and installing yourself

To install the tool (and thus make it available globally), you can use the following command:

dotnet pack -c Release -o packages/
dotnet tool install --global --no-cache --add-source packages/ Swallow.Refactor

This will make brrr be a globally executable tool. To uninstall it again, you can execute:

dotnet tool uninstall --global Swallow.Refactor

Installing via NuGet

The tool is published on NuGet as well. To install it from there, you can use the following command:

dotnet tool install --global Swallow.Refactor

BRRRlugins

If you want to use your own rewriters, commands, symbol filters, you name it - you can pass your own assemblies to the execution. They will get picked up and the relevant classes are available in all the use-cases as if they were embedded in the program!

Invoking the tool using the -p or --plugin option passing a list of semicolon-separated filepaths will load each assembly.

brrr -p|--plugin SomeAssembly.dll;SomeOtherAssembly.dll list

Using this, you can extend the basic behaviour in many ways, like defining additional commands to be executed or registering additional IDocumentRewriters or ITargetedRewriters.

BRRRackages

Package Description
Swallow.Refactor.Abstractions Common interfaces for all BRRR libraries
Swallow.Refactor.Core The integration with Roslyn, containing rewriters, refactors and other utilities
Swallow.Refactor.Execution Integration library to add custom commands to the tool via plugins
Swallow.Refactor.Testing Helper classes to write tests for refactors, rewriters and other things.
Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
4.0.0 66 11/25/2024
3.1.0 131 4/24/2024
3.0.0 125 1/20/2024
2.1.0 223 10/21/2023
2.0.1 194 7/30/2023
2.0.0 191 6/15/2023
1.0.1 153 6/4/2023
1.0.0 193 4/10/2023