Swallow.Refactor.Execution
3.1.0
dotnet add package Swallow.Refactor.Execution --version 3.1.0
NuGet\Install-Package Swallow.Refactor.Execution -Version 3.1.0
<PackageReference Include="Swallow.Refactor.Execution" Version="3.1.0" />
paket add Swallow.Refactor.Execution --version 3.1.0
#r "nuget: Swallow.Refactor.Execution, 3.1.0"
// Install Swallow.Refactor.Execution as a Cake Addin #addin nuget:?package=Swallow.Refactor.Execution&version=3.1.0 // Install Swallow.Refactor.Execution as a Cake Tool #tool nuget:?package=Swallow.Refactor.Execution&version=3.1.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
Note for users of just
If you've got just installed, you can use just install
, just uninstall
or just reinstall
!
Take a look at the justfile, there're some neat things for you.
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 IDocumentRewriter
s or ITargetedRewriter
s.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. |
-
net8.0
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.1)
- Spectre.Console (>= 0.49.0)
- Spectre.Console.Cli (>= 0.49.0)
- Swallow.Refactor.Abstractions (>= 3.1.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Swallow.Refactor.Execution:
Package | Downloads |
---|---|
Swallow.Refactor.Testing
A tool to automatically refactor large swaths of code - the natural continuation of "doing it all by hand" and "tinkering with regexes". You can define a rewriting process and have it executed on many files in a solution - repeatable, testable, predictable. |
GitHub repositories
This package is not used by any popular GitHub repositories.
See RELEASE_NOTES.md for release notes