Ostatnio natrafiłem na narzędzie snitch (tak naprawdę to dostałem info o nim w jednym newsleterze). Moim zdaniem może przydać się w dużym projekcie lub w jakimś CI (tego drugiego do końca pewny nie jestem 😀 ). Snitch analizuje projekt pod kątem zgodności bibliotek oraz tego czy gdzieś nie duplikujemy tej samej biblioteki. Tak wiem, to samo można zrobić np. w sonarze. Ale życie jest lepsze jak mamy coś do wyboru 😉
Nie będę wrzucał kodu do githuba, bo ciężko nazwać go projektem 🙂 Sprawdziłem tą bibliotekę w następujący sposób: mam 3 projekty:
- MainApp
- FirstProject
- SecondProject
MainApp ma referencję do FirstProject, który ma do SecondProject. Do wszystkich projektów dodałem Serilog ale w SecondProject w innej wersji niż w dwóch pozostałych projektach. Czyli pliki csproj wyglądają następująco:
Exe net6.0 enable enable
net6.0 enable enable
net6.0 enable enable
Snitch instalujemy w następujący sposób:
dotnet tool install -g snitch
Po zainstalowaniu w katalogu solucji uruchamiam narzędzie poleceniem:
snitch
A oto wynik:
Czyli możemy usunąć Serilog z MainApp oraz FirstApp. Ale czy tylko dlatego, że były inne wersje 🤔 Nie 😁 Po zmianie wersji Serilog na 2.12.0 w SecondProject mamy taki wynik:
Moim zdaniem narzędzie może być pomocne. Pierwsze co mi przyszło do głowy to sytuacja gdy przejmujemy jakiś stary projekt i możemy zacząć od szybkiego posprzątania, które zajmie 5 min (wiadomo dla PMa inny czas 😁).
Dla niedowiarków: po usunięciu Serilog z MainApp i FirstProject mamy taki wynik: (mam nadzieję, że Ty tego już nie czytasz 😁)