/snitch

A tool that help you find duplicate transitive package references.

Primary LanguageC#MIT LicenseMIT

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...

╭──────────────────────────────────────────────────────────────╮
│  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 │ │
│ └─────────────────┴─────────┴──────────────────────────────┘ │
╰──────────────────────────────────────────────────────────────╯

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

Building Snitch from source

> dotnet tool restore
> dotnet cake

Icon

Hollow designed by Ben Davis from The Noun Project.