Skip to content

spectresystems/snitch

Repository files navigation

Snitch

NuGet Status

A tool that help you find transitive package references that can be removed.

Example

> snitch --tfm net462

Results in:

Analyzing...
Analyzing Snitch.Tests.Fixtures.sln
Analyzing Foo...
Analyzing Bar...
Analyzing Baz...
Analyzing Qux...
Analyzing Zap...
Analyzing Quux...
Analyzing Quuux...
Analyzing Thud...
Analyzing Thuuud...

╭─────────────────────────────────────────────────────────────────╮
│  Packages that can be removed from Bar:                         │
│ ┌──────────────────────┬──────────────────────────────────────┐ │
│ │ Package              │ Referenced by                        │ │
│ ├──────────────────────┼──────────────────────────────────────┤ │
│ │ Autofac              │ Foo                                  │ │
│ └──────────────────────┴──────────────────────────────────────┘ │
│                                                                 │
│  Packages that can be removed from Baz:                         │
│ ┌──────────────────────┬──────────────────────────────────────┐ │
│ │ Package              │ Referenced by                        │ │
│ ├──────────────────────┼──────────────────────────────────────┤ │
│ │ Autofac              │ Foo                                  │ │
│ └──────────────────────┴──────────────────────────────────────┘ │
│                                                                 │
│  Packages that might be removed from Qux:                       │
│ ┌───────────┬───────────┬─────────────────────────────────────┐ │
│ │ Package   │ Version   │ Reason                              │ │
│ ├───────────┼───────────┼─────────────────────────────────────┤ │
│ │ Autofac   │ 4.9.3     │ Downgraded from 4.9.4 in Foo        │ │
│ └───────────┴───────────┴─────────────────────────────────────┘ │
│                                                                 │
│  Packages that might be removed from Zap:                       │
│ ┌──────────────────┬──────────┬───────────────────────────────┐ │
│ │ Package          │ Version  │ Reason                        │ │
│ ├──────────────────┼──────────┼───────────────────────────────┤ │
│ │ Newtonsoft.Json  │ 12.0.3   │ Updated from 12.0.1 in Foo    │ │
│ │ Autofac          │ 4.9.3    │ Downgraded from 4.9.4 in Foo  │ │
│ └──────────────────┴──────────┴───────────────────────────────┘ │
│                                                                 │
│  Packages that might be removed from Thuuud:                    │
│ ┌─────────────────┬──────────────┬────────────────────────────┐ │
│ │ Package         │ Version      │ Reason                     │ │
│ ├─────────────────┼──────────────┼────────────────────────────┤ │
│ │ Newtonsoft.Json │ 13.0.2-beta2 │ Updated from 12.0.1 in Foo │ │
│ └─────────────────┴──────────────┴────────────────────────────┘ │
╰─────────────────────────────────────────────────────────────────╯

snippet source | anchor

Installation

> dotnet tool install -g snitch

Usage

Examine a specific project or solution using the first built target framework.

> snitch MyProject.csproj

Examine a specific project using a specific target framework moniker.

> snitch MyProject.csproj --tfm net462

Examine a specific project using a specific target framework moniker and return exit code 0 only if there was no transitive package collisions. Useful for continuous integration.

> snitch MyProject.csproj --tfm net462 --strict

Examine a specific project using a specific target framework moniker and make sure that the packages Foo and Bar are excluded from the result.

> snitch MyProject.csproj --tfm net462 --exclude Foo --exclude Bar

Examine a specific project using a specific target framework moniker and exclude the project OtherProject from analysis.

> snitch MyProject.csproj --tfm net462 --skip OtherProject

Examine a specific project or solution to make sure there are no pre-release package references.

> snitch MyProject.csproj --no-prerelease

Building Snitch from source

> dotnet tool restore
> dotnet cake

Icon

Hollow designed by Ben Davis from The Noun Project.

About

A tool that help you find duplicate transitive package references.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages