Mi piacerebbe controllare il codice impegnato nel mio repository git remoto con PHP CodeSniffer e rifiutarlo se ci sono problemi con gli standard di codice. Qualcuno ha un esempio su come usarlo su git repository remoto o magari ad esempio come usarlo con il gancio di pre-ricezione? Grazie.Git pre-receive per lanciare PHP CodeSniffer
risposta
Forse questo ti punto nella giusta direzione: (Orginal da: http://www.squatlabs.de/versionierung/arbeiten-git-hooks in tedesco)
#!/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);
Si dovrà modificare la riga exec exec ('php -l ... per puntare al tuo codesniffer . installazione
Ok ho trovato la soluzione :)
si tratta di codice di prova :) per il pre-ricezione gancio:
#!/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
Questo codice di esempio stamperà solo i BLOB ricevuti dal repository remoto, ma è sufficiente per far sì che qualcuno abbia bisogno di qualcosa del genere (spero).
È possibile inserire tutti i blob in un certo periodo di file temporanei tutto ciò che serve su questo file eliminare il file e così via ...
grazie, questo ha aiutato molto –
Questo potrebbe aiutare: http://github.com/s0enke/git-hooks/tree/master/phpcs-pre-commit/
Questo è un hook pre-commit, che è molto diverso. –
ho sviluppato un gancio git pre-ricezione basato su PHPCodeSniffer per verificare lo stile del codice dei file PHP, JavaScript e CSS.
mio script è disponibile da Github: https://github.com/blueicefield/PHP_CodeSniffer_GIT_Hook
Puoi estendere la tua risposta con un esempio? Come nell'esempio di bash in una risposta sopra? Quindi è chiaro dalla sola risposta come usare? – hakre
- 1. PHP CodeSniffer errore include_once
- 2. include_path errato per Codesniffer
- 3. Come utilizzare CodeSniffer in Netbeans 8.1
- 4. Come configurare PHP CodeSniffer per consentire il rientro delle mie istruzioni case nel modo che preferisco?
- 5. Lanciare la moneta per imparare PHP o JavaScript prima
- 6. Qual è il modo giusto per installare codesniffer nella versione standalone di Aptana Studio?
- 7. codesniffer usando la riga standard ignora indent
- 8. Lanciare una vecchia storia su git repo pieno di binari
- 9. Xcode Button per lanciare l'URL
- 10. Come rilevare campi declarated dinamici su oggetti con codesniffer in PHP
- 11. Come posso impostare il mio livello di rientro preferito con PHP CodeSniffer?
- 12. PHP Mess Detector per Eclipse
- 13. Lanciare un'eccezione invece di un errore da un'estensione PHP
- 14. PHP: errore "o" sull'istruzione fallita: come lanciare una nuova eccezione?
- 15. PHP: float dipendente dal luogo di stringa di lanciare
- 16. Lanciare Y o N per boolare C#
- 17. Motivi per lanciare esplicitamente una NullReferenceException?
- 18. Come causare .NET 4 per lanciare ExecutionEngineException?
- 19. Applicazioni per iPhone e iPad Lanciare immagini
- 20. Modo pulito per lanciare l'eccezione php attraverso jquery/ajax e json
- 21. Conosci un semplice script php per lanciare 403, dopo il controllo ip?
- 22. Devo lanciare nella mia lambda o lanciare IEnumerable?
- 23. Quando restituire bool, lanciare un'eccezione e quale eccezione lanciare
- 24. Foreach può lanciare InvalidCastException?
- 25. come lanciare SKSpriteNode?
- 26. come lanciare un IOException?
- 27. Lanciare da lambda
- 28. Esecuzione di comandi git via PHP
- 29. Quale eccezione lanciare?
- 30. Lanciare manualmente un'eccezione
purtroppo non funziona con pre-ricevere gancio :( – Ralphz
Nop, dovrete creare un pre-commit sul lato client, ma è possibile seguire il AFAIK, il server non può testare il contenuto quando si spinge ... :( – FMaz008