Utiliser CodeClimate avec Github & Travis dans un projet PHP
Après avoir utilisé Scrutinizer-CI, j’ai décidé d’utiliser CodeClimate pour PHPPresentation.
Ajout du projet sur CodeClimate
Après une connexion via GitHub, j’ai ajouté un projet de type « Repository GitHub ».
Vous avez juste à ajouter le propriétaire et le nom du projet GitHub. Dans notre cas, ce sera « PHPOffice/PHPPresentation ».
L’ajout se fait automatiquement et après le premier build, votre accueil devrait se présenter comme cela :
Intégration de CodeClimate dans votre projet
Pour cela, il suffit de rajouter à la racine de votre dépôt un fichier .codeclimate.yml de ce type :
engines: phpcodesniffer: enabled: true phpmd: enabled: true duplication: enabled: true config: languages: - php ratings: paths: - src/**/* - tests/** exclude_paths: - vendor/**/*
Grâce au nœud « engines », votre projet sera testé via PHPCodeSniffer, PHPMd et via un outil interne sur la duplication de code.
Grâce au nœud « ratings », seuls les chemins définis seront utilisés pour le calcul de votre projet.
Grâce au nœud « exclude_paths », les chemins définis seront exclus de l’analyse.
Intégration de CodeClimate avec Travis-CI
Il vous faut pour cela aller dans les settings du projet puis sur l’onglet « Test Coverage ».
A partir de là, tout devrait vous être expliqué.
Mais en gros, cela se passe comme tel :
- Modifier votre composer.json pour ajouter un require-dev :
{ "require-dev": { "codeclimate/php-test-reporter": "dev-master" } }
- Modifier votre .travis.yml pour que PHPUnit gère bien un fichier clover.xml :
phpunit --coverage-clover build/logs/clover.xml
- Modifier votre .travis.yml pour ajouter le token du repo pour l’addon
- Modifier votre .travis.yml pour que dans la partie after_script, les données soient envoyées :
after_script: - vendor/bin/test-reporter
Conclusion
Votre code sera désormais testé via l’outil d’analyse de code statique qu’est CodeClimate et un rapport vous sera fourni où seront disponible les erreurs tel le code dupliqué, les erreurs dans le coding style, des vulnérabilités potentiels, des morceaux de code à clarifier car pouvant porter à confusion ou des codes contenant trop de lignes et générant ainsi de la complexité cyclomatique.
Commentaires
Merci pour votre aide, j’en avais bien besoin
Ajouter un commentaire