Immer mehr Teams haben Linter und andere statische Tools in ihren Entwicklungsprozess übernommen. Einige haben sie in die IDE ihrer Präferenz integriert, andere automatisiert, indem sie sie als zusätzlichen Schritt in ihrem CI ausgeführt haben. Einige laufen auch in beide Richtungen.
What ‘s a linter, dann?
Laut Wikipedia ist linter
ein Tool, das Quellcode analysiert, um Programmierfehler, Fehler, Stilfehler und verdächtige Konstrukte zu kennzeichnen.,
Der erste Linter wurde 1978 von Stephen C. Johnson geschrieben, als er im Unix-Betriebssystem von Bell Labs arbeitete. Danach sind viele andere Linter für verschiedene Zwecke und Sprachen erschienen, nicht nur C.
Die ersten Linter, die verwendet wurden, um den Quellcode zu überprüfen und mögliche Optimierungen für Compiler zu finden. Im Laufe der Jahre würden jedoch viele andere Überprüfungen und Analysen in den Prozess der Auskleidung einbezogen.
Die Verwendung von Lintern hat auch vielen Entwicklern geholfen, besseren Code für nicht kompilierte Programmiersprachen zu schreiben., Da keine Zeitfehler kompiliert werden, werden Tippfehler, Syntaxfehler, nicht deklarierte Variablen und Aufrufe von undefinierten oder veralteten Funktionen gefunden, um Entwicklern zu helfen, diese schneller zu beheben und Fehler vor der Ausführung zu reduzieren.
Linter haben sich entwickelt
Linter haben sich entwickelt. Sie begannen mit diesen einfachen Kontrollen, aber heutzutage werden sie immer ausgefeilter. Sie führen statische Analysen durch, erzwingen Konfigurationsflags, prüfen die Einhaltung eines bestimmten Style-Guide oder Sicherheitsregel und vieles mehr.,
Lassen Sie uns einige dieser Prüfungen untersuchen und wie sie für Sie nützlich sein können.
Statische Analyse
Statische Analyse bedeutet, dass automatisierte Software Ihre Codequelle durchläuft, ohne sie auszuführen. Es prüft statisch auf mögliche Fehler, Speicherlecks und jede andere Überprüfung, die nützlich sein kann.
Wenn Sie ein Python-Entwickler sind, kennen Sie Radon möglicherweise bereits. Es kann die Quellcodezeilen (SLOC), Kommentarzeilen, eine Leerzeile und andere Rohmetriken zählen, aber auch einen „Wartbarkeitsindex“ berechnen, der in einigen Projekten sehr wichtig sein kann.
Das ist nur ein Beispiel., Es gibt viele andere Linter, die statische Analyseprüfungen durchführen.
Kostenloses E-Book: Klicken Sie hier, um die kostenlose E-Book-Decodierungscode-Überprüfung und Pull-Anforderungen herunterzuladen. Holen Sie sich alle wichtigen Punkte und Best Practices, um eine Code-Review-Kultur zu implementieren.
Code Standardisierung
Von https://xkcd.com/1285/
die Standardisierung von code ist eine gute Möglichkeit, das Gespräch auf eine produktivere Ebene., Wenn Sie eine Richtlinie haben und Linter für die Codebasis ausführen, werden ästhetische Änderungen in Ihrer Pull-Anforderung vermieden, z. B. das Ersetzen aller Registerkarten durch Leerzeichen, das Einrücken einer Variablenzuordnung oder sogar Zeilenumbrüche nach einer bestimmten Anzahl von Zeichen.
Das Maximieren bedeutungsvoller Änderungen führt Ihre Diskussion zu wichtigen Themen wie Architekturentscheidungen, Sicherheitsproblemen oder potenziellen Fehlern.
Sicherheitsprobleme und mögliche Bugs können übrigens auch von Lintern vermieden werden!
Sicherheitsprobleme
Wenn Sie in Rails sind, haben Sie wahrscheinlich über Brakeman gehört., Es ist ein statisches Analyse-Sicherheits-Tool. Es ist vorteilhaft, potenzielle Sicherheitsprobleme zu finden. Zum Beispiel führt es Prüfungen aus, die nach SQL-Injection suchen, wenn ActiveRecords #find_or_create_by
und Freunde verwendet werden. Es fügt auch Überprüfungen für XSS, Konfigurationsoptionen und vieles mehr hinzu.
Ruby ist nicht die einzige Sprache mit dieser Art von Engine. SourceLevel unterstützt viele engines für verschiedene Sprachen. Bremser enthalten.
Mögliche Fehler
JavaScript hat einige tricks. Einer der bekanntesten ist der Unterschied zwischen ==
und ===
., Es ist eine gute Praxis und vermeidet viel Debugging-Zeit, immer ===
. Wenn Sie beispielsweise ESLint aktivieren, um dies zu überprüfen, können Sie feststellen, welcher Teil Ihres Codes ==
und ihn sogar für Sie ersetzen.
Leistungsverbesserungen
Jeder erfahrene Entwickler weiß nicht nur, wie wichtig es ist, Software auszuführen, sondern auch viele Tricks, die sie verbessern. Das problem ist: was ist mit Neueinsteigern? Wie können Sie dieses Wissen weitergeben? Selbst ältere Programmierer können ein oder zwei Techniken verpassen. Warum also nicht eine Automatisierungssoftware für Sie tun lassen?,
Wussten Sie, dass der universelle Selektor (*) in CSS die Ladezeit einer Seite verlangsamen kann? Oder dass nicht qualifizierte Attributselektoren die gleichen Leistungsmerkmale wie der universelle Selektor haben? Sie zu vermeiden ist eine gute Praxis.
Viele Linter enthalten eine Leistungsprüfung. Sie können verschiedene Arten von Leistungsverbesserungen für erfahrene und Neulinge Entwickler hinzufügen. CSSLint ist nur ein Beispiel.
Und viele andere Aspekte
Bis ins Unendliche und darüber hinaus!, Es gibt viele und viele Linter für verschiedene Programmiersprachen, Konfigurationsdateien und sogar für Software-Integrationen. Jede Überprüfung, die wichtig ist und automatisiert werden kann, kann zu einem Linter werden.
Wenn Sie in einem bestimmten Szenario arbeiten, müssen Sie möglicherweise Ihren Linter schreiben, obwohl dies in unserer Branche nicht allzu wahrscheinlich ist. Überprüfungen auf HTML-Eingabehilfsfunktionen, Internalisierungspotentialfehler, Grammatikfehler und viele andere sind bereits vorhanden, Open Source und warten darauf, dass Sie sie herunterladen, konfigurieren und verwenden.
Vorteile von linting
Nach Ferit T.,, linting verbessert die Lesbarkeit, entfernt dumme Fehler vor der Ausführung und Code-Überprüfung. Wie bereits erwähnt, kann Linting jedoch komplexere Aufgaben ausführen, z. B. das Erkennen von Codegerüchen oder die statische Analyse Ihrer Codebasis.
Aber was sind in der Praxis die Vorteile von Linting?
Es verbessert die Diskussionsebene der Codeüberprüfung
Wenn Ihre Pull-Anforderung keine Tippfehler oder nicht verwendete Variablen aufweist und mit dem Styleguide konform ist, konzentriert sich die Konversation tendenziell auf den Standpunkt der Architektur. Das ist es., Pull Request ist ein großartiger Ort, um auf Performance-Probleme, Sicherheitslücken oder bessere Abstraktionen hinzuweisen. Sie müssen nicht in diese einfache oder doppelte Anführungszeichen oder Tab vs. Leerzeichen Diskussion zu bekommen. Es ist sicher ein Produktivitätsgewinn.
Lässt Code wie von einer einzelnen Person geschrieben aussehen
Mittel-und langfristig ist es ausgezeichnet, eine zuverlässige Codebasis zu haben, die wie von derselben Person geschrieben aussieht. Wartbarkeit und Entwicklung sind einfacher, weil jeder dazu neigt, schneller und präziser zu verstehen, was geschrieben wird., Es verhindert Fehler, macht den Job für Entwickler freudiger und beschleunigt die Markteinführung neuer Funktionen.
Gibt Sichtbarkeit Ihrer Codebasis Gesundheit
Ist Ihr Code gesund? Sie werden es erst wissen, wenn Sie es messen. Eine aufregende Möglichkeit besteht darin, einen Schritt in Ihre CI/CD-Pipeline einzufügen, um die Entwicklung Ihres Code-Gesundheitsstatus zu messen. Besser als das, Sie können so schnell wie möglich Maßnahmen ergreifen, wenn Sie sehen, dass seine Gesundheit verfällt., Solche Aktionen können bedeuten, dass Sie technische Debitkarten in Ihrem Board erstellen oder sogar das Problem während Ihrer agilen retrospektiven oder Architekturausschusssitzung aufwerfen.
Verbreitet das Bewusstsein und die Eigenverantwortung für die Codequalität
Erfahrene Entwickler können sich mit einem Diff befassen und relevante Fragen zu der vorgeschlagenen Änderung aufwerfen. Sie wissen wahrscheinlich, wo sie suchen müssen: Sind Variablennamen beschreibend? Wie viele Zeilen dauert eine Methode? Gibt es eine Superklasse?
Aber wie wäre es mit Neueinsteigern? Das wissen im team ist oft heterogen. Es bedeutet, dass nicht jeder Entwickler weiß, was er über den Code sehen soll., Einen Linter zu haben, um zu sagen, wo Code-Gerüche automatisch sind, ist eine hervorragende Möglichkeit, dieses Wissen zu verbreiten und das Team für die Änderungen verantwortlich zu machen.
Qualität ist keine Einzelverantwortung. Es ist wichtig, die Codequalität im Laufe der Zeit zu messen und zu kontrollieren. Andernfalls wird der Code unordentlich, was die Entwicklung und die Markteinführungszeit verlangsamt.,
Steuert technische Schulden
Da viele moderne Linter nach möglichen technischen Schulden suchen, wie Code-Gerüche, Style Guide-Fehlanpassungen oder schlecht gestaltetem Code (z. B. tiefe Ketten von if
– Anweisungen oder zu komplexe Methoden), korrelieren Linter mit technischen Schulden.
Wenn Sie während des Codeüberprüfungsprozesses technische Änderungen explizit machen, können Softwareentwickler oder Ingenieure sie erkennen, diskutieren und beheben, bevor sie in den Zweig master
. Es ist eine sehr bequeme Praxis, die die technischen Schuldeinfügungen steuert.,
Automatisieren Sie Ihre Codeüberprüfung: SourceLevel unterstützt +30 Linter, um die Codequalität zu verbessern. Klicken Sie hier, um eine Demo zu sehen oder eine kostenlose Testversion zu starten.
Beispiele für Linter
Es gibt eine große Anzahl von Lintern. Je nach Programmiersprache gibt es sogar mehr als einen Linter für jeden Job. Für die Go-Programmiersprache gibt es beispielsweise ktlint und detekt. Beide führen einen ähnlichen Job aus. Das gleiche passiert mit eslint,einem Linter für JavaScript. Es funktioniert sehr ähnlich wie tslint oder jshint.,
Linter konzentrierten sich auf Sicherheit
- Brakeman für Ruby
- Bandit für Python
- Node Security für JavaScript
Linter konzentrierten sich auf die style Guide und Codierung Konventionen
- CSSLint., SCSS Lint und Sass Lint für Cascading Style Sheet
- Gofmt für Go language
- Swiftlint für Switft
- rustfmt für Rust
- Credo für Elixir
Linters für statische Analyse
- pep8 für Python
- Phan oder PHP Mess Detector für PHP
- kibit für Clojure, ClojureScript, cljx und andere Clojure-Varianten.
- PMD für Java
Linter helfen Ihnen produktiver zu werden und sparen Zeit und Geld. Sie treiben Ihr Team zu besseren Entscheidungen (datenorientiert) und teilen das Eigentum an der Qualität.,
Auf SourceLevel unterstützen wir viele Linter. Sie laufen gegen jede Pull-Anfrage offen und kommentieren die richtige Zeile und Datei die gefundenen Probleme. Es erhöht die Produktivität und Effektivität der Entwickler.
Wir nennen es Automatisierung der Codeüberprüfung. Jedes Repository kann seine Konfigurationsdatei haben und dann Pull-Anforderungen gemäß den ausgewählten Style-Guide-Regeln überprüfen lassen.