Narzędzia przestrzeni roboczej

Problemy

Każdy projekt ma już narzędzie, które powie, co jest z nim nie tak — tsc, dart analyze, ESLint, Clippy, go vet, Ruff. Żadne z nich nie powie, czy to twój diff dołożył czterdzieści ostrzeżeń, które właśnie wypisało. Gitcito wie, które pliki są brudne, więc ta sama lista odpowiada na to jednym przełącznikiem.

Panel Problemy i licznik na pasku stanu

Pasek stanu niesie licznik — błędy, ostrzeżenia, informacje: trzy liczby, których czytania VS Code nauczył wszystkich. Kliknij (albo Problemy w palecie poleceń), a panel otworzy się na dole, pogrupowany po plikach. Kliknięcie wiersza otwiera plik w tym miejscu. Przed pierwszym przebiegiem pokazuje myślniki zamiast zer: nikt jeszcze nie patrzył, a trzy zera twierdziłyby co innego.

Co uruchamia

Jeśli repozytorium ma Gitcito uruchamia
pubspec.yaml dart analyze --format=machine
tsconfig.json tsc --noEmit
konfigurację ESLint eslint -f json
Cargo.toml cargo clippy --message-format=short
go.mod go vet ./...
pyproject.toml lub ruff.toml ruff check --output-format=json

Flutter mieści się w wierszu Darta: aplikacja Flutter to projekt Dart, a flutter analyze woła ten sam analizator co dart analyze.

Projekt nie musi leżeć w katalogu głównym. Te znaczniki są szukane także kilka poziomów niżej, więc aplikacja Flutter w mobile/ albo pakiet w apps/web zostanie znaleziony, a każdy analizator uruchomi się w katalogu własnego projektu. Zagnieżdżony projekt tego samego rodzaju jest pomijany, gdy przodek już go obejmuje — dokładnie to mówi tsconfig.json w katalogu głównym — a przebieg zatrzymuje się na dwunastu projektach, bo monorepo nie powinno uruchamiać pięćdziesięciu kompilatorów.

Binarka z node_modules/.bin wygrywa z tą z PATH — dokładnie tak, jak rozwiązują to skrypty projektu. Wszystko biegnie równolegle, a wyjście każdego narzędzia trafia do jednej postaci, bez duplikatów i posortowane: dwa analizatory zgłaszające ten sam wiersz dają jeden wiersz.

Nic nie startuje samo. tsc --noEmit w dużym repozytorium to dziesiątki sekund, a te polecenia to łańcuch narzędzi repozytorium, nie Gitcito. Ruszają, gdy otworzysz panel albo naciśniesz odświeżenie — nigdy z własnej woli. Dlatego lista jest zdjęciem chwili: zmień plik, a będzie nieaktualna do kolejnego uruchomienia.

Ustawienia → Ogólne → Analizatory kodu decydują, jak bardzo się spieszy: przebieg przy otwarciu panelu (domyślnie), tylko po naciśnięciu odświeżenia, albo wyłączone — co całkowicie ukrywa połowę z analizatorami, jej licznik na pasku stanu i jej polecenie.

Wynik builda odpada. Narzędzie wycelowane w katalog główny projektu sprawdza wszystko, co znajdzie, a znajduje też .next/build/chunks, spakowany dist, wciągniętą kopię — setki uwag o kodzie napisanym przez maszynę, które zasypują tę garstkę o twoim. Gitcito pyta gita, które pliki są ignorowane, i te odrzuca, ale nigdy pliku śledzonego: commitowanie wyniku builda to decyzja, którą git check-ignore szanuje. node_modules leci tak czy siak.

Tylko to, co zmieniłeś

Przełącznik w nagłówku odrzuca każdy problem w pliku, którego nie tknąłeś. To widok, który warto trzymać otwarty: płaska lista wszystkich ostrzeżeń w kodzie w tydzień staje się tapetą, a "czy dołożył je ten diff" to pytanie, na które warto odpowiedzieć przed commitem.

Plakietki ważności też filtrują. Zgaszone znaczą pokaż wszystko; zapalenie jednej zawęża do niej.

Ograniczenia

  • Bez serwera języka. To przebieg, nie demon: żadnych falek w trakcie pisania, żadnych wyników, zanim poprosisz.
  • Brakujące narzędzie jest nazwane, nie ukryte. Stopka mówi, czego nie dało się uruchomić, bo pusta lista bez wyjaśnienia jest gorsza niż krótka z powodem.
  • Rozumiane jest tylko wyjście maszynowe. Każdy analizator czytany jest z udokumentowanego formatu maszynowego; narzędzie ustawione na coś innego jest tu niewidoczne.
  • Pięć tysięcy problemów to limit. Powyżej panel to mówi i przestaje — repozytorium w takim stanie ma większy problem niż pasek przewijania.

Zobacz też: Lokalne CI · Wbudowany terminal

Popraw to tłumaczenie w serwisie GitHub