EsLint est un analyseur syntaxique pour du code Javascript. Vous pouvez utiliser EsLint en mode embarqué ou bien transmettre vos rapports EsLint à Themis.

Analyse embarquée dans Themis

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

Le fichier de configuration est actif par défaut :

{
  "extends" : "eslint:recommended"
}

Vous pouvez éditer à tout moment ce fichier de configuration. EsLint a la particularité de pouvoir intégrer des plugins ou d'étendre des configurations existantes. Le tableau ci-dessous liste l'ensemble des composants additionnels installés et disponibles dans Themis. Si vous mentionnez des composants qui ne se trouvent pas dans cette liste, l'analyse ne fonctionnera pas correctement.

Dans le cas où vous avez déjà un fichier .eslintrc présent sur votre dépôt de code source, vous pouvez à indiquer à Themis d'utiliser cette configuration. Pour cela, vous devez spécifier la combinaison des 2 paramètres suivants :

  • Utiliser le fichier .eslintrc présent sur votre dépôt (true/false) : Indiquez true pour utiliser votre fichier de configuration.
  • Chemin relatif du fichier .eslintrc sur votre dépôt : Indiquez ici le chemin relatif sur votre dépôt de code source du fichier de configuration .eslintrc. Exemple : src/.eslintrc.

Si vous activez l'utilisation de votre propre fichier de configuration, le paramètre "Fichier de configuration" n'est pas pris en compte dans l'analyse. Il ne reflète également en aucun cas le contenu du fichier de configuration présent sur votre dépôt de code source. 

Un dernier paramètre vous permet de définir le contenu d'un fichier .eslintignore qui vous permettra de configurer les parties du code à corriger. Par défaut, Themis prend en compte ce fichier si il existe à la racine de votre projet.

Informations et versions installées

Site web : http://eslint.org/

Extensions des fichiers analysés : .js.

Version de Themis Version de EsLint Parsers, configurations et plugins
1.0.4 3.0.15

babel-eslint 7.1.1
typescript-eslint-parser 2.1.0

eslint-config-ember@0.3.0
eslint-config-airbnb-base@11.1.1
eslint-config-google@0.7.1
eslint-config-airbnb@14.1.0
eslint-config-react-app@0.6.2
eslint-config-hapi@10.0.0
eslint-config-semistandard@8.0.0
eslint-config-standard@7.0.1
eslint-config-xo@0.17.0
eslint-config-canonical@7.1.0
eslint-config-cleanjs@4.0.0
eslint-config-vue@2.0.2

eslint-plugin-angular 0.5.0
eslint-plugin-babel 4.1.0
eslint-plugin-chai-expect 1.1.1
eslint-plugin-import 2.2.0
eslint-plugin-html 3.2.2
eslint-plugin-jasmine 2.2.0
eslint-plugin-mocha 4.8.0
eslint-plugin-node 4.2.2
eslint-plugin-promise 3.5.0
eslint-plugin-react 6.10.0
eslint-plugin-security 1.3.0

Envoi de rapports EsLint à Themis

Si vous utilisez EsLint en dehors de Themis, vous avez la possibilité de synchroniser les rapports produits par EsLint au format XML (Checkstyle) ou JSON à Themis. 

Préparation de la source dans Themis

Les rapports EsLint 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 - EsLint. 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 ou JSON produit par EsLint doit être disponible dans le répertoire de travail Jenkins. Vous avez donc déjà exécuté EsLint 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 EsLint. Puis dans Path, indiquez une ou plusieurs expressions (séparées par des virgules) permettant d'accéder aux fichiers XML ou JSON produits par EsLint. Par exemple, eslint.xml ou output/eslint.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 EsLint. 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 eslint 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" REPORT_FILE="eslint-report.json" 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 EsLint reports REPORT_DIR=$(mktemp -d -p /tmp) find . -name $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" : "eslint", "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.