Der folgende Beitrag stammt von David Racodon. David trägt zu diesem Open-Source-Tool zur Codequalität bei, über das er Ihnen alles erzählen wird. Ich hatte es bisher noch nicht gehört, aber ich weiß, dass viele Leute an Werkzeugen interessiert sind, die ihnen helfen, ihr CSS im Griff zu behalten. Dies ist ein bisschen wie CSS lint, aber formalisiert in einer Benutzeroberfläche, die die Codequalität für ein ganzes Projekt verwaltet.
Die Qualität von CSS verschlechtert sich im Laufe der Zeit tendenziell. Sie beginnen ein neues Projekt und es ist blitzsauber. Aber langsam, durch Änderungen und Wartung, häufen sich technische Schulden. Es wird noch schlimmer bei Projekten mit vielen verschiedenen Betreuern oder Mitarbeiterwechsel.
Die überwiegende Mehrheit der CSS-Entwickler, die ich getroffen habe, legen Wert auf die Sauberkeit ihres Codes und haben auch das Gefühl, dass sie es besser machen könnten.
Ich arbeite an und mit einem Tool namens SonarQube, das speziell für Entwickler zur Verbesserung der Codequalität entwickelt wurde.
Was ist SonarQube?
SonarQube liefert Feedback zur Codequalität für eine Vielzahl von Sprachen, einschließlich CSS. Eine Weboberfläche bietet einen Überblick über die Codequalität Ihres Projekts.

Von dort aus können Sie tiefer eintauchen und SonarQube kann Ihnen Probleme direkt im Code anzeigen, z. B. potenzielle Fehler wie doppelte Eigenschaften

Oder doppelte Selektoren über Dateien hinweg

Oder eine andere der sieben Todsünden der Entwickler.
Es gibt eine Demo dieser Funktionen, die Sie sich ebenfalls ansehen können.
Wo anfangen? Neuer Code.
Was wäre, wenn Sie Ihren Code jetzt analysieren würden? Wenn Sie Glück haben, haben Sie nur ein paar Dutzend Probleme. Aber was, wenn Sie ein paar hundert haben? Womit sollten Sie dann anfangen? Lassen Sie es uns anders formulieren. Wenn Ihre Badewanne ein Leck hat, würden Sie zuerst den Boden wischen oder versuchen, das Leck zu reparieren? Ich glaube (oder hoffe zumindest), dass die meisten von Ihnen versuchen würden, zuerst das Leck zu reparieren.
SonarQube bietet, was Sie brauchen, um sich auf neuen Code zu konzentrieren: die Differentialansichten. Sie ermöglichen es Ihnen, den aktuellen Zustand Ihres Codes mit einem früheren Zustand zu vergleichen. (Ein früherer Zustand kann die letzte Analyse, der Beginn des Sprints, eine Produktionsversion usw. sein) und neue Probleme hervorzuheben.

Im obigen Beispiel würden Sie einfach auf +9 klicken, um die 9 neuen Probleme anzuzeigen, die seit der letzten Analyse eingeführt wurden, und mit deren Behebung beginnen.
Welche Art von CSS-Prüfungen führt es durch?
Derzeit sind über 50 verfügbar. Hier sind nur einige Beispiele
Potenzielle Fehler
- Doppelte Eigenschaften: Schlechte Kopie und Einfügen? Für Cross-Browser-Unterstützung gedacht? Ein Kommentar wäre in diesem Fall jedoch schön.
- Eigenschaftswerte sollten gültig sein, sonst werden sie von Browsern ignoriert. Nicht nur ein grundlegender CSS2-Validator, sondern auch CSS3 und von Browsern üblicherweise akzeptierte Werte werden berücksichtigt. Sehen Sie die vollständige Liste der Validatoren.
Coding-Richtlinien
- Selektoren sollten einer Namenskonvention folgen
- Einheiten für Nullwerte sollten entfernt werden
- Stylesheet sollten nicht zu viele Regeln enthalten
Cross-Browser-Kompatibilität
- Standardeigenschaften sollten zusammen mit herstellerspezifischen Präfixen angegeben werden
- Veraltete Systemfarben sollten nicht verwendet werden
Ausprobieren
SonarQube ist Open Source und kostenlos. Um Ihren Code in weniger als zwei Minuten analysieren zu lassen, kann ein SonarQube-Paket, das mit dem CSS-Plugin und dem Analyzer gebündelt ist, hier heruntergeladen werden (sehen Sie sich den Download ZIP auf der rechten Seite an).
Oder sehen Sie sich die ausführliche Dokumentation an.
Mehr erfahren
Überzeugt? Gehen Sie weiter, indem Sie die Analyse Ihres Codes mit Ihrem bevorzugten Continuous-Integration-Dienst automatisieren. Es gibt auch Plugins für JavaScript, HTML und andere Sprachen. Sie können es verwenden, um Probleme zu überprüfen, Ihre technischen Schulden zu bewerten und vieles mehr.
Feedback zum CSS-Plugin
Zusammen mit Tamas Kende trage ich zum SonarQube CSS-Plugin bei. Wir sind keine CSS-Gurus und sind uns sicher, dass die bestehenden Regeln verbessert und neue Regeln hinzugefügt werden könnten. Ihr Feedback ist mehr als willkommen! Posten Sie es in die SonarQube-Benutzergruppe oder pingen Sie uns auf Twitter unter @kalidasya und @DavidRacodon an.
Das erste Fehlerbeispiel ist irgendwie beängstigend. Wenn ich ein zweites margin-bottom im Stil geschrieben hätte, dann wahrscheinlich, weil ich es ändern wollte, und in jedem Fall würde das zweite das erste überschreiben.
Daher ist der Vorschlag, die zweite Eigenschaftsdefinition zu löschen, DIE FALSCHE LÖSUNG. Es wird das Erscheinungsbild meiner Website verändern, wahrscheinlich in einer Weise, die ich nicht möchte. Stattdessen sollte das erste als unnötig gekennzeichnet werden, da es ersetzt wurde.
Es ist im selben Selektor, also würde es nichts überschreiben, es ist nur eine Duplizierung. Überschreiben würde passieren, wenn Sie einen anderen Selektor mit höherer Spezifität mit derselben Regel hätten.
Auch nur weil eine Regel von einer anderen abgelöst wird, macht sie das nicht überflüssig. Sie kann sehr wohl in einem anderen, weniger spezifischen Kontext verwendet werden.
Wahoofive hat völlig recht. In einer CSS-Regel mit doppelten Eigenschaften hat die zweite Eigenschaft immer Vorrang vor der ersten und macht damit die erste Regel ungültig.
Angesichts dieser Tatsache werden Sie in den meisten Fällen die erste Duplizierung löschen wollen, nicht die zweite, da Ihre Website mit dem von der zweiten Regel bereitgestellten Wert lief.
Ja. Einverstanden. Kennzeichnen Sie die erste als unnötig.
@wahoofive
Was im ersten Beispiel wirklich "beängstigend" ist, ist, dass die Eigenschaft
margin-bottomdoppelt vorhanden ist.Das ist in diesem Fall sicherlich ein Fehler. Deshalb weist SonarQube auf das Problem hin. Dann sollten Sie als Entwickler die richtige Abhilfemaßnahme ergreifen: Entfernen Sie die erste Definition von
margin-bottom, wenn Sie denken, dass dies die richtige Lösung ist.SonarQube kann keine Vermutungen anstellen, aber mit Sicherheit wird meistens die erste Definition entfernt. Daher werde ich das Problem bei der ersten (statt der letzten) doppelt vorhandenen Eigenschaft protokollieren: https://github.com/SonarCommunity/sonar-css/issues/133
Danke für Ihr Feedback
Ich würde die doppelte Eigenschaft einfach kennzeichnen und keine Lösung vorschlagen. Der Entwickler muss sie untersuchen, um festzustellen, welche die richtige ist. Und er hat Recht, die zweite wird die erste überschreiben. Das hat nichts mit Selektorspezifität zu tun; leider muss ich sagen, dass Sie falsch liegen, Max.
Großartig. Sehr gut beschrieben. Danke
Grüße
https://www.bunnytechs.com
Ich habe das aus diesem Artikel ausprobiert, war aber enttäuscht, viele Mängel beim CSS-Plugin festzustellen. Es unterstützt kein SCSS und funktioniert auch nicht, wenn Sie minifizierte CSS-Ausgabe haben. Wo das in meinen Workflow passt, ist unklar.
@MrChristopher
Auch kein Less. Aber wir hoffen, diese Sprachen in naher Zukunft anzugehen.
SonarQube ist ein Werkzeug zur Überprüfung der Codequalität. Daher macht es nicht wirklich Sinn, es gegen Ihre minifizierte CSS-Datei auszuführen. Sie sollten es gegen Ihren tatsächlichen CSS-Code ausführen, bevor Sie ihn minifizieren. Daher sollten Sie diese Codequalitätsprüfung vor Ihrem Minifizierungsschritt hinzufügen. Sie können auch den Build abbrechen, nachdem die Codequalitätsprüfung durchgeführt wurde, wenn er bestimmte Anforderungen nicht erfüllt (wie z. B. "neue Blocker-Probleme wurden eingeführt"), siehe http://www.sonarqube.org/quality-gates-shall-your-projects-pass/
Da Sie minifizierte CSS-Dateien direkt aus Ihrem SCSS-Code ausgeben. Der Mehrwert wäre in der Tat die Analyse Ihres SCSS-Codes, nicht des ausgegebenen minifizierten CSS-Codes.
Warum nicht einfach den W3C CSS-Validator verwenden?
@raj
Wie in diesem Beitrag beschrieben, leistet SonarQube weit mehr als nur CSS-Validierung. Sehen Sie sich die verfügbaren Prüfungen unter http://nemo.sonarqube.org/coding_rules#languages=css an.
ich bekomme
diesen Fehler Luiss-MacBook-Pro:package-test-sonarqube-css luisbetancourt$ sonarqube-5.1.1/bin/linux-x86-32/sonar.sh start
SonarQube wird gestartet…
sonarqube-5.1.1/bin/linux-x86-32/sonar.sh: Zeile 417: /Users/luisbetancourt/desktop/package-test-sonarqube-css/sonarqube-5.1.1/bin/linux-x86-32/./wrapper: Binärdatei kann nicht ausgeführt werden
SonarQube konnte nicht gestartet werden.
Luiss-MacBook-Pro… Es sieht so aus, als wären Sie auf einem Mac-Computer.
linux-x86-32… Es sieht so aus, als würden Sie versuchen, einen Befehl auszuführen, der für eine 32-Bit-Linux-Maschine geschrieben wurde.
Können Sie versuchen, den richtigen Befehl auszuführen?