Blog (Polski)

coraz więcej zespołów stosuje lintery i inne narzędzia statyczne w procesie rozwoju. Niektóre integrowały je w preferowanym przez siebie IDE, inne automatyzowały, uruchamiając je jako dodatkowy krok w swoim CI. Ponadto, niektóre biegną w obie strony.

Co to jest linter?

według Wikipedii linter

jest narzędziem, które analizuje kod źródłowy w celu oznaczania błędów programistycznych, błędów, błędów stylistycznych i podejrzanych konstrukcji.,

pierwszy linter został napisany przez Stephena C. Johnsona w 1978 roku podczas pracy w systemie operacyjnym Unix w Bell Labs. Później pojawiło się wiele innych linterów dla różnych celów i języków, nie tylko C.

pierwsze lintery używane do sprawdzania kodu źródłowego i znajdowania potencjalnych optymalizacji dla kompilatorów. Ale z biegiem lat wiele innych kontroli i analiz zostanie uwzględnionych w procesie lintingu.

użycie linterów pomogło również wielu programistom w napisaniu lepszego kodu dla nie skompilowanych języków programowania., Ponieważ nie ma kompilowania błędów czasowych, znajdowania literówek, błędów składniowych, użycia nierejestrowanych zmiennych, wywołań niezdefiniowanych lub przestarzałych funkcji, na przykład, pomagając programistom szybciej naprawiać i zmniejszać błędy przed wykonaniem.

lintery ewoluowały

Lintery ewoluowały. Zaczynali od tych prostych czeków, ale obecnie są coraz bardziej wyrafinowane. Wykonują analizę statyczną, wymuszają flagi konfiguracji, sprawdzają zgodność z danym przewodnikiem po stylach lub regułą bezpieczeństwa i wiele więcej.,

przyjrzyjmy się niektórym z tych sprawdzeń i tym, w jaki sposób mogą one być dla Ciebie przydatne.

analiza statyczna

analiza statyczna oznacza, że automatyczne oprogramowanie działa przez źródło kodu bez jego wykonywania. Statycznie sprawdza potencjalne błędy, wycieki pamięci i wszelkie inne kontrole, które mogą być przydatne.

Jeśli jesteś programistą Pythona, być może znasz już Radona. Może liczyć linie źródłowe kodu (SLOC), linie komentarzy, pustą linię i inne surowe metryki, ale także może obliczyć „indeks Konserwowalności”, który może być bardzo ważny w niektórych projektach.

to tylko przykład., Istnieje wiele innych linterów, które wykonują statyczne kontrole analizy.

darmowy e-book: Kliknij tutaj, aby pobrać darmowy e-book dekodowanie kodu przeglądu i Pull Requests. Uzyskaj wszystkie kluczowe punkty i najlepsze praktyki, aby wdrożyć kulturę przeglądu kodu.

standaryzacja kodu

od https://xkcd.com/1285/

standaryzacja twój kod to świetny sposób na przeniesienie rozmowy na bardziej produktywny poziom., Posiadanie wytycznych i uruchamianie linterów przeciwko bazie kodowej pozwala uniknąć estetycznych zmian w żądaniu pull, takich jak zamiana wszystkich tabulatorów na spacje, wcięcia przypisania zmiennej lub nawet podziałów wierszy po określonej liczbie znaków.

maksymalizacja znaczących zmian przenosi dyskusję na ważne tematy, takie jak decyzje architektoniczne, problemy z bezpieczeństwem lub potencjalne błędy.

przy okazji, problemów z bezpieczeństwem i potencjalnych błędów można również uniknąć przez linterów!

problemy z bezpieczeństwem

Jeśli lubisz Rails, prawdopodobnie słyszałeś o Brakeman., To narzędzie do analizy statycznej. Warto znaleźć potencjalne problemy z bezpieczeństwem. Na przykład, uruchamia sprawdzanie szukania SQL Injection podczas korzystania z ActiveRecord ' s #find_or_create_by I znajomych. Dodaje również kontrole XSS, opcje konfiguracji i wiele więcej.

Ruby nie jest jedynym językiem z takim silnikiem. SourceLevel obsługuje wiele silników dla różnych języków. W tym Brakeman.

potencjalne błędy

JavaScript ma kilka sztuczek. Jednym z najbardziej znanych jest różnica między == I ===., Jest to dobra praktyka i pozwala uniknąć dużo czasu debugowania, aby zawsze używać ===. Jeśli włączysz, na przykład, ESLint, aby to sprawdzić, może Ci powiedzieć, która część kodu używa ==, a nawet zastąpić go za Ciebie.

poprawa wydajności

każdy doświadczony programista wie nie tylko jak ważne jest wykonywanie oprogramowania, ale także wiele sztuczek, które go poprawiają. Problem w tym, że co z nowicjuszami? Jak możesz przekazać tę wiedzę do przodu? Nawet starsi programiści mogą pominąć jedną lub dwie techniki. Dlaczego więc nie pozwolić oprogramowaniu do automatyzacji zrobić tego za Ciebie?,

Czy wiesz, że w CSS uniwersalny selektor (*) może spowolnić czas ładowania strony? Albo że selektory atrybutów niewykwalifikowanych mają takie same właściwości użytkowe jak selektory uniwersalne? Unikanie ich jest dobrą praktyką.

wiele linterów zawiera sprawdzanie wydajności. Mogą dodawać różne rodzaje ulepszeń wydajności dla doświadczonych i początkujących programistów. CSSLint to tylko przykład.

I wiele innych aspektów

do nieskończoności i poza nią!, Istnieje wiele linterów dla różnych języków programowania, plików konfiguracyjnych, a nawet dla integracji oprogramowania. Każda kontrola, która ma znaczenie i może być zautomatyzowana, może przekształcić się w linter.

Jeśli pracujesz w konkretnym scenariuszu, być może będziesz musiał napisać swojego lintera, mimo że nie jest to zbyt prawdopodobne w naszej branży. Sprawdza funkcje dostępności HTML, potencjalne błędy internalizacji, błędy gramatyczne i wiele innych, które już istnieją, open-source, czekając na pobranie, skonfigurowanie i rozpoczęcie użytkowania.

zalety lintingu

wg Ferit T.,, linting poprawia czytelność, usuwa głupie błędy przed wykonaniem i przeglądem kodu. Ale, jak wspomniano, linting może wykonywać bardziej złożone zadania, takie jak wykrywanie zapachów kodu lub wykonywanie statycznej analizy kodu.

ale w praktyce jakie są zalety lintingu?

poprawia poziom dyskusji o przeglądzie kodu

Jeśli twoje żądanie Pull nie ma literówek ani nieużywanych zmiennych i jest zgodne z przewodnikiem po stylach, rozmowa koncentruje się na punkcie architektury. To wszystko., Pull Request to świetne miejsce do wskazywania problemów z wydajnością, luk w zabezpieczeniach lub sugerowania lepszych abstrakcji. Nie musisz wchodzić w dyskusję z pojedynczymi lub podwójnymi cudzysłowami lub tabulatorami. To na pewno wzrost wydajności.

sprawia, że kod wygląda jak napisany przez jedną osobę

w średniej i długiej perspektywie posiadanie wiarygodnej bazy kodu, która wygląda jak napisana przez tę samą osobę, jest doskonałe. Łatwość konserwacji i ewolucja są łatwiejsze, ponieważ każdy ma tendencję do szybszego i bardziej precyzyjnego rozumienia tego, co jest napisane., Zapobiega to błędom, sprawia, że praca jest bardziej radosna dla programistów i przyspiesza czas wprowadzania nowych funkcji na rynek.

wyświetla stan twojego kodu

Czy twój kod jest zdrowy? Nie dowiesz się, dopóki tego nie zmierzysz. Ekscytującym sposobem na to jest dodanie kroku w potoku CI / CD, aby zmierzyć ewolucję stanu zdrowia kodu. Co więcej, możesz podjąć działania tak szybko, jak to możliwe, gdy zobaczysz, że jego zdrowie się rozpada., Takie działania mogą wiązać się z tworzeniem technicznych kart debetowych w tablicy lub nawet podnoszeniem problemu podczas posiedzenia zwinnej retrospektywy lub komitetu architektury.

doświadczeni programiści mogą zajrzeć do Diffa i poruszyć istotne kwestie dotyczące proponowanej zmiany. Prawdopodobnie wiedzą, gdzie szukać: czy nazwy zmiennych są opisami? Ile linii zajmuje metoda? Jest jakaś superklasa?

ale co z nowicjuszami? Wiedza w zespole jest często niejednorodna. Oznacza to, że nie każdy programista wie, co należy przeglądać., Posiadanie lintera, który automatycznie informuje, gdzie zapachy kodu są, jest doskonałym sposobem na rozpowszechnienie tej wiedzy i uczynienie zespołu odpowiedzialnym za zmiany.

jakość nie jest obowiązkiem jednej osoby. Istotne jest mierzenie i kontrola jakości kodu w czasie. W przeciwnym razie kod robi się bałagan, co spowalnia rozwój i czas wprowadzania na rynek.,

kontroluje długi techniczne

ponieważ wiele nowoczesnych linterów szuka możliwych długów technicznych, takich jak zapachy kodu, niedopasowania stylów lub źle zaprojektowany kod (Głębokie łańcuchyif wypowiedzi lub zbyt skomplikowane metody, na przykład), linters koreluje z długiem technicznym.

dokonywanie długów technicznych podczas procesu weryfikacji kodu pomaga programistom lub inżynierom wykryć, omówić i naprawić je przed połączeniem zmaster. Jest to bardzo wygodna praktyka, która kontroluje techniczne wkładki długów.,

zautomatyzuj przeglądanie kodu: SourceLevel obsługuje +30 linterów, aby pomóc Ci poprawić jakość kodu. Kliknij tutaj, aby zobaczyć demo lub rozpocząć bezpłatny okres próbny.

przykłady linterów

istnieje ogromna liczba linterów. W zależności od języka programowania istnieje nawet więcej niż jeden Linter dla każdego zadania. Na przykład dla języka programowania Go istnieją ktlint i detekt. Obaj wykonują podobną pracę. To samo dzieje się z eslint, linterem przeznaczonym dla JavaScript. Działa bardzo podobnie do tslint lub jshint.,

Linters koncentruje się na bezpieczeństwie

  • Brakeman for Ruby
  • Bandit for Python
  • Node Security for JavaScript

Linters koncentruje się na Przewodniku po stylach i konwencjach kodowania

  • CSSLint., SCSS Lint i Sass Lint dla kaskadowego arkusza stylów
  • Gofmt dla języka Go
  • Swiftlint dla języka Switft
  • rustfmt dla języka Rust
  • Credo dla Elixir

Linters dla analizy statycznej

  • pep8 dla Pythona
  • Phan lub PHP Mess Detector dla PHP
  • kibit dla Clojure, ClojureScript, Cljx i inne warianty Clojure.
  • PMD for Java

podsumowanie

Lintery pomagają zwiększyć produktywność i zaoszczędzić czas i pieniądze. Napędzają one twój zespół do podejmowania lepszych decyzji (tych zorientowanych na dane) i współwłasności nad jakością.,

w SourceLevel Obsługujemy wiele linterów. Uruchamiają się one z każdym otwartym żądaniem pull i komentują właściwą linię I zapisują znalezione problemy. Zwiększa produktywność i efektywność deweloperów.

nazywamy to automatyzacją przeglądu kodu. Każde repozytorium może mieć swój plik konfiguracyjny, a następnie przeglądać żądania pull zgodnie z wybranymi regułami przewodnika po stylach.

Share

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *