DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


fr:devel:intellij_idea

:!: à relire pour corrections

IntelliJ Idea

IntelliJ Idea et son petit frère PHPStorm sont des IDE commerciaux qui offrent un excellent support de codage PHP. Idea prend en charge un large éventail de langages de programmation, tandis que PHPStorm est uniquement destiné à PHP.

Le projet DokuWiki a été doté d'une licence d'utilisation gratuite et illimitée pour Idea par JetBrains. Les contributeurs réguliers de DokuWiki peuvent demander la clé de licence gratuite en envoyant un simple courrier électronique à andi.

Configuration d'extensions

Après l'installation, vous devez vous assurer que vous avez au moins les extensions suivantes activées :

  • CSS Support
  • Git Integration
  • HTML Tools
  • JavaScript Support
  • PHP
  • PHPUnit code coverage

Les extensions peuvent être installées via FileSettings…Plugins. Les extensions manquantes peuvent être trouvés sur le Marketplace. Le gestionnaire d'extensions vous demandera d'installer les dépendances nécessaires.

Remarque : toutes les extensions ci-dessus peuvent ne pas être disponibles (ou nécessaires) dans PHPStorm.

Créer un projet Idea pour DokuWiki

Faire un git checkout de DokuWiki. Puis, démarrez Idea et sélectionnez FileNew Project…. Dans la boite de dialogue sélectionnez Create project from scratch. Dans la boîte de dialogue finale, naviguez jusqu'au checkout et sélectionnez “Module Web”. Cliquez sur “Terminer” et vous avez fini.

New Project Dialog

Configurer Idea

Pour configurer Idea au style de programmation de DokuWiki, téléchargez le fichier suivant et placez le dans votre répertoire .IntelliJIdea13/config/codestyles(Win/*nix) ~/Library/Preferences/IntelliJIdea13/codestyles(OSX) :

~/.IntelliJIdea13/config/codestyles/DokuWiki.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
Code shell pour mettre à jour:
 
wget -O dokuwiki-codestyle.xml \
 https://www.dokuwiki.org/_export/code/devel:intellij_idea?codeblock=0
 
-->
<code_scheme name="DokuWiki">
  <option name="LINE_SEPARATOR" value="&#10;" />
  <JSCodeStyleSettings>
    <option name="ALIGN_OBJECT_PROPERTIES" value="1" />
  </JSCodeStyleSettings>
  <PHPCodeStyleSettings>
    <option name="ALIGN_KEY_VALUE_PAIRS" value="true" />
    <option name="ALIGN_PHPDOC_PARAM_NAMES" value="true" />
    <option name="ALIGN_PHPDOC_COMMENTS" value="true" />
    <option name="ALIGN_ASSIGNMENTS" value="true" />
    <option name="LOWER_CASE_BOOLEAN_CONST" value="true" />
    <option name="LOWER_CASE_NULL_CONST" value="true" />
  </PHPCodeStyleSettings>
  <XML>
    <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
  </XML>
  <codeStyleSettings language="JavaScript">
    <option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
  </codeStyleSettings>
  <codeStyleSettings language="LESS">
    <indentOptions>
      <option name="INDENT_SIZE" value="4" />
    </indentOptions>
  </codeStyleSettings>
  <codeStyleSettings language="PHP">
    <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
    <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
    <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" />
    <option name="CLASS_BRACE_STYLE" value="1" />
    <option name="METHOD_BRACE_STYLE" value="1" />
    <option name="ALIGN_MULTILINE_CHAINED_METHODS" value="true" />
    <option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
    <option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
    <option name="ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION" value="true" />
    <option name="SPACE_AFTER_TYPE_CAST" value="true" />
    <option name="SPACE_BEFORE_IF_PARENTHESES" value="false" />
    <option name="SPACE_BEFORE_WHILE_PARENTHESES" value="false" />
    <option name="SPACE_BEFORE_FOR_PARENTHESES" value="false" />
    <option name="SPACE_BEFORE_CATCH_PARENTHESES" value="false" />
    <option name="SPACE_BEFORE_SWITCH_PARENTHESES" value="false" />
    <option name="CALL_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
    <option name="CALL_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
    <option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="true" />
    <option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" />
  </codeStyleSettings>
  <codeStyleSettings language="SCSS">
    <indentOptions>
      <option name="INDENT_SIZE" value="4" />
      <option name="CONTINUATION_INDENT_SIZE" value="4" />
    </indentOptions>
  </codeStyleSettings>
</code_scheme>

Commande pour télécharger depuis ce wiki (depuis le répertoire IntelliJIdea/config):

wget https://www.dokuwiki.org/_export/code/devel:intellij_idea?codeblock=0 \
  -O codestyles/dokuwiki-codestyle.xml

Puis allez à FileSettings…EditorCode Style et sélectionnez DokuWiki dans le menu déroulant. (Peut-être devez-vous d'abord redémarrer avant que le programme ne soit présenté)

En outre, vous pouvez configurer les inspections suivantes FileSettings…EditorInspections:

  • PHP
    • General
      • Unresolved include : false (Idea isn't able to resolve our includes even though they are completely correct)
    • PHPDoc
      • Missing PHPDoc comment: true
  • Spelling: false

Integration de tests unitaires

Nos tests unitaires peuvent être intégrés directement dans Idea. Pour cela allez à RunEdit Configurations….

Définissez d'abord la configuration par défaut, puis vous n'aurez plus à le faire dans les étapes suivantes

Sous Templates trouvez PHPUnit et cochez Use alternative configuration file, remplissez <path to>/_test/phpunit.xml, laissez tout en l'état et appuyez sur Appliquer.

Cliquer sur le bouton + (par exemple le bouton gauche en haut avec au survol 'Add New Configuration') et choisissez PHPUnit. Puis remplissez dans ses valeurs Remplissez ensuite ces valeurs :

  • Name: All Tests
  • Test Runner
    • Test Scope: Defined in the configuration file
    • Use alternative configuration file: <path to>/_test/phpunit.xml
  • Command Line
    • Interpreter options: -d output_buffering=On

Répétez pour ajouter une autre configuration avec ces valeurs :

  • Name: Fast Tests
  • Test Runner
    • Test Scope: Defined in the configuration file
    • Use alternative configuration file: <path to>/_test/phpunit.xml
    • Test Runner options: --exclude-group slow,internet
  • Command Line
    • Interpreter options: -d output_buffering=On

Run Configuration

Vous pouvez maintenant exécuter tous ou seulement les tests rapides directement à partir du menu Exécuter ou de la liste déroulante de la barre d'outils. Remarque : l' option -d output_buffering=On est nécessaire jusqu'à que ce bogue soit corrigé.

Cas de test individuel/extension

Afin d'exécuter des cas de test individuels, vous devez ajouter quelques paramètres supplémentaires. Allez dans FileSettings…. → Languages & FrameworksPHPTest Frameworks, Utilisez le bouton + pour ajouter une configuration. Ici, vous devez activer Default configuration file et spécifier le “<chemin vers>/_test/phpunit.xml”.

Ensuite, vous devez marquer soit sous Directories dans les paramètres du projet, soit directement dans l'arborescence du projet le _test/tests via l'option du menu contextuel Mark directory AsTest Source Root et faire de même pour tous les répertoires de test des extensions. Ensuite, vous pouvez exécuter ou déboguer des cas de test individuels en choisissant Run ou Debug dans le menu contextuel du fichier de l'arborescence du projet.

Auto completion PHPUnit

Pour bénéficier de toutes les faveurs d'Idea, vous devez ajouter le source PHPUnit à votre projet. Pour l'ajouter, vous devez le faire ainsi :

  1. Ouvrir votre projet
  2. Cliquer sur File → Project Structure
  3. Sélectionner “Libraries” tab
  4. Cliquer sur le “+” → Java
  5. Sélectionner votre répertoire PHPUnit (ex. /usr/share/pear/PHPUnit, /usr/share/php/PHPUnit, etc)
  6. Dans la boite de dialogue suivante choisissez “Sources”
  7. Cliquer sur “Ok”
  8. Cliquer sur “Ok”
  9. et voilà !

Idea va maintenant indexer la source PHPUnit et peut fournir l'auto-complétion à l'intérieur des tests unitaires.

Trucs et astuces

Presser CTRL-ALT-L pour reformater le fichier actuel en fonction des paramètres de style de code. Veillez à vérifier que ces nettoyages sont effectués séparément des modifications de logique.

Si Idea ne parvient pas à comprendre le type de classe d'une variable (globale), annotez la avec une indication de type :

function foo(){
    /* @var Input $INPUT */
    global $INPUT;
 
    // thanks to the type hint Idea now knows this is valid:
    echo $INPUT->str('foo');
}

Presser ALT-Enter pour auto-réparer les problèmes détectés par Idea. Fonctionne à merveille pour insérer les blocs de doc par exemple.

Crédits

  • traduction : — digitalin 2020-08-16 09:41
fr/devel/intellij_idea.txt · Dernière modification : 2020-08-16 10:31 de Digitalin

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki