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.

Était-ce utile?

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 ...

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top