IntelliJ

Cette section explique comment configurer les différentes propriétés de l’éditeur IntelliJ pour un developpement SAINet harmonisé et efficace.



Configuration Coding Style

L’objectif est de s’assurer que les imports soient conformes aux règles du checkstyle SAINet.

  • Sélectionnez File | Manage IDE Settings | Import Settings …
  • Sélectionnez l’archive ZIP settings.zip qui ce trouve dans le projet sainet (sous src/checkstyle/intellij/settings.zip)
  • Sélectionnez les paramètres à appliquer et cliquez sur OK.

Import dans intellij pour être conforme au checkstyle


Lancer les tests à partir de l'IDE

L’objectif ici est de pouvoir directement lancer les tests d’intégration depuis l’éditeur sans passer par des lignes de commande et des modifications de code

Pour cela, il faut passer les paramètres suivants lors du lancement des tests via JUnit :

  • sainet.run-tests.path : doit correspondre au répertoire des données de test (pour CompareUtils). Dans IntelliJ, il suffit d’utiliser la variable $ModuleFileDir$ (chemin vers le répertoire du module de test où se trouve la classe).
  • sainet.test_server.dir : doit correspondre au paramètre --runtime lors du lancement du serveur (répertoire où est initialisé le runtime du serveur). Si le serveur est lancé dans le répertoire du projet comme décrit dans les recommandations, il suffit d’utiliser $ProjectFileDir$ (chemin absolu vers le répertoire du projet actuel) suivi du répertoire choisi pour le runtime, par exemple $ProjectFileDir$/.sai_runtime. Sinon, spécifiez directement le chemin complet vers le répertoire runtime.
Attention:

Dans le cadre de certains lancements de test, il peut arriver que l’initialisation des classes ne fonctionne pas. Il est alors nécessaire de rajouter un paramètre dans le lancement lors de l’obtention des stacks de la forme suivante.

java.lang.ExceptionInInitializerError
    at org.mockito.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:167)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @18e8568
java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)

Pour corriger cela, ajouter l’option --add-opens java.base/java.lang=ALL-UNNAMED dans les paramètres de lancement du test.

Mise en place des paramètres de lancement JUnit :

  • Accéder aux options de lancement Run > Edit Configurations... > Templates > JUnit > Edit configuration templates
  • Ajouter les parmètres -Dsainet.run-tests.path et -Dsainet.test_server.dir.
  • (Optionnel) il est aussi possible d’ajouter cette option pour régénérer les outputs (et donc accepter tous les changements) -Dsainet.test.output.generation=true

Configuration des tests

Exemple de paramètre de lancement complet :

-ea -Dsainet.run-tests.path=$ModuleFileDir$ -Dsainet.test_server.dir=$ProjectFileDir$/.sai_runtime -Dsainet.test.output.generation=true --add-opens java.base/java.lang=ALL-UNNAMED

Désormais, il est possible d’executer un test sur le serveur mentionné sans avoir recours au Quick-Run. A droite du test à lancer faire Run (ou debug).

Lancement des tests


Définir le Checkstyle

L’objectif ici est de pouvoir directement contrôler le style de la saisie sans devoir attendre les pipelines de test

  1. Accéder à la gestion des plugins File > Settings … > Plugins
  2. Rechercher Checkstyle dans Marketplace et installer.

Installation du checkstyle

Désormais, il est possible de gérer le checkstyle par un nouvel onglet disponible en bas de l’écran.

Nouvel onglet

La configuration est disponible directement dans les paramètres de l’application

  1. Accéder à la configuration du checkstyle File > Settings … > Tools > Checkstyle

a. Ajouter le fichier build-tools-<version>.jar depuis le repository maven (<home>/.m2/repository/ch/saierp/build-tools/<version>/build-tools-<version>.jar) dans les third-party checks

b. Ajouter le fichier checkstlye (<sainet>/src/checkstyle/checkstyle.xml)

Configuration

  1. Le lancement du checkstyle depuis maven s’effectue depuis l’onglet maven

Maven

Afin de contrôler directement le paramétrage xml il est nécessaire de relier le checkstyle à l’outil de vérification du paramétrage dans le fichier checkstyle-idea.xml

XML

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CheckStyle-IDEA" serialisationVersion="2">
    <checkstyleVersion>8.45.1</checkstyleVersion>
    <scanScope>JavaOnly</scanScope>
    <copyLibs>true</copyLibs>
    <option name="thirdPartyClasspath">
      <option value="C:\Users\<username>\.m2\repository\ch\saierp\build-tools\1.10\build-tools-1.10.jar" />
    </option>
    <option name="activeLocationIds" />
    <option name="locations">
      <list>
        <ConfigurationLocation id="caac9be5-555c-4126-a6a5-b0b19c76297c" type="LOCAL_FILE" scope="All" description="sai-check">$PROJECT_DIR$/src/checkstyle/checkstyle.xml</ConfigurationLocation>
      </list>
    </option>
  </component>
</project>
Attention:

Bien penser à remplacer le chemin d’accès par son propre dossier .m2!


Pousser des fichiers à chaud

L’objectif ici est de pouvoir directement envoyer des fichiers java sur le serveur local sans passer par l’Adminclient

  1. Prérequis : Maven doit être installé (et il faut connaitre le chemin vers la commande).

  2. Configurer le nouvel outil externe introduit : Naviguer dans les paramètres de l’éditeur File > Settings > Tools > External Tools > Add

Nouvel outil

  • 1] Renseigner le chemin vers la command mvn
  • 2] Mettre les arguments qui permet de lancer une commande dans la console d’administration. -q exec:java -pl external/SNV4SRV-server -Dexec.args="--noconsole --admin-socket-port 9019 -c 'reload-dbcode $FilePath$'"
    • 3] Dans working dir mettre $ProjectFileDir$ pour utiliser le repertoire de base du projet.
Attention:

le paramètre --admin-socket-port 9019 doit correspondre au port la console SAINet, par défaut 9019

  1. Rajouter un raccourci clavier et faire le lien avec le port pour l’envoi

Raccourci clavier


Ignorer des fichier de maven lors du build

L’objectif ici est d’écarter des fichiers du build de maven pour éviter d’être pollué par leurs changements incessants.

  1. Naviguer dans les paramètres de maven Settings -> Build, Execution, Deployment -> Build Tools -> Maven -> Ignore Files
  2. Ajouter le fichier flatten-pom.xml par exemple

Définir le terminal par défaut

L’objectif ici est de définir le terminal par défaut qu’utilisera l’éditeur lors de l’ouverture de la console

  1. Naviguer dans les paramètres de l’éditeur Setting > Tools > Terminal
  2. Choisir le Shell path pointant vers le terminal choisi (ex: git-bash.exe)

Gestion des conflits avec maven

Des fois, maven pose des soucis dans sa gestion des index partagés entre plusieurs projets. Il est possible de désactiver ces index.

  1. Naviguer dans les paramètres de l’éditeur Setting > Tools > Shared indexes
  2. Désactiver les pré-builds

Désactivation du partage


Analyse automatique de la javadoc

L’éditeur est très sensible à la défition de la javadoc et émet des erreurs lorsqu’il trouve des incohérences. Il est possible de ne pas les considerer comme des erreurs.

  1. Naviguer dans les paramètres de l’éditeur Setting > Editor > Inspections

Gestion de la javadoc


Eviter le formattage lors du collage

L’éditeur essaye en continu d’optimiser le formattage. Il est possible de lui interdire le formattage lors du copier-coller de texte.

  1. Naviguer dans les paramètres de l’éditeur Setting > Editor > General > Smart Keys
  2. Passer à None les comportements du collage

Désactivage du formatting