Git pré-réception de crochet pour lancer PHP CodeSniffer [fermé]
-
23-09-2019 - |
Question
Je voudrais vérifier le code commis à mon dépôt git à distance avec PHP CodeSniffer et le rejeter s'il existe des normes de code de problèmes. Quelqu'un at-il un exemple comment l'utiliser sur dépôt distant git ou peut-être par exemple comment l'utiliser avec crochet avant de recevoir? Merci.
La solution
Peut-être que ce point vous dans la bonne direction: (Orginal à partir de: http: // www.squatlabs.de/versionierung/arbeiten-git-hooks en allemand)
#!/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);
Vous devez modifier l'exécutif de ligne exec ( 'php -l ... pour pointer vers votre installation codesniffer.
Autres conseils
Ok j'ai trouvé la solution:)
Ceci est une preuve de concept :) Code pour crochet pré-recevoir:
#!/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
Ce code exemple sera uniquement blobs d'impression reçue par dépôt à distance, mais il est assez pour quelqu'un qui a besoin quelque chose comme ça va (je l'espère).
Vous pouvez mettre chaque blob dans une course de fichier temporaire que vous avez besoin sur ce fichier supprimer le fichier et ainsi de suite ...
Cela pourrait aider à: http: // GitHub. com / s0enke / git crochets / arbre / maître / phpcs-pre-commit /
J'ai développé un crochet git pré-réception basée sur PHPCodeSniffer pour vérifier le style de code de PHP, JavaScript et fichiers CSS.
Mon script est disponible à partir Github: https://github.com/blueicefield/PHP_CodeSniffer_GIT_Hook