egyre több csapat fogadott el lintereket és egyéb statikus eszközöket a fejlesztési folyamat során. Néhányan integrálták őket a preferenciájuk IDE-jébe, mások automatizálták őket azáltal, hogy további lépésként futtatták őket a CI-ben. Is, néhány fut mindkét irányban.
akkor mi az a linter?
a Wikipedia szerint a linter
olyan eszköz, amely a forráskódot a programozási hibák, hibák, stilisztikai hibák és gyanús konstrukciók megjelölésére elemzi.,
Az első lintert Stephen C. Johnson írta 1978-ban, miközben a Bell Labs Unix operációs rendszerében dolgozott. Ezt követően számos más Linter jelent meg különböző célokra és nyelvekre, nem csak C.
az első linterek, amelyek a forráskódot ellenőrizték, és potenciális optimalizálást találtak a fordítók számára. De az évek során sok más ellenőrzés és elemzés is bekerülne a szöszölés folyamatába.
a linterek használata sok fejlesztőnek is segített abban, hogy jobb kódot írjon a nem összeállított programozási nyelvekhez., Mivel nincs időhibák összeállítása, helyesírási hibák, szintaktikai hibák, be nem jelentett változók használata, nem definiált vagy elavult funkciók hívása, például segítve a fejlesztőket abban, hogy gyorsabban javítsák, és csökkentsék a hibákat a végrehajtás előtt.
Linterek alakultak ki
Linterek alakultak ki. Ezekkel az egyszerű ellenőrzésekkel kezdték, de manapság egyre kifinomultabbak. Statikus elemzést végeznek, konfigurációs zászlókat hajtanak végre, ellenőrzik, hogy megfelelnek-e egy adott stílus-útmutatónak vagy biztonsági szabálynak, és még sok más.,
vizsgáljuk meg néhány ilyen ellenőrzést, valamint azt, hogy ezek hogyan lehetnek hasznosak az Ön számára.
statikus analízis
statikus analízis azt jelenti, hogy az automatizált szoftver fut át a kód forrásán anélkül, hogy végrehajtaná. Statikusan ellenőrzi a lehetséges hibákat, a memória szivárgását, valamint bármely más, hasznos ellenőrzést.
Ha egy Python fejlesztő, lehet, hogy már tudja Radon. Meg lehet számolni a forráskód (SLOC), megjegyzés vonalak, egy üres sort, és más nyers mutatókat, hanem, akkor lehet számítani a “karbantarthatóság Index,” ami nagyon fontos lehet egyes projektek.
Ez csak egy példa., Rengeteg más Linter, hogy végre statikus elemzés ellenőrzések.
ingyenes e-könyv: kattintson ide az ingyenes e-könyv dekódolási Kód áttekintésének letöltéséhez és a Pull kérések letöltéséhez. Szerezd meg az összes kulcsfontosságú pontot és bevált gyakorlatokat, hogy végre egy kód felülvizsgálat kultúra.
kód szabványosítás
https://xkcd.com/1285/
a kód szabványosítása nagyszerű módja annak, hogy a beszélgetést produktívabbá tegyük., Miután egy iránymutatás működik linters ellen a codebase elkerüli esztétikai változásokat a pull request, mint cseréje az összes lapok a terek, épp egy változó feladat, vagy akár a sortöréseket után adott számú karaktert.
Az értelmes változások maximalizálása olyan témákhoz vezet, amelyek fontosak, például építészeti döntések, biztonsági kérdések vagy potenciális hibák.
egyébként a biztonsági problémák és a lehetséges hibák is elkerülhetők a linterek által!
biztonsági problémák
Ha a sínek, akkor valószínűleg hallott Brakeman., Ez egy statikus analízis biztonsági eszköz. Hasznos megtalálni a lehetséges biztonsági kérdéseket. Például az ActiveRecord #find_or_create_by
és a friends használatakor ellenőrzi az SQL Injection keresését. Azt is hozzáteszi ellenőrzések XSS, config lehetőségek, és még sok más.
A Ruby nem az egyetlen nyelv ilyen motorral. SourceLevel támogatja a sok motor különböző nyelveken. Brakeman is.
potenciális hibák
a JavaScript néhány trükköt tartalmaz. Az egyik leghíresebb a különbség a ==
és ===
között., Ez egy jó gyakorlat, és elkerüli sok hibakeresési idő, hogy mindig használja ===
. Ha engedélyezi például az ESLint-et, hogy ellenőrizze ezt, meg tudja mondani, hogy a kód melyik része használja a ==
, sőt cserélje ki az Ön számára.
teljesítményjavítások
minden tapasztalt fejlesztő nemcsak a szoftver végrehajtásának fontosságát ismeri, hanem sok trükköt is, amelyek javítják. A probléma az, hogy mi a helyzet az újonnan érkezőkkel? Hogyan tudod továbbadni ezt a tudást? Még a vezető programozók is hiányozhatnak egy-két technikát. Szóval, miért nem hagyja, hogy egy automatizálási szoftver tegye meg az Ön számára?,
tudta, hogy a CSS-ben az univerzális választó (*) lelassíthatja az oldal betöltési idejét? Vagy hogy a nem minősített attribútumválasztók ugyanolyan teljesítményjellemzőkkel rendelkeznek, mint az univerzális választó? Ezek elkerülése jó gyakorlat.
sok Linter tartalmaz egy teljesítményellenőrzést. Ők is hozzá különböző teljesítmény fejlesztések tapasztalt és újonnan Fejlesztők. CSSLint csak egy példa.
és még sok más szempont
a végtelenségig és azon túl!, Sok-sok Linter van a különböző programozási nyelvekhez, konfigurációs fájlokhoz, sőt szoftverintegrációkhoz is. Minden olyan ellenőrzés, ami számít és automatizálható, linterré válhat.
Ha egy adott forgatókönyvben dolgozik, akkor lehet, hogy meg kell írnia a lintert, annak ellenére, hogy iparágunkban nem túl valószínű. Ellenőrzi a HTML Kisegítő funkciók, Internalization lehetséges hibák, nyelvtani hibák, és még sokan mások már ott, nyílt forráskódú, várja, hogy töltse le, konfigurálja, és kezdje el használni.
A lintelés előnyei
Ferit t szerint.,, a szöszölés javítja az olvashatóságot, eltávolítja a buta hibákat a végrehajtás és a kód felülvizsgálata előtt. De, mint már említettük, a szöszölés bonyolultabb feladatokat végezhet, mint például a kódszagok észlelése vagy a kódbázis statikus elemzése.
de a gyakorlatban milyen előnyei vannak a bélésnek?
javítja a code review discussion szintet
Ha a Pull kérésednek nincsenek elírásai, sem nem használt változói, és megfelel a stílus útmutatónak, a beszélgetés inkább az architektúra nézőpontjára összpontosít. Ez az., A Pull Request remek hely a teljesítményproblémák, az értékpapír-sebezhetőségek vagy a jobb absztrakciók felvetésére. Nem kell, hogy az egyetlen vagy dupla idézetek vagy lap vs. terek vita. Ez egy termelékenységi nyereség az biztos.
teszi kód néz ki, mint írta egy személy
, hogy a közép-és hosszú távú, amelynek megbízható kód alapja, hogy néz ki, mint írta ugyanaz a személy kiváló. A fenntarthatóság és az evolúció könnyebb, mert mindenki hajlamos arra, hogy gyorsabban és precízebben megértse, amit ír., Megakadályozza a hibákat, örömtelibbé teszi a munkát a fejlesztők számára, és felgyorsítja az új funkciók piacra kerülésének idejét.
láthatóvá teszi a kódbázis egészségét
egészséges a kód? Nem fogod tudni, amíg meg nem méred. Ennek izgalmas módja egy lépés hozzáadása A CI / CD csővezetékbe a kód egészségi állapotának alakulásának mérésére. Ennél jobb, ha a lehető leghamarabb lépéseket tehet, amikor látja, hogy az egészsége romlik., Az ilyen intézkedések magukban foglalhatják a technikai betéti kártyák létrehozását a táblán, vagy akár felvethetik a problémát az agilis retrospektív vagy építészeti bizottság ülésén.
elterjeszti a figyelmet és a tulajdonjogot a kódminőség felett
a tapasztalt fejlesztők megvizsgálhatják a diff – et, és felvethetik a javasolt változással kapcsolatos releváns kérdéseket. Valószínűleg tudják, hol kell keresni: a változók neve leíró? Hány sort vesz igénybe egy módszer? Van valami szuperosztály?
de mi a helyzet az újonnan érkezőkkel? A csapat ismerete gyakran heterogén. Ez azt jelenti, hogy nem minden fejlesztő tudja, mit nézzen át a kódon., Az, hogy egy szöszi megmondja, hol vannak a kódszagok automatikusan, kiváló módja ennek a tudásnak a terjesztésére, valamint a csapat felelőssé tételére a változásokért.
a minőség nem egyszemélyes felelősség. Alapvető fontosságú a kódminőség mérése és ellenőrzése az idő múlásával. Ellenkező esetben a kód rendetlen lesz, ami lelassítja a fejlődést és a piacra jutási időt.,
Controls technical debts
mivel sok modern linters keresni lehetséges technikai adósságok, mint a kód szagok, stílus útmutató eltérések, vagy rosszul tervezett kód (mély láncok if
nyilatkozatok, vagy túl bonyolult módszerek, például), linters korrelál technikai adósság.
Hogy a technikai adósság kifejezett során a kód felülvizsgálati folyamat segít szoftver fejlesztők, vagy a mérnökök, hogy a helyszínen, megbeszélni, megoldani, mielőtt a beleolvadnak a master
ág. Ez egy nagyon kényelmes gyakorlat, amely szabályozza a technikai adósság beillesztéseket.,
automatizálja a kódot felülvizsgálat: SourceLevel támogatja +30 linters, hogy segítsen javítani a kód minőségét. Kattintson ide, hogy egy demo, vagy indítsa el az ingyenes próbaverzió.
példák linters
van egy hatalmas számú linters odakinn. Attól függően, hogy a programozási nyelv, még több, mint egy linters minden munkát. Például a Go programozási nyelv, vannak ktlint és detekt. Mindkettő hasonló munkát végez. Ugyanez történik az eslint-rel, a JavaScripthez tervezett linterrel. Úgy működik, nagyon hasonlít a tslint vagy jshint.,
Linters focused on Security
- Brakeman for Ruby
- Bandit for Python
- Node Security for JavaScript
Linters focused on the style guide and coding conventions
- CSSLint., SCSS Lint and Sass Lint for Cascading Style Sheet
- Gofmt for Go language
- Swiftlint for Switft
- rustfmt for Rust
- Credo for Elixir
Linters for Static Analysis
- pep8 for Python
- Phan or PHP Messess Detector for PHP
- PMD Java
kibit for Clojure, clojurescript, cljx és egyéb Clojure változatok.
következtetés
Linters segít, hogy több produktív, időt és pénzt takarít meg. Ők vezetik a csapatot a jobb döntésekhez (az adatok által orientáltakhoz), és megosztják a tulajdonjogot a minőség felett.,
A Sourcelevelnél sok lintert támogatunk. Minden egyes húzási kéréssel szemben futnak, és kommentálják a megfelelő sort, majd benyújtják a talált kérdéseket. Növeli a fejlesztők termelékenységét és hatékonyságát.
hívjuk automatizálása kód felülvizsgálata. Minden tárolónak megvan a konfigurációs fájlja, majd a választott stílus-útmutató szabályok szerint felül kell vizsgálnia a pull kéréseket.