stále více a Více týmů přijali lintry a další statické nástroje v procesu jejich rozvoje. Někteří je integrovali do IDE svých preferencí, jiní je automatizovali spuštěním jako další krok v jejich CI. Také některé běží oběma směry.
co je tedy linter?
Podle Wikipedie, linter,
je nástroj, který analyzuje zdrojový kód vlajky programování, chyby, chyby, stylistické chyby, a podezřelé konstrukce.,
první linter napsal Stephen C. Johnson v roce 1978 při práci v operačním systému Unix v Bell Labs. Po tom, mnoho dalších lintr se objevily pro různé účely a jazyky, a to nejen C.
první lintr použita pro kontrolu zdrojového kódu a najít potenciální optimalizace pro kompilátory. V průběhu let by však do procesu lintingu bylo zahrnuto mnoho dalších kontrol a analýz.
použití linterů také pomohlo mnoha vývojářům psát lepší kód pro nekompilované programovací jazyky., Jak tam není kompilace time chyby, najít překlepy, chyby syntaxe, použití nedeklarované proměnné, volání nedefinované nebo zastaralé funkce, například, pomáhá vývojářům opravit rychleji, a snížit chyby před popravou.
Lintery se vyvinuly
Lintery se vyvinuly. Začali s těmito jednoduchými kontrolami, ale v dnešní době jsou stále sofistikovanější. Provádějí statickou analýzu, vynucují konfigurační příznaky, kontrolují soulad s daným stylem nebo bezpečnostním pravidlem a mnohem více.,
pojďme prozkoumat některé z těchto kontrol a jak mohou být užitečné pro vás.
statická analýza
statická analýza znamená, že automatizovaný software běží přes zdroj kódu bez jeho spuštění. Staticky kontroluje potenciální chyby, úniky paměti a jakoukoli jinou kontrolu, která může být užitečná.
Pokud jste vývojář Pythonu, možná už znáte Radon. Může počítat zdrojové řádky kódu (SLOC), řádky komentářů, prázdný řádek a další syrové metriky, ale také může vypočítat „Index udržovatelnosti“, což může být v některých projektech velmi důležité.
to je jen příklad., Existuje spousta dalších linters, které provádějí statické analýzy kontroly.
Zdarma E-knihy: Klikněte sem a stáhněte si zdarma e-book Dekódování Kódu Přezkum a Žádosti o stažení. Získejte všechny klíčové body a osvědčené postupy pro implementaci kultury kontroly kódu.
Kód standardizaci
https://xkcd.com/1285/
Standardizace kódu je skvělý způsob, jak přesunout konverzaci k více produktivní úrovni., S vodítkem a běží lintr proti codebase vyhýbá estetické změny v vaše žádost vytáhnout, nahradit všechny tabulátory na mezery, odsazení proměnné, přiřazení, nebo dokonce zalomení řádku po daný počet znaků.
maximalizace smysluplných změn vede vaši diskusi k tématům, na kterých záleží, jako jsou architektonická rozhodnutí, bezpečnostní problémy nebo potenciální chyby.
mimochodem, bezpečnostní problémy a potenciální chyby lze také vyhnout linters!
bezpečnostní problémy
Pokud jste na kolejích, pravděpodobně jste slyšeli o Brakeman., Je to bezpečnostní nástroj statické analýzy. Je výhodné najít potenciální bezpečnostní problémy. Například, to běží kontroly hledají SQL injekce při použití ActiveRecord je #find_or_create_by
a přátelé. Přidává také kontroly pro XSS, možnosti konfigurace a mnoho dalšího.
Ruby není jediný jazyk s tímto druhem motoru. SourceLevel podporuje mnoho motorů pro různé jazyky. Včetně brakemana.
potenciální chyby
JavaScript má některé triky. Jedním z nejznámějších je rozdíl mezi ==
a ===
., Je to dobrá praxe a vyhýbá se velkému času ladění, vždy používejte ===
. Pokud například povolíte ESLint, aby to zkontroloval, může vám říci, jakou část vašeho kódu používá ==
a dokonce jej nahradit za vás.
vylepšení výkonu
každý zkušený vývojář zná nejen důležitost provádění softwaru, ale mnoho triků, které jej zlepšují. Problém je: a co nováčci? Jak můžete předat tyto znalosti dopředu? Dokonce i starší programátoři mohou vynechat techniku nebo dvě. Tak proč to nenechat automatizační software udělat za vás?,
Věděli jste, že v CSS může Univerzální volič (*) zpomalit dobu načítání stránky? Nebo že nekvalifikované selektory atributů mají stejné výkonnostní charakteristiky jako univerzální volič? Vyhýbat se jim je dobrá praxe.
mnoho linterů zahrnuje kontrolu výkonu. Mohou přidat různé druhy vylepšení výkonu pro zkušené a nováčky vývojáře. CSSLint je jen příkladem.
a mnoho dalších aspektů
do nekonečna a dále!, Existuje spousta linterů pro různé programovací jazyky, konfigurační soubory a dokonce i pro integraci softwaru. Jakákoli kontrola, na které záleží a může být automatizována, se může stát linterem.
Pokud pracujete v konkrétním scénáři, možná budete muset napsat svůj linter, i když to není v našem oboru příliš pravděpodobné. Kontroluje HTML funkce Přístupnosti, Internalizace potenciální chyby, gramatické chyby, a mnoho dalších jsou již tam, open-source, čeká na vás ke stažení, nakonfigurovat a začít používat.
výhody lintingu
podle Ferit T.,, linting zlepšuje čitelnost, odstraňuje hloupé chyby před provedením a kontrolou kódu. Ale jak již bylo zmíněno, linting může dělat složitější úlohy, jako je detekce kódových pachů nebo provádění statické analýzy vašeho codebase.
ale v praxi, jaké jsou výhody linting?
zlepšuje code review diskuse úrovně
Pokud vaše Žádost Vytáhnout nemá žádné překlepy, ani nepoužitých proměnných, a je v souladu s stylu průvodce, rozhovor má tendenci soustředit se na architekturu hlediska. To je ono., Pull Request je skvělým místem pro bodování problémů s výkonem, zranitelností cenných papírů nebo navrhováním lepších abstrakcí. Nemusíte se dostat do jedné nebo dvojité citace nebo tab vs. mezery diskuse. Je to určitě nárůst produktivity.
dělá kód vypadat napsaný jedinou osobou
do střednědobého a dlouhodobého hlediska mají spolehlivou kódovou základnu, která vypadá, že napsaný stejnou osobou je vynikající. Udržovatelnost a evoluce jsou jednodušší, protože každý má tendenci pochopit, co je napsáno rychleji a přesněji., Zabraňuje chybám, dělá práci radostnější pro vývojáře a urychluje čas na trh nových funkcí.
poskytuje viditelnost vašeho codebase zdraví
je váš kód zdravý? Nebudete to vědět, dokud to změříte. Vzrušující způsob, jak toho dosáhnout, je přidání kroku v potrubí CI/CD k měření vývoje vašeho zdravotního stavu kódu. Lepší než to, můžete podniknout kroky co nejdříve, když uvidíte, že se jeho zdraví rozpadne., Takové akce mohou znamenat vytvoření technických debetních karet ve vaší desce nebo dokonce vyvolat problém během vašeho agilního retrospektivního nebo architektonického zasedání Výboru.
Šíří povědomí a vlastnictví kódu kvality
Zkušení vývojáři mohou podívat do diff a zvýšit relevantní otázky o navrhované změny. Pravděpodobně vědí, kde hledat: jsou proměnné názvy popisné? Kolik řádků má metoda? Existuje nějaká superklasa?
ale co nováčci? Znalosti v týmu jsou často heterogenní. To znamená, že ne každý vývojář ví, co se podívat na kód., Mít linter, který vám řekne, kde jsou vůně kódu automaticky, je vynikající způsob, jak tyto znalosti rozšířit a učinit tým odpovědným za změny.
kvalita není odpovědností jedné osoby. Je nezbytné měřit a kontrolovat kvalitu kódu v průběhu času. V opačném případě se kód dostane chaotický, což zpomaluje vývoj a čas na trh.,
technické Kontroly dluhů
stejně Jako mnoho moderních lintr podívejte se na možné technické dluhy, jako kód smrdí, styl průvodce nesouladu, nebo špatně navržený kód (hluboké řetězce if
prohlášení, nebo příliš složité metody, například), lintry koreluje s technickou dluhu.
explicitní technické dluhy během procesu kontroly kódu pomáhají vývojářům softwaru nebo inženýrům rozpoznat,diskutovat a opravit je před sloučením do větve master
. Je to velmi pohodlná praxe, která řídí technické vkládání dluhů.,
Automatizovat svůj Kód Recenze: SourceLevel podporuje +30 lintry, které vám pomohou zlepšit kvalitu kódu. Kliknutím sem zobrazíte demo nebo spustíte bezplatnou zkušební verzi.
příklady linterů
existuje obrovské množství linterů. V závislosti na programovacím jazyce existuje pro každou práci ještě více než jeden řádek. Například pro programovací jazyk Go existují ktlint a detekt. Oba vykonávají podobnou práci. Totéž se děje s eslint, linter určený pro JavaScript. Funguje velmi podobně jako tslint nebo jshint.,
Lintry zaměřena na Zabezpečení
- Brzdař pro Ruby
- Bandita pro Python
- Uzlu Zabezpečení pro JavaScript
Lintry se zaměřil na styl průvodce a kódovací konvence
- CSSLint., SCSS nepouští Vlákna a Sass Vlákna pro Cascading Style Sheet
- Gofmt pro jazyk
- Swiftlint pro Switft
- rustfmt na Rez
- Krédo pro Elixir
Lintry pro Statickou Analýzu
- pep8 pro Python
- Phan nebo PHP Nepořádek Detektor pro PHP
- kibit pro Clojure, ClojureScript, cljx, a další Clojure variant.
- PMD pro Java
Závěr
Lintr pomohou získat více produktivní a ušetřit čas a peníze. Řídí váš tým k lepším rozhodnutím (těm orientovaným na data) a sdílejí vlastnictví nad kvalitou.,
V SourceLevel podporujeme spoustu linterů. Běží proti každému požadavku pull otevřít a komentovat správnou linku a podat nalezené problémy. Zvyšuje produktivitu a efektivitu vývojářů.
říkáme tomu automatizace kontroly kódu. Každý repozitář může mít svůj konfigurační soubor a poté nechat žádosti o stažení přezkoumat podle zvolených pravidel style-guide.