Wykluczenia wzorców plików
Lista wzorców glob (*, **, ?, bez rozróżniania wielkości liter). Pliki pasujące do któregokolwiek wzorca są pomijane przy wyliczaniu Kalorii i Linii, na przykład pliki lockfile albo katalogi wygenerowane automatycznie.
Obowiązują trzy limity:
| Limit | Wartość |
|---|---|
| Liczba wzorców | do 100 |
| Długość jednego wzorca | do 200 znaków |
| Znaki wieloznaczne w jednym wzorcu | do 10 |
Limit znaków wieloznacznych wyczerpuje się szybko przy głęboko zagnieżdżonych ścieżkach. Wzorzec z wieloma segmentami ** szybko go wyczerpuje, a wtedy prościej wykluczyć katalog nadrzędny niż budować precyzyjną ścieżkę.
Co warto wykluczyć
Q247 nie stosuje żadnych wykluczeń domyślnie, więc na start liczą się wszystkie pliki. Poniższe grupy to propozycja do przejrzenia z zespołem: łączy je to, że zmiana w takim pliku nie odpowiada pracy programisty, a bywa duża i podbija Kalorie oraz Linie.
Pliki blokad zależności. Powstają w całości z polecenia narzędzia i przy jednej aktualizacji zmieniają tysiące linii.
**/package-lock.json
**/yarn.lock
**/pnpm-lock.yaml
**/composer.lock
**/Gemfile.lock
**/poetry.lock
**/go.sum
**/Podfile.lock
Kod generowany automatycznie. Typowe przy generatorach klientów API, ORM-ach i kompilatorach schematów.
**/generated/**
**/*.g.dart
**/*.freezed.dart
**/*.pb.go
**/*_pb2.py
**/*.designer.cs
Pliki projektowe i wytwórcze aplikacji mobilnych. W projektach iOS i Android są utrzymywane przez środowisko, a nie pisane ręcznie.
**/*.pbxproj
**/*.xcworkspacedata
**/R.java
**/*.iml
Zależności trzymane w repozytorium. Katalogi z cudzym kodem, wersjonowanym razem z własnym.
**/node_modules/**
**/vendor/**
**/Pods/**
**/third_party/**
Wyniki budowania i pliki minifikowane. Są pochodną kodu źródłowego, więc liczone byłyby po dwa razy.
**/dist/**
**/build/**
**/*.min.js
**/*.min.css
**/*.map
Duże pliki danych i migawki testowe. Bywają zapisywane jednym poleceniem i mają rozmiar nieproporcjonalny do wysiłku.
**/*.snap
**/fixtures/**
**/testdata/**
Pliki konfiguracyjne to dwa różne przypadki. Konfiguracja pisana ręcznie, jak manifesty Kubernetesa, definicje pipeline'ów CI albo pliki Terraform, jest realną pracą inżynierską i wykluczanie jej zaniża wynik osób odpowiedzialnych za infrastrukturę.
Wykluczaj więc konfigurację generowaną albo synchronizowaną maszynowo, na przykład wyeksportowane definicje dashboardów, zrzuty ustawień narzędzi czy pliki .env.example uzupełniane skryptem.
Zacznij od kilku wzorców, które w danym repozytorium generują najwięcej szumu, i dopisuj kolejne po obejrzeniu wyników. Każda zmiana listy przelicza historię, dlatego kilka trafnych wzorców daje lepszy efekt niż kilkadziesiąt dobranych na wyczucie.
Dodanie albo usunięcie wzorca nie wpływa tylko na przyszłość: przelicza też wcześniej zebrane dane. Na dużej organizacji to może chwilę potrwać.
Zobacz też
- Kalorie, Przyrosty i Linie: metryki liczone z plików objętych analizą
- Wykluczanie commitów: wykluczanie całych commitów, nie pojedynczych plików
- Widoczność przyrostów: próg Kalorii dla pojedynczego przyrostu