7 beste TYPO3 Code-Qualität, Prüf- und Fussel-Tools

7 beste TYPO3 Code-Qualität, Prüf- und Fussel-Tools

This article machine-based automatically translated from English to the German language. As this article is not human translated, there may be chances of context, spelling and grammar mistakes. We recommend to read original article in English version.

Sind Sie auf der Suche nach guten Praktiken zur Code-Qualität von TYPO3? Dann sind Sie hier an der richtigen Stelle. In diesem Artikel finden Sie hilfreiche Tipps und Tricks mit TYPO3 Code-Review-Tools und TYPO3 Fussel, um eine bessere TYPO3 Code-Qualität zu erreichen.

TYPO3 CMS ist bekannt für seinen Slogan - "Das Qualitäts-CMS seit 1999". Mit anderen Worten: Die funktionale und technische Qualität ist seit den Anfängen von TYPO3 gut erhalten geblieben. Aber, die Frage kommt hier: Wie entwickeln und pflegen Sie die Code-Qualität Ihres TYPO3-Projekts? Befolgen Sie alle TYPO3 Code-Standards von PHP, JavaScript, YML, TypoScript, etc.

Stellen Sie sich eine Situation vor, in der Sie nach Jahren eines Ihrer alten TYPO3-Projekte betreuen und es Ihnen schwer fällt, Ihren selbst geschriebenen TYPO3-Code zu verstehen - das ist ziemlich traurig. Und eine andere Situation: In Ihren laufenden TYPO3-Projekten beschweren sich Ihre Teamkollegen beim technischen Leiter über Ihre schlechte Überprüfung des TYPO3-Codes.

Vergewissern wir uns von der Qualität Ihres TYPO3-Codes, indem wir die Bedeutung von TYPO3-Code-Reviews und TYPO3-Fussel verstehen.

Warum ist die Code-Qualität von TYPO3 so wichtig?

Quelle

Hier sind die Gründe, warum eine Überprüfung des TYPO3-Codes unerlässlich ist;

  • Leichte Lesbarkeit, Konsistenz - dass es so natürlich ist, Teile des Codes durchzusehen und zu verstehen; dies schließt die Klarheit des Codes, die Mühelosigkeit und die Dokumentation ein. 
  • Konsistenz, Zuverlässigkeit, Qualität und Stärke - das Programmierverhalten sollte nicht überraschend sein und nicht dazu neigen, versteckte Fehler zu entdecken. 
  • Wartung und Erweiterbarkeit - Die Fehlerbehebung, Aktualisierung und Verbesserung der Programmierung sollte so einfach sein, wie unter den gegebenen Umständen zu erwarten war, und nicht inhärent komplex.

Manuelle vs. automatische TYPO3-Code-Qualität

Nun, das ist leicht zu verstehen.

Für die manuelle Überprüfung des TYO3-Codes und der Code-Qualität werden Personalressourcen benötigt, in denen TYPO3-Experten den TYPO3-Code manuell überprüfen können. Ich schlage vor, dass Sie, sobald Sie die automatische Code-Überprüfung erfolgreich bestanden haben, diese Ihrem TYPO3-Senior-Mitarbeiter geben können, um die kritischen Code-Sachen wie Logik, Datenbankabfragen, Optimierung des TYPO3-Codes, TYPO3-APIs usw. zu besprechen.

Auf der anderen Seite sollten Sie beliebte Tools zur automatischen Code-Überprüfung in Betracht ziehen, wie

  • SonarLint
  • SonarQube/SonarCloud (SonarQube/SonarWolke)
  • StyleCop
  • ReSharper

OpenSource-Sonar-Universum: Werkzeuge zur Überprüfung von TYPO3-Code

Quelle

Lernen Sie das Sonar-Universum kennen, eines der beliebtesten Tools zur automatischen Überprüfung von PHP-Code.

Für die TYPO3-Community stellten die Mitarbeiter von Marketing Factory jahrelang SonarQube zur Verfügung, um Erweiterungen von TYPO3 TER zu überprüfen 

https://ter-sonarqube.marketing-factory.de/projects (but sometimes it does not work).

Option #1 Selbst gehostete OpenSource-Version

SonarQube bietet eine kostenlose Community-Edition, die Sie in Ihren öffentlichen/privaten TYPO3-Projekten installieren und konfigurieren können. Erforschen Sie https://www.sonarqube.org/

Option #2 Wolkenbasierte OpenSource-Version
SonarCloud bietet KOSTENLOSE Cloud-Unterstützung für Ihre OpenSource-Projekte, z.B. Ihre TER-Erweiterungen. https://sonarcloud.io/

Option #3 Wolkenbasierte Professional-Version

SonarCloud bietet auch erstklassige professionelle Dienstleistungen auf Cloud-Basis für Ihre privaten TYPO3-Projekte.

Teil #1 TYPO3 Code-Qualität mit SonarCloud

In diesem Artikel möchte ich Sie durch SonarCloud führen, das für Ihre TYPO3 TER-Erweiterungen leicht zu starten ist.

Bevor wir beginnen, wollen wir den TYPO3-Kern und einige berühmte TYPO3-Erweiterungen analysieren, die bereits auf ihrer Plattform verfügbar sind.

Code-Besprechung des TYPO3 Core CMS

Gehe zu https://sonarcloud.io/dashboard?id=typo3

Sie können den gesamten Bericht analysieren, natürlich ist TYPO3 ein über 20 Jahre altes CMS. Deshalb fand ich viele solcher Probleme aufgrund alter Codes ;)

Code Quality of TYPO3 Extensions

Let’s take a look at any of the TYPO3 extensions from TER like the most popular EXT:typo3_console at https://sonarcloud.io/dashboard?id=typo3-console It’s been PASSED :)

Wie wird die TER TYPO3-Erweiterung überprüft?

Aha, großartig! Sind Sie gespannt darauf, die Qualität Ihres TYPO3-Erweiterungscodes zu prüfen? Dann lassen Sie mal sehen!

Schritt 1. Anmeldung https://sonarcloud.io/sessions/new mit Ihrem Lieblings-Git-Werkzeug.

Schritt 2. Lassen Sie uns "Projekte aus Git importieren".

Schritt 3. Wählen Sie entweder "Alle Repositories" oder "Nur bestimmte Repositories".

Schritt 4. Legen Sie ein Organisationsprofil an und wählen Sie den KOSTENLOSEN Versionsplan.

Schritt 5. Beginnen Sie mit der Überprüfung des Codes

Schritt 6. Hurra! Erledigt!

Erforschen Sie https://sonarcloud.io/dashboard?id=nitsan-technologies_ns_cookiebot Wenn Sie irgendwelche Probleme finden, dann untersuchen und beheben Sie sie :)

Schritt 7. Machen Sie eine Probefahrt!

Bevor Sie Ihre TYPO3-Erweiterungen und -Projekte veröffentlichen, testen und reparieren Sie weiter. Sie sehen ein Übersichts-Dashboard.

Wie funktioniert der Code-Qualitätsrang von SonarCloud TYPO3?

Sie sollten die grundlegende Terminologie des TYPO3-Code-Reviews wie folgt lernen.

Wartbarkeit

Verschuldung: Die geschätzte Zeit, die benötigt wird, um alle Code-Gerüche zu beheben. Code Smells Code, der verwirrend und schwierig zu pflegen ist.

Zuverlässigkeit

Ein Codierungsfehler, der Ihren Code knackt und sofort behoben werden muss.

Qualitäts-Tor

Es handelt sich um eine Reihe maßstabbasierter boolescher Bedingungen. Damit wissen Sie sofort, ob Ihr Projekt produktionsreif ist. Wenn Ihr aktueller Status nicht bestanden ist, sehen Sie, welche Maßnahmen das Problem verursacht haben und welche Werte zum Bestehen erforderlich sind.

Sicherheit

Schwachstellen: Code, der von Hackern ausgenutzt werden kann. Sicherheits-Hotspots: Sicherheitsempfindlicher Code, der manuell überprüft werden muss, um zu beurteilen, ob eine Schwachstelle vorhanden ist oder nicht.

Duplikationen

Dieselben Codezeilen. Die Anzahl der duplizierten Blöcke von Codezeilen.

Wie kann ich benutzerdefinierte Regeln konfigurieren?

Sie wissen, dass das Gute daran ist: Sie können Ihre eigenen Regeln, Quality Gates usw. erstellen. Das bedeutet, dass Sie Ihre benutzerdefinierten Code-Standards z.B. für PHP PSR-2 konfigurieren können.

Gehen Sie zu Projekte > Verwaltung > Wählen Sie Ihre Spracheinstellungen.

Teil #2 TYPO3-Code-Fussel

Quelle

Um Ihre produktive Zeit zu sparen, ist es immer eine gute Praxis, TYPO3-Code mit Fusseln zu überprüfen, Lernen wir, wie es geht!

Was sind TYPO3-Links?

"Linting" ist die automatische Überprüfung Ihres Quellcodes auf programmatische und stilistische Fehler. Dies geschieht durch die Verwendung eines Fusselwerkzeugs (auch bekannt als Linting). Ein Fusselwerkzeug ist ein grundlegendes statisches Code-Analysegerät.

// For example, a JavaScript linter would flag the first use of parseInt below as unsafe:

// without a radix argument - Unsafe
var count = parseInt(countString);

// with a radix parameter specified - Safe
var count = parseInt(countString, 10);

Wie funktionieren TYPO3 Lint Tools?

Hier sehen Sie, wie Fussel-Tools typischerweise in den Entwicklungsprozess eingepasst werden.

  • Schreiben Sie den Code.

  • Kompilieren Sie ihn.

  • Analysieren Sie ihn mit dem Linter.

  • Überprüfen Sie die durch das Tool identifizierten Fehler.

  • Nehmen Sie Änderungen am Code vor, um die Fehler zu beheben.

  • Verlinken Sie Module, sobald der Code sauber ist.

  • Analysieren Sie sie mit dem Linter.

  • Führen Sie manuelle Codeüberprüfungen durch.

Wo können TYPO3 Lint Tools implementiert werden?

TYPO3 entwickelt mit Varianz Sprache und Konfiguration; Sie sollten in Betracht ziehen, das Folgende für TYPO3 Code Fussel zu implementieren.

Lassen Sie mich versuchen, eine Schritt-für-Schritt-Anleitung für die Installation jeder TYPO3-Fussel zu geben.

  • PHP-PSR-Standards
  • TypoScript
  • Fluid-Vorlagen
  • YAML-Konfiguration
  • XLIFF-Lokalisierung

Anmerkungen: Sie können die folgenden TYPO3-Lints auf drei Arten installieren und konfigurieren: 1. individuell für Ihr Projekt installieren, 2. global installieren, 2. auf Ihrem CI/CD installieren

PHP-Fussel

PHP_CodeSniffer ist ein Satz von zwei PHP-Skripten; das Hauptskript phpcs, das PHP-, JavaScript- und CSS-Dateien tokenisiert, um Verletzungen eines definierten Codierungsstandards zu erkennen, und ein zweites phpcbf-Skript, um Verletzungen des Codierungsstandards automatisch zu korrigieren. PHP_CodeSniffer ist ein wesentliches Entwicklungswerkzeug, das sicherstellt, dass Ihr Code sauber und konsistent bleibt.

// Install popular PHP-Codesniffer
sudo apt install php-codesniffer

// Check individual file
phpcs --standard=PSR2 ext_localconf.php

// Check whole folder’s PHP files
phpcs --standard=PSR2 ./

// Options to ignore the warning, allow extensions, etc.
phpcs --standard=PSR2 --warning-severity=0 --extensions=php *

TypoScript-Fussel

Dieses Paket enthält ein Tool, das die TYPO3-Konfigurationssprache "TypoScript" in einen Syntaxbaum parsen und eine statische Code-Analyse des geparsten Codes durchführen kann. TypoScript-lint kann eine Checkstyle-kompatible Ausgabe erzeugen und kann in Continuous Integration-Umgebungen eingesetzt werden.

// Install TypoScript lint
composer global require helmich/typo3-typoscript-lint

// Create “tslint.yml” TypoScript lint configuration
paths:
- Configuration/PageTSconfig
- Configuration/TypoScript

filePatterns:
 - "*.ts"
 - "*.typoscript"

sniffs:
 - class: Indentation
   parameters:
     indentConditions: true
 - class: RepeatingRValue
   disabled: true
 - class: DeadCode
   disabled: true

// Run TypoScript lint
.config/composer/vendor/bin/typoscript-lint -c tslint.yaml

// Run Single TypoScript lint
.config/composer/vendor/bin/typoscript-lint path/to/your.typoscript

Flüssige Flusen

Unserer Erfahrung nach ist das nicht ausreichend, aber wir haben gehört, dass TYPO3 Fluid 3.0 bessere und eingebaute Fluid-Fussel verwenden würde, Hope for the best.

// Installation of TYPO3 Fluid Lint
composer global require typo3fluid/fluid-lint:dev-master

// Let’s chek TYPO3 Fluid Lint
.config/composer/vendor/bin/fluidline Resoures/Private/Templates/Default.html

YAML-Fussel

Ein Linter für YAML-Dateien. yamllint prüft nicht nur die Gültigkeit der Syntax, sondern auch Seltsamkeiten wie Schlüsselwiederholungen und kosmetische Probleme wie Zeilenlänge, Leerzeichen am Ende, Einrückung usw.

// Install Python-PIP YAML Lint
sudo apt install python-pip
sudo pip install yamllint==1.10.0

// Let’s check whole folder for .yaml or .yml
yamllint -d relaxed .

XLIFF-Fussel

Die Übersetzungskomponente ist ein Linter für XLIFF-Lokalisierungsdateien und bietet Werkzeuge zur Internationalisierung Ihrer Anwendung.

// Install Symfony’s Great Translation XLIFF Lint Component
composer global require symfony/translation

// Check individual XLIFF Lint
php bin/console lint:xliff default.xliff

// Check whole fodler XLIFF Lint
php bin/console lint:xliff /Resources/Private/Language

HerausgeberKonfiguration.org

Abschließend empfehle ich dringend, das beliebteste Konzept von EditorConfig.org zu verwenden. EditorConfig hilft dabei, konsistente Codierstile für mehrere Entwickler, die an demselben Projekt über verschiedene Editoren und IDEs hinweg arbeiten, beizubehalten.

  • Beibehaltung konsistenter Codierungsstile für mehrere Entwickler
  • Richten Sie .editorconfig an der Wurzel Ihres Projekts ein
  • Definieren Sie Standards für Kodierungsstile
  • Plugins für Ihre Lieblings-IDE verfügbar

Erforschen Sie https://editorconfig.org/

Beispiel für eine TYPO3-.editorconfig

# EditorConfig is awesome: http://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

# CSS-Files
[*.css]
indent_style = space
indent_size = 4

# HTML-Files
[*.html]
indent_style = space
indent_size = 4

# TMPL-Files
[*.tmpl]
indent_style = space
indent_size = 4

# TSX-Files
[*.tsx]
indent_style = space
indent_size = 4

# LESS-Files
[*.less]
indent_style = space
indent_size = 4

# JS-Files
[*.js]
indent_style = space
indent_size = 4

# PHP-Files
[*.php]
indent_style = space
indent_size = 4

# MD-Files
[*.md]
indent_style = space
indent_size = 4

# ReST-Files
[*.rst]
indent_style = space
indent_size = 3

# TypoScript
[*.typoscript,*.ts]
indent_style = space
indent_size = 4

# YML-Files
[{*.yml,*.yaml}]
indent_style = space
indent_size = 2

# package.json, composer.json or .travis.yml
[{package.json,composer.json,.travis.yml}]
indent_style = space
indent_size = 2

# SCSS
[*.scss]
indent_style = tab
indent_size = 2

Treffen Sie TYPO3 Lints to Git CI/CD

Warum wollen Sie als moderner TYPO3-Entwickler TYPO3-Fussel manuell überprüfen?

Nun, für produktives Arbeiten sollten Sie in Erwägung ziehen, alle oben genannten TYPO3-Fusseln in Ihrem Git CI/CD zu automatisieren ;)

Wir lieben Gitlab CI/CD. Hier möchte ich ein funktionierendes Beispiel wie unten zeigen.

Beispiel .gitlab-ci.yaml

cache:
 key: "$CI_COMMIT_REF_NAME-$CI_JOB_STAGE"
 paths:
   - .composer/

before_script:
 - apk add git --update

stages:
 - php
 - typoscript
 - yaml
 - fluid
 - xliff

.php: &phptesting
 stage: php
 image: php:$DOCKER_TAG
 only:
   - branches
 before_script:
   - export TYPO3_PATH_WEB="$PWD/.Build/Web"
   - export COMPOSER_CACHE_DIR=.composer
   - curl -OLs https://composer.github.io/installer.sig
   - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
   - php -r "if (hash_file('SHA384', 'composer-setup.php') === trim(file_get_contents('installer.sig'))) { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
   - php composer-setup.php --no-ansi --install-dir=/usr/bin --filename=composer
   - php -r "unlink('composer-setup.php'); unlink('installer.sig');"
   - composer require friendsofphp/php-cs-fixer
 script:
   - .Build/bin/php-cs-fixer fix --dry-run --config=.php_cs --diff

# Tests in PHP 7.2 and TYPO3 9.5 version
php:testphp72:typo3_95:
 <<: *phptesting
 variables:
   DOCKER_TAG: 7.2-alpine
   # TYPO3_VERSION: ^9.5

typoscript:test:
 image: composer:1.6
 stage: typoscript
 before_script:
   - export COMPOSER_CACHE_DIR=.composer
   - composer require --dev helmich/typo3-typoscript-lint
 script:
   - .Build/bin/typoscript-lint -c .tslint.yml

yaml:test:
 image: python:alpine3.7
 stage: yaml
 before_script:
   - pip install yamllint==1.10.0
 script:
   - yamllint -c .yamllint.yml .

fluid:test:
 image: composer:1.6
 stage: fluid
 before_script:
   - export COMPOSER_CACHE_DIR=.composer
   - composer require typo3fluid/fluid-lint:dev-master
 script:
   - .Build/bin/fluidlint Resources/Private/Templates/Default.html

xliff:test:
 image: composer:1.6
 stage: xliff
 before_script:
   - export COMPOSER_CACHE_DIR=.composer
   #- apk --no-cache add libxml2-utils
   #- wget https://raw.githubusercontent.com/symfony/translation/v4.1.1/Resources/schemas/xliff-core-1.0-strict.xsd
   - composer require symfony/translation
 script:
   - .Build/bin/xlifflint /usr/local/bin/php lint:xliff /Resources/Private/Language
   #- xmllint --schema xliff-core-1.0-strict.xsd --noout $(find Resources -name '*.xlf')

Schlussfolgerung

Vielen Dank für die Lektüre des Artikels.

Ich hoffe, Sie haben gelernt und erkundet, wie Sie die Qualität Ihres TYPO3-Codes verbessern können. Lassen Sie uns schnell zum Schluss kommen;

  • Verstehen Sie die Bedeutung der Qualität des TYPO3-Codes und überprüfen Sie ihn.
  • Versuchen Sie eine Ihrer TYPO3-Code-Rezensionen mit SonarCloud, und es ist KOSTENLOS!
  • Ich appelliere an die Entwickler von TYPO3-Extensions, Ihre TER TYPO3-Extension immer zu testen. Es wäre großartig, wenn die TYPO3-Community die Code-Qualität von SonarCloud TYPO3 so einstellen würde, dass der Link auf der Seite der TER-Erweiterung überprüft wird.
  • Implementieren Sie weiterhin alle TYPO3-Lints als automatische TYPO3-Code-Überprüfung, vergessen Sie auch nicht, .editorconfig

Um die Automatisierung zu verbessern, wäre es großartig, TYPO3 Fussel in Ihrem Lieblings-CI/CD zu implementieren.
Kennen Sie fehlende Werkzeuge und Techniken zur Überprüfung von TYPO3-Code? Oder haben Sie Probleme bei SolarCloud oder bei der Implementierung von TYPO3 Fussel? Dann zögern Sie nicht, Ihren Kommentar in das Kommentarfeld unten zu schreiben.

Viel Spaß mit der Qualität des TYPO3-Codes!

Post Comment

Your email address will not be published. Required fields are marked *

×

Name ist erforderlich!

Geben Sie einen gültigen Namen ein

Gültige E-Mail ist erforderlich!

Gib eine gültige E-Mail Adresse ein

Kommentar ist erforderlich!

Google Captcha ist erforderlich!

Bemerkungen :

  • Hildebrant August 7, 2020 Beim 12:56 pm
    Hi, as an experienced developer, these standards are quite familiar to me and you are right, if we all adhere to standards, it will be relatively easy to take up a TYPO3 project written by someone else and fix bugs or extend functionality. Thanks for sharing!
  • Isaak August 7, 2020 Beim 12:54 pm
    Great Sanjay! A very must-read article on TYPO3 coding. I think I need to change some bad coding habits if I want to progress. ;) Thank you so much.

Stay up to date with our recent TYPO3 Blogs, news, & updates