PMD est un analyseur syntaxique pour le langage Java. Vous pouvez utiliser PMD en mode embarqué ou bien transmettre vos rapports PMD à Themis.

Analyse embarquée dans Themis

Pour déléguer à Themis l'analyse de votre code Java à PMD, il vous faut configurer dans un premier temps le mode linters embarqués pour votre source. Vous pouvez ensuite ajouter un sous-plugin pour PMD.

L'exécution de PMD est paramétrée par un ensemble de rulesets, chacun définissant un ensemble de règles à observer au moment de l'analyse. Voici un exemple de catalogue de rulesets.

Themis utilise l'ensemble des règles existantes pour Java grâce au ruleset global : ruletsets/internal/all-java.xml.

Vous pouvez modifier cette configuration en indiquant une liste de rulesets séparés par des virgules (,). 

Exemple : rulesets/java/unusedcode.xml,rulesets/java/basic.xml

Informations et versions installées

Site web : https://pmd.github.io

Extensions des fichiers analysés : .java.

Version de Themis Version de PMD
1.0.4 5.5.3

 

Envoi de rapports PMD à Themis

Si vous utilisez PMD en dehors de Themis, vous avez la possibilité de synchroniser les rapports produits par PMD au format XML à Themis.

Préparation de la source dans Themis

Les rapports PMD produits sont associés à un de vos dépôts de code. Vous devez indiquer à votre source Themis que les données liées à la couverture de code proviendront de rapports externes. 

Pour cela, rendez-vous dans la partie Administration, puis Projets et identifiez la Source concernée. Ajoutez ensuite un plugin pour la pratique "Dette technique", en indiquant Rapports externe - PMD. Pour rappel, l'ajout d'un plugin se fait en ouvrant la liste des plugins de la source, puis en cliquant sur Ajout un plugin.

Utilisation du plugin Jenkins

Dans Jenkins, ajoutez une étape dans la partie Actions à la suite du build, en cliquant sur la liste déroulante Ajouter une action après le build. Sélectionnez Send report files to Themis.

Au moment d'ajouter cette étape, le rapport XML produit par PMD doit être disponible dans le répertoire de travail Jenkins. Vous avez donc déjà exécuté PMD au moment d'ajouter cette étape dans votre workflow.

Sélectionnez l'instance de Themis et indiquez la clé de la source associée au dépôt de code en cours d'analyse dans Jenkins.

Dans la section Report Files, sélectionnez pour Type la valeur PMD. Puis dans Path, indiquez une ou plusieurs expressions (séparées par des virgules) permettant d'accéder aux fichiers XML produits par PMD. Par exemple, pmd.xml ou**/target/**/pmd.xml

Envoi de fichiers par l'API REST

Si vous n'utilisez pas Jenkins, ou ne souhaitez pas utiliser le plugin Jenkins, il est possible d'utiliser l'API de Themis pour synchroniser les rapports PMD. Voici un exemple de script BASH que vous pouvez implémenter dans un autre langage si vous le souhaitez (les variables au début sont à adapter dans votre contexte).

Notez que le type de rapports à préciser est pmd dans le payload de la requête. 

#!/bin/bash

#TOCHANGE THEMIS_URL="http://mythemis.com" SOURCE_KEY="da4e11f4-5489-4b2a-a028-20d071b1c671" API_KEY="NWJjZWQ3ZmNhYTJhYzkwMWRmNGZhYTYx" PMD_REPORT_FILE="pmd.xml" CURRENT_COMMIT=$(git rev-parse HEAD) #Current GIT commit
#For SVN : $(svn info --show-item last-changed-revision) CURRENT_DATE=$(date +%s)"000" WORKSPACE=$(pwd) #the root directory of the source code repository REPORT_ARCHIVE="themis_report.zip" #First of all, create a directory with all PMD reports REPORT_DIR=$(mktemp -d -p /tmp) find . -name $PMD_REPORT_FILE -exec cp --parents \{\} $REPORT_DIR \; if [ -e $REPORT_ARCHIVE ];then echo "Remove existing archive" rm $REPORT_ARCHIVE else echo "File "$REPORT_ARCHIVE" does not exist" fi #Create archive to send to Themis zip -r $REPORT_ARCHIVE $REPORT_DIR curl -i \ -H "Content-Type: multipart/form-data" \ -H "Accept: application/json,application/zip" \ -H "themis-api-key:$API_KEY" \ -X POST \ -F 'metadata={ "executionDate" : "'$CURRENT_DATE'", "dataType" : "pmd", "commit" : "'$CURRENT_COMMIT'", "dataWorkspace" : "'$WORKSPACE'"};type=application/json' \ -F "archive=@"$REPORT_ARCHIVE";type=application/zip" \ $THEMIS_URL/api/reportFiles/$SOURCE_KEY rm -rf $REPORT_DIR
rm $REPORT_ARCHIVE
Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 0 sur 0

Commentaires

0 commentaire

Veuillez vous connecter pour laisser un commentaire.