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

Analyser un projet PHP avec Jenkins

Feb 19, 2025 am 11:41 AM

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1670
14
Tutoriel PHP
1274
29
Tutoriel C#
1256
24
Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Apr 17, 2025 am 12:06 AM

Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

PHP et Python: comparaison de deux langages de programmation populaires PHP et Python: comparaison de deux langages de programmation populaires Apr 14, 2025 am 12:13 AM

PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.

PHP en action: Exemples et applications du monde réel PHP en action: Exemples et applications du monde réel Apr 14, 2025 am 12:19 AM

PHP est largement utilisé dans le commerce électronique, les systèmes de gestion de contenu et le développement d'API. 1) E-commerce: Utilisé pour la fonction de panier et le traitement des paiements. 2) Système de gestion du contenu: utilisé pour la génération de contenu dynamique et la gestion des utilisateurs. 3) Développement des API: Utilisé pour le développement de l'API RESTful et la sécurité de l'API. Grâce à l'optimisation des performances et aux meilleures pratiques, l'efficacité et la maintenabilité des applications PHP sont améliorées.

Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Apr 17, 2025 am 12:25 AM

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

La pertinence durable de PHP: est-elle toujours vivante? La pertinence durable de PHP: est-elle toujours vivante? Apr 14, 2025 am 12:12 AM

PHP est toujours dynamique et occupe toujours une position importante dans le domaine de la programmation moderne. 1) La simplicité de PHP et le soutien communautaire puissant le rendent largement utilisé dans le développement Web; 2) sa flexibilité et sa stabilité le rendent exceptionnelle dans la gestion des formulaires Web, des opérations de base de données et du traitement de fichiers; 3) PHP évolue et optimise constamment, adapté aux débutants et aux développeurs expérimentés.

PHP et Python: différents paradigmes expliqués PHP et Python: différents paradigmes expliqués Apr 18, 2025 am 12:26 AM

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

Comment empêchez-vous l'injection SQL en PHP? (Déclarations préparées, APD) Comment empêchez-vous l'injection SQL en PHP? (Déclarations préparées, APD) Apr 15, 2025 am 12:15 AM

L'utilisation de déclarations de prétraitement et l'APD dans PHP peut effectivement empêcher les attaques d'injection SQL. 1) Utilisez PDO pour vous connecter à la base de données et définir le mode d'erreur. 2) Créez des instructions de prétraitement via la méthode de préparation et transmettez des données à l'aide des espaces réservés et exécutez des méthodes. 3) Traitez les résultats de la requête et assurez la sécurité et les performances du code.

PHP et Python: exemples de code et comparaison PHP et Python: exemples de code et comparaison Apr 15, 2025 am 12:07 AM

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

See all articles