Summary

Ten wyjaśniacz kodu zmienia wklejony fragment w plain-English outline: język, każdą funkcję i to, co sugeruje jej nazwa, wynik złożoności cyklomatycznej oraz flagi takie jak puste bloki catch, wywołania eval i kodowane sekrety. Jest to czytnik oparty na regułach, a nie model języka, więc opisuje strukturę, a nie intencję. Złożoność podąża za miarą McCabe'a, gdzie 10 lub mniej na funkcję to rekomendowany limit. Analiza działa w Twojej przeglądarce i Twój kod nigdy nie jest nigdzie wysyłany.

Wyjaśnianie kodu: Wklej kod, uzyskaj plain-English outline

Darmowy wyjaśniacz kodu czyta fragment w Twojej przeglądarce i zwraca jego funkcje, ścieżki decyzji, obsługę błędów i czerwone flagi, abyś wiedział gdzie szukać zanim przeczytasz linia po linii.

Inżynier czytający nieznany kod na monitorze ze szkicem notatnika funkcji w kółku obok klawiatury

Wyjaśniacz kodu

Wklej funkcję lub krótki plik. Outline aktualizuje się w miarę pisania. Nic nie opuszcza Twojej przeglądarki.

Walkthrough

    Things to check

      Czytanie danych wyjściowych

      Jak używać outline

      1. 1

        Wklej fragment

        Jedna funkcja lub jeden plik sprawdza się najlepiej. Wklejenie kilkaset linii outline przestaje być streszczeniem i staje się listą.

      2. 2

        Sprawdź zdanie wstępne

        Wymienia język, liczy funkcje i daje wynik złożoności. Wynik powyżej 10 oznacza, że kod ma zbyt wiele ścieżek, aby pomieścić się w głowie jednocześnie.

      3. 3

        Przeczytaj przewodnik

        Każda funkcja otrzymuje jedną linię: co sugeruje jej nazwa, jak długa jest, ile ścieżek ma i czy się pętli, czeka czy obsługuje błędy.

      4. 4

        Najpierw otwórz flagi

        Jeśli narzędzie wymienia pusty handler błędu lub ciąg podobny do poświadczenia, zacznij tam. To są linie, które najprawdopodobniej zranią Cię później.

      Jak to działa

      Co naprawdę mierzy wyjaśniacz

      Struktura ze składni

      Usuwa komentarze i ciągi, a następnie dopasowuje definicje funkcji, importy, klasy, pętle i gałęzie dla wykrytego języka. Brak zgadywania na temat tego, do czego jest kod, tylko co zawiera.

      Złożoność, którą możesz sprawdzić

      Wynik to złożoność cyklomatyczna: jeden plus każdy if, pętla, case, catch i operator logiczny. Jest to ta sama liczba, którą dałby ci linter, a raport NIST zaleca utrzymywanie funkcji na poziomie 10 lub poniżej.

      Flagi, które pasują do rzeczywistych błędów

      Wywołania eval lub exec, puste bloki catch, zakodowane sekrety, notatki TODO, zagnieżdżenie powyżej czterech poziomów i funkcje powyżej 40 linii. Każda reguła istnieje, ponieważ wskazuje kod, który jest łatwy do źle odczytania.

      Gdzie się zatrzymuje

      Wyjaśniacz fragmentu odpowiada "co jest tutaj", a nie "dlaczego jest tutaj"

      Pytanie, które zadaje nowy inżynier, rzadko brzmi "co robi ta pętla". To jest "dlaczego serwis rozliczeń wywołuje tę funkcję i kto jeszcze od niej zależy". Wklejony fragment nie może odpowiedzieć na to pytanie, ponieważ odpowiedź znajduje się w innych plikach. To narzędzie jest zbudowane dla pierwszego przejścia: masz otwartą funkcję, masz pięć minut i chcesz wiedzieć, czy to dziesięciolinijowy pomocnik czy splątanina z sześcioma ścieżkami wyjścia. Daje ci to w sekundę i mówi ci, gdzie jest ryzyko. Do drugiego pytania potrzebujesz wyszukiwania na całym repozytorium. To jest luka między czytaniem jednej funkcji a zrozumieniem, jak system jest okablowany, i to gdzie większość czasu wdrażania idzie.

      • Używaj go na jednej funkcji lub pliku, a nie całej usługi
      • Traktuj flagi jako zachęty do bliższego spojrzenia, a nie stwierdzenia
      • Przejdź do wyszukiwania szerokim repozytorium, gdy pytanie dotyczy osób dzwoniących i zależności
      Dwaj inżynierowie przy laptopie, jeden wskazuje linię kodu źródłowego, drugi czyta obok

      Pytania dotyczące wyjaśniacza kodu

      Zrozumieć całe repozytorium, a nie tylko jeden fragment

      codebasechat odpowiada na pytania dotyczące Twojej bazy kodów w zwykłym angielskim, z plikami i witrynami połączeń, które wspierają każdą odpowiedź.