Ich möchte Code, der an mein Remote-Git-Repository übergeben wurde, mit PHP CodeSniffer überprüfen und ihn ablehnen, wenn es irgendwelche Code-Standards gibt. Hat jemand ein Beispiel, wie man es auf dem Remote-Repository von git verwendet oder vielleicht ein Beispiel, wie man es mit einem Pre-Receive-Hook benutzt? Vielen Dank.Git pre-receive Hook zum Starten von PHP CodeSniffer
Antwort
Vielleicht haben Sie diesen Punkt in die richtige Richtung: (Orginal von: http://www.squatlabs.de/versionierung/arbeiten-git-hooks in Deutsch)
#!/usr/bin/php
<?php
$output = array();
$rc = 0;
exec('git rev-parse --verify HEAD 2> /dev/null', $output, $rc);
if ($rc == 0) $against = 'HEAD';
else $against = '4b825dc642cb6eb9a060e54bf8d69288fbee4904';
exec('git diff-index --cached --name-only '. $against, $output);
$needle = '/(\.php|\.module|\.install)$/';
$exit_status = 0;
foreach ($output as $file) {
if (!preg_match($needle, $file)) {
// only check php files
continue;
}
$lint_output = array();
$rc = 0;
exec('php -l '. escapeshellarg($file), $lint_output, $rc);
if ($rc == 0) {
continue;
}
# echo implode("\n", $lint_output), "\n";
$exit_status = 1;
}
exit($exit_status);
Sie haben die exec Zeile exec ('php -l bearbeiten ... auf Ihre codesniffer-zu-Punkt . Installation
Ok ich die Lösung gefunden :)
Dies ist proof of concept code :) für vorge erhalten Haken:
#!/bin/bash
while read old_sha1 new_sha1 refname; do
echo "ns: " $new_sha1;
echo "os: " $old_sha1;
echo "----"
git ls-tree -r $new_sha1 | cut -f 3 -d ' ' | cut -f 1 | while read file; do
git cat-file blob $file
done;
echo "----"
done
exit 1
Dieser Beispielcode druckt nur Blobs, die vom Remote-Repository empfangen werden, aber es ist genug, um jemanden zu bekommen, der so etwas benötigt (hoffentlich).
Sie jeden Klecks in einer temporären Datei ausgeführt setzen kann, was Sie zu dieser Datei benötigen Sie die Datei löschen und so weiter ...
danke, das hat mir sehr geholfen –
Diese helfen kann: http://github.com/s0enke/git-hooks/tree/master/phpcs-pre-commit/
Dies ist ein Pre-Commit Hook, der sehr unterschiedlich ist. –
ich einen Pre-erhalten git entwickelt Haken basierend auf PHPCodeSniffer zur Überprüfung des Code-Stylings von PHP-, JavaScript- und CSS-Dateien.
Mein Skript ist von Github verfügbar: https://github.com/blueicefield/PHP_CodeSniffer_GIT_Hook
Können Sie Ihre Antwort mit einem Beispiel erweitern? Wie das bash Beispiel in einer Antwort oben? So ist es aus der Antwort allein klar, wie zu verwenden? – hakre
- 1. git pre-commit hook bypass email
- 2. Git-Hook-Syntax-Check
- 3. Wie mit codesniffer in PHP
- 4. Git global hook customization
- 5. Aufruf 'Git ziehen' von einem Git-Post-Update-Hook
- 6. 'git pull' Befehl funktioniert von Terminal, aber nicht mit PHP shell_exec() über Git-Repository-Hook
- 7. php codesniffer + XAMPP: Fehlende PEAR/Exception.php
- 8. Falscher include_path für Codesniffer
- 9. Git pre-commit hook: geänderte/hinzugefügte Dateien
- 10. git pre-receive hook abgelehnt mit heroku
- 11. Verwenden Sie Egit, um den Vorbereitungs-Hook zu starten
- 12. Pass Parameter zu git Pre-Push-Hook
- 13. Kann nicht nach dem Commit git Hook auf Git Submodul
- 14. Git-Hook, ändern Sie Commit-Dateien
- 15. Welcher Benutzer führt den Git-Hook aus?
- 16. JIRA Code Validierung Commit Hook für 'Git'
- 17. Pre-Fetch-Hook-Funktionalität in Git
- 18. Wie nützlich ist PHP CodeSniffer? Code Standards Durchsetzung im Allgemeinen?
- 19. Pear CodeSniffer Cyclomatic Komplexität
- 20. Kann gitolite git commit-msg hook verwalten?
- 21. Git Remote/Shared Pre-Commit Hook
- 22. Git Post-Receive-Hook für Website-Staging
- 23. Gibt es einen Git-Hook, der auf Git-Reset läuft?
- 24. Blankes Betriebssystem zum Starten von
- 25. Verwenden von Git-Hook zum Hinzufügen von Lizenzen und App-Version zum Kommentieren am Anfang der Quelldateien
- 26. CodeSniffer Funktioniert nicht mit Mamp und PHP7.0.0
- 27. Wie verwende ich CodeSniffer in Netbeans 8.1
- 28. Lesen von STDIN auf einem Git Pre-Commit Hook (mit PHP)
- 29. PHP Codesniffer gibt nichts zurück ... ist mein Code im Standard?
- 30. Hook zum Hinzufügen von Befehlen zu distutils Build?
leider ist es nicht mit vorge erhalten arbeiten Haken :( – Ralphz
Nop, werden Sie ein pre-commit auf Client-Seite erstellen müssen, aber Sie können die Spur hook, so dass jeder Entwickler die Haken ziehen muss AFAIK, du der Server kann den Inhalt beim Drücken nicht testen ... :( – FMaz008