Skip to content

IntelliJ

Mathieu Lavigne edited this page Feb 5, 2026 · 22 revisions

IDE Scripting API

Pour développer des plugins ou scripter certains inspections manuelles, on utilise des scripts Groovy qui ne sont pas documentés. Il existe un blog qui explique bien comment s'en sortir ici : https://ijnspector.wordpress.com/get-started/.

LivePlugin

Une alternative consiste à utiliser LivePlugin], qui facilite grandement le debug et l'expérimentation.

Pour découvrir la lib Intellij (PSI), on peut logger des éléments avec println et vérifier les logs de l'IDE (menu Help).

On peut également s'en servir pour créer des inspections scriptées (faire attention aux logs, pour détecter si elle plante l'analyse). Cf. Menu ajout de script > Kotlin examples > java-inspection. Exemple.

Exemples d'inspections scriptées

Méthode sans paramètre "authorization" :

!__context__.parameters.any { it.name.equalsIgnoreCase("authorization") }

Formule PostgreSQL de sélection d'un champ JSON sans conversion en booléen :

import com.intellij.psi.PsiLiteralExpression
import com.intellij.psi.PsiLiteralValue
import com.intellij.psi.PsiReferenceExpression
import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl

if (__context__ == null) return false;
if (__context__ instanceof PsiLiteralExpression) {
    final PsiLiteralExpression expr = (PsiLiteralExpression) __context__;
    final String value = expr.getValue();
    return value.contains("->>") && !value.endsWith("::boolean")
} else {
    return false;
}

Plus d'exemples : https://github.com/picimako/intellij-inspections.

Plus d'infos sur les inspections scriptées : https://ijnspector.wordpress.com/2019/05/21/script-filtering/.

Build IntelliJ vs Build Maven

IntelliJ ajoute par défaut l'option de compilation Java -parameters. Si on veut l'ajouter côté Maven, il faut l'ajouter dans le pom.xml comme indiqué ici : https://github.com/Bludwarf/CodeBank/wiki/Maven#options-de-compilation

Résolution de conflits

Lorsque des conflits apparaissent quand on rebase un fixup commit, voici comment IntelliJ identifie chaque commit dans sa fenêtre de résolution des conflits :

Commit nodes

Dans ce cas, on peut tester la baguette magique puis résoudre tous les conflits restants en utilisant le côté droit Already rebased commits à la place du côté gauche Rebasing commit puis en ajoutant les modifs réelles du côté gauche (on peut faire un diff entre Left et Base pour les retrouver).

Variables

Ne pas utiliser $ProjectFileDir$ mais plutôt $PROJECT_DIR$. La résolution de la 2e variable fonctionne plus souvent que la 1ère. Est-ce uniquement un problème de rafraichissement Maven (Reload All Projects dans la fenêtre Maven) ?

TU Angular

Modifier le Run Configuration pour utiliser le Karma package : node_modules\@angular\cli. Pas besoin de Configuration file.

  • Comment le définir dans les templates de Run Configuration ?

Database

Pictos

  • notNullable : notNullable
  • notNullable-indexed-pk : notNullable-indexed-pk
  • nullable : nullable
  • nullable-indexed-fk : nullable-indexed-fk

Librairies JavaScript

Pour l'instant la manière la plus simple semble de créer un fichier .d.ts dans lequel on importe d'autres fichiers. On doit alors declarer chaque élément importés. Les éléments sont disponibles implicitement dans les fichiers du même dossier.

Clone this wiki locally