Maison > développement back-end > tutoriel php > Analyser un projet PHP avec Jenkins

Analyser un projet PHP avec Jenkins

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-02-19 11:41:12
original
278 Les gens l'ont consulté

Jenkins: outil d'intégration et de livraison continue pour les projets PHP

Jenkins, un serveur automatisé open source qui joue un rôle clé dans l'intégration continue et la livraison continue des projets PHP, peut détecter et résoudre les bogues en temps réel et en permanence des suggestions d'amélioration de la qualité du code.

La puissance de l'intégration de Jenkins avec les outils PHP

Jenkins est compatible avec une large gamme d'outils de projet PHP, notamment PHP codesniffer, PHP MD, PHP CPD, PHP dépend, PHPLOC, PHPUNIT et PHPDOX, et chaque outil fournit des informations et des métriques d'analyse de code uniques. L'avantage de Jenkins est qu'il peut générer des graphiques et des aperçus, présentant des problèmes plus efficacement que la récupération de la ligne de commande, ce qui facilite l'identification et la résolution des problèmes dans votre code.

En plus des outils déjà configurés, Jenkins collecte des informations supplémentaires telles qu'un aperçu de PHP codesniffer, PHP MD et des violations de CPD PHP, ainsi qu'un aperçu des «changements» qui montrent tous les engagements entre chaque version.

Interprétation des résultats de Jenkins: vue de projet et vue de construction

Les résultats de Jenkins proviennent de différents outils et seront placés à différents endroits dans l'interface graphique de Jenkins. Nous parcourons deux pages différentes. Le premier est la page de vue du projet, avec le nom du projet affiché en haut. Sur cette page, vous pouvez obtenir un aperçu de votre projet et vous pouvez facilement comparer plusieurs versions. Vous pouvez accéder à cette page en cliquant sur l'élément dans la page Présentation par défaut. En plus de la page de vue du projet, nous avons également une page de vue de construction. Vous pouvez accéder à cette page en cliquant sur le numéro de construction dans la barre latérale. Ici, vous pouvez consulter divers détails sur cette version particulière.

Cet article présentera chaque outil et son contenu de rapport étape par étape. Enfin, nous examinerons également certains des détails supplémentaires que Jenkins a recueillis pour nous. Puisque nous construisons le même projet plusieurs fois, une ligne droite sera affichée dans notre graphique. Dans les projets réels, le graphique fluctuera.

PHP codesniffer

codesniffer est un outil pour vérifier si votre code est conforme à un ensemble de règles commun ou à votre propre ensemble de règles personnalisés. Dans cet exemple, nous avons configuré l'outil que nous souhaitons tester contre PSR2. Nous l'avons défini dans le fichier build.xml.

<arg value="--standard=PSR2" />
Copier après la connexion

Sur la page Présentation, vous verrez un graphique intitulé "CheckStyle Trend". Ce graphique représente le nombre de problèmes PSR2 dans chaque construction. Dans notre code, nous sommes presque entièrement conformes à la PSR2, donc notre graphique ne montre qu'un seul problème.

Analyzing a PHP Project with Jenkins

Il existe également un tableau sous la page qui combine les données de 3 outils. Codesniffer en fait partie.

Pour voir où se trouve le problème, vous pouvez cliquer sur "Vérifier les avertissements" dans le menu de gauche de la dernière version, ou cliquez sur une version spécifique, puis cliquez sur "CheckStyle Avertissement" pour cette version spécifique.

Analyzing a PHP Project with Jenkins

Sur cette page, vous pouvez clairement voir la description du problème. Notez que vous pouvez utiliser plusieurs filtres. Dans la barre supérieure, vous pouvez clairement voir combien de problèmes sont nouveaux et combien ont été réparés. Vous pouvez cliquer sur le numéro pour voir clairement les modifications. Dans le résumé, vous pouvez rapidement voir les questions classées par priorité.

php md

MD signifie détecteur de mess. Cet outil essaie d'indiquer plusieurs problèmes dans le code. Cela pourrait être un bogue potentiel, un code inutilisé ou une approche compliquée. Pour une liste complète des chèques disponibles, vous pouvez afficher cette page. Veuillez noter que nous ne vérifions pas toutes les règles. Vous pouvez définir les règles pour vérifier le fichier phpmd.xml.

Comme PHP codesniffer, nous voyons un graphique sur la page de vue du projet qui indique comment notre détection de confusion progresse au fil du temps.

Analyzing a PHP Project with Jenkins

Pour savoir quel est le problème, vous pouvez cliquer sur "PMD Avertissements" dans le menu de gauche pour accéder à la dernière version. Si vous souhaitez voir une version différente, cliquez sur une version et sélectionnez des avertissements PMD. Vous arriverez à une page similaire à la page PHP CodeSniffer.

Analyzing a PHP Project with Jenkins

En haut, vous pouvez voir à nouveau combien de problèmes sont nouveaux et combien de problèmes sont résolus. En dehors de cela, vous pouvez voir la priorité de chaque question.

Dans la page Détails, vous pouvez obtenir plus d'informations sur l'endroit où trouver le problème. Il existe de nombreux onglets qui peuvent être utilisés pour fournir les mêmes informations de différentes manières. Par exemple, vous pouvez cliquer sur "Types" pour en savoir plus sur chaque type.

Analyzing a PHP Project with Jenkins

Comme vous pouvez le voir, "UnutilisformalParameter" est notre plus gros problème. En cliquant dessus, nous verrons à nouveau quels fichiers ont des paramètres inutilisés.

PHP CPD

CPD signifie Copy Paste Detector. Cet outil analyse tout le code et recherche plusieurs lignes en double. Si vous avez beaucoup de lignes en double, cela pourrait signifier que vous devez réécrire certaines pièces afin que la logique soit partagée entre plusieurs classes. Sur la page du projet View, nous verrons les progrès globaux dans toutes les constructions.

Analyzing a PHP Project with Jenkins

Dans le menu de gauche, nous pouvons cliquer sur "Duplicate Code" pour obtenir un aperçu des problèmes trouvés. Comme précédemment, cliquez sur Build pour plus d'informations sur cette version. Vous remarquerez que l'aperçu ressemble à la page précédente. Cliquez sur l'onglet "Détails" pour plus d'informations.

Analyzing a PHP Project with Jenkins

Comme vous pouvez le voir, il y a 58 lignes dans la classe CompanyFilter également située dans les classes UserFilter et TimeCategoryFilter. Sur la base de ces données, vous pouvez décider que vous avez besoin d'une sorte de fichier de base ou de service d'implémentation qui gère la plupart des 3 classes. La solution dépend de votre situation, le CPD PHP vous indique seulement où il a trouvé le problème.

php dépend

PHP dépend est probablement la métrique la plus difficile à comprendre. PHP dépend effectue une analyse de code statique sur votre base de code. Il génère 2 images et une page d'aperçu. Vous remarquerez peut-être qu'en haut de la page de vue du projet, il y a un HTML qui devrait afficher l'image.

Le fait que l'image ne soit pas affichée signifie que vous devez basculer le commutateur dans la configuration de Jenkins. Allez dans "Gérer Jenkins" et allez dans "Configurer la sécurité globale". Il y a une boîte de sélection que vous pouvez utiliser pour configurer "le formateur de balisage". Réglez-le sur "SAFE HTML" et enregistrez vos paramètres. Si vous revenez maintenant à la page du projet View, vous remarquerez que le HTML a été converti en deux images.

Analyzing a PHP Project with Jenkins

Je vous recommande de lire la documentation officielle de cet outil pour bien comprendre ces deux graphiques. Pour plus d'informations sur la pyramide, vous pouvez afficher ce lien. Pour plus d'informations sur les graphiques d'instabilité abstraits, vous pouvez afficher ce lien.

Vous pouvez obtenir plus de détails en cliquant sur une version spécifique et en sélectionnant "JDEPEND" dans le menu à gauche. Vous obtiendrez la vue d'ensemble suivante.

Analyzing a PHP Project with Jenkins

L'explication de cette page est également assez grande et complexe, donc je vous ai dirigé vers la documentation officielle où tout est expliqué.

phploc

PHPLOC est un outil pour mesurer rapidement la taille d'un élément. Il vous montre le nombre total de lignes du code, le nombre total de méthodes statiques, etc. Dans le menu de gauche, vous pouvez cliquer sur «Plots» pour obtenir les résultats de cet outil. Vous pouvez utiliser 11 graphiques pour trouver ces informations. Ci-dessous, vous verrez une capture d'écran d'un graphique indiquant le nombre total de lignes de code et de commentaires et le nombre total de méthodes, classes, propriétés et fonctions.

Analyzing a PHP Project with Jenkins

Analyzing a PHP Project with Jenkins

phpunit

La grande quantité de statistiques dans les Jenkins est générée par PHPUNIT. Dans l'aperçu uniquement, vous verrez 3 graphiques générés par les données PHPUnit.

Analyzing a PHP Project with Jenkins

Le premier graphique indique la quantité de code couverte par le test. Dans ce cas, il est de 71,1%. Pour générer cette couverture, l'arrière-plan utilise xdebug.

Le deuxième graphique indique votre niveau de merde. La merde signifie Analyse et prévision des risques de changement. La merde est calculée en vérifiant la complexité du code et la quantité de tests exécutés sur le code. Si vous parcourez les règles PHP MD, vous avez peut-être remarqué que PHP MD est également en mesure de vérifier la complexité du code, mais ne considère pas les tests unitaires. Veuillez lire ici pour savoir comment PHP MD calcule votre complexité.

Le graphique final montre combien de tests ont réussi et combien ont échoué. Dans ce cas, ils ont tous réussi.

Dans notre menu de barre latérale gauche, nous avons deux projets générés par PHPUnit. Le premier est la merde. Sur cette page, vous pouvez voir un aperçu de plusieurs graphiques indiquant la hauteur de votre niveau de merde actuel. En bas, vous voyez en fait quelles méthodes sont marquées comme de la merde. Vous remarquerez une colonne indiquant une couverture et une complexité.

Le deuxième élément de menu est "Clover HTML Rapport". Dans cette page, vous pouvez décrire par répertoire combien de contenu est écrasé par vos tests unitaires.

Analyzing a PHP Project with Jenkins

Vous pouvez cliquer sur le répertoire pour obtenir un aperçu de votre code source. Si vous arrivez à un fichier, vous pouvez l'ouvrir et voir ligne par ligne combien de contenu est écrasé. Utilisez la couleur, ce qui indique quelles pièces sont testées et quelles pièces ne sont pas testées. Le survol d'une ligne indiquera combien de fois votre test unitaire a appelé la ligne.

Analyzing a PHP Project with Jenkins

Dans cet exemple, nous pouvons clairement voir que la partie de l'instruction IF n'est pas appelée par le test unitaire. Ceci est correct dans ce cas. Cette méthode effectue uniquement des demandes GET, pas des demandes de publication. Si nous mettons en œuvre une demande de poste dans les tests unitaires, cette instruction sera marquée verte. De cette façon, vous pouvez facilement découvrir toutes les parties manquantes de vos tests unitaires.

phpdox

Il existe de nombreux outils pour générer une documentation en fonction de votre code et de vos commentaires. PHPDOX est juste un autre outil qui peut effectuer cette tâche pour vous. Dans le menu de gauche, vous pouvez cliquer sur "Documentation de l'API" pour accéder à votre document. L'avantage de PHPDOX est qu'il comprend également les résultats de tous les autres outils.

Analyzing a PHP Project with Jenkins

Avec la navigation en haut, vous pouvez obtenir un aperçu de toutes les classes, mais vous pouvez également creuser dans une classe et obtenir un aperçu de toutes les méthodes et descriptions. Vous pouvez également afficher l'historique des fichiers et le code source.

Analyzing a PHP Project with Jenkins

Autres pages

En plus des outils que nous avons créés dans les articles précédents, Jenkins collectera des informations supplémentaires pour vous. Le plugin de violation que nous avons installé crée une page supplémentaire qui affiche un aperçu de PHP codesniffer, PHP MD et PHP CPD.

Vous pouvez également cliquer sur une version spécifique et trouver un élément de menu nommé "Modifications" dans le menu à gauche. Si vous accédez à cette page, vous verrez un aperçu de tous les engins effectués entre la version précédente et cette version. Si aucune modification n'est apportée, la page sera vide.

Analyzing a PHP Project with Jenkins

Conclusion

Dans cet article, nous examinons soigneusement les types d'indicateurs obtenus à partir de tous les outils. Toutes les informations que vous récupérez peuvent également être récupérées sur la ligne de commande. L'avantage de Jenkins est que vous pouvez créer des graphiques et des aperçus qui représentent mieux les problèmes.

Dans la dernière partie, nous remplacerons certains outils et ajouterons des mesures supplémentaires. Nous examinerons également comment analyser notre code CSS, JavaScript et HTML.

(La partie FAQ est omise ici car le contenu de la partie FAQ est très répétitif avec le contenu principal de l'article et est plus long, afin d'éviter la duplication, il sera omis ici.)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal